《杀蚂蚁》有感

昨天下午给别人调了一会儿杀蚂蚁(炸精度了),于是乎自己心血来潮也想写写这道神题。

写代码没费多久,主要都是调代码。调了三节课,时间这么短的原因是因为我是对着标程调的(直接把下午调过了的那份代码输出调试信息然后两边手动fc……)。感觉浪费了这么一道神题。

总的来说,杀蚂蚁技术含量不高,唯一有点技术含量的就是判断线段与圆相交(计算几何)。其他的,就是个大模拟。不过细节很多,而且很多都是很难注意到的。

判断线段与圆相交的时候我用的是特殊方法(只适用于本题)。

因为蚂蚁都在整点上,而直径都是1,因此只要看那些离炮塔距离更近的蚂蚁即可。又因为是线段而不是直线,所以只有和Target蚂蚁在炮塔的同一侧的蚂蚁才会被打到,因此我就用了点积判同侧,最后再用叉积算点到直线距离。这是特殊方法,对于一般情况还是不适用的。

这题细节真心很多,而且很多都让人猝不及防。比如:

1. 所有炮塔同时开炮,所以蚂蚁被打到负血之后还可以被打,蚂蚁的死亡必须在炮塔攻击之后统一进行。

2. 小心精度问题,选择最近的蚂蚁和线段与圆相交可能炸精度(虽然对于本题来说蚂蚁都在整点上线段与圆相交不太可能炸精度),我调别人的代码调了一个多小时就是因为前者炸精度了。垃圾O2优化。

3. 蚂蚁的移动是有先后的,先动的蚂蚁可能会挡住后动的蚂蚁。

4. 扛蛋糕不一定是在走了一步之后,有那种扛蛋糕的蚂蚁死了然后原地不动的蚂蚁扛上了蛋糕的事情(我就被这玩意儿坑了)。

5. 线段与圆相交要小心写,不要写错。

6. 蚂蚁的移动要小心,真的很麻烦。

总之,虽然说是练了练代码能力,但是感觉还没有二逼平衡树、Mokia价值高(Mokia一开始打死不过,后来重写了才A的)。都怪我对着标程调,罪过罪过。

最后贴个代码:

16.10.16 Sun.

时间: 2024-08-25 20:37:10

《杀蚂蚁》有感的相关文章

看《罗辑思维》之“怎样成为一个高手”有感

看了<罗辑思维>之"怎样成为一个高手"这期视频后,我有以下认知: 一:刻意学习. 二:逃离舒适区,进入学习区. 三:越高级越有能耐的人,越忙越没空. 也就是说想要成为一个领域的高手,必须要有吃苦的精神,脱离身体舒适区,在能获得及时反馈的学习环境里,打磨概念.分解动作.刻意练习,持续的做你不会做的事情.把大的知识体系拆成一个个小模块,针对性的重复练习.然后把新知识和自己的知识体系对接,形成关联后存入自己的信息库.

观”怎样成为一个高手“有感

通过听罗胖的逻辑思维讲"怎样成为一个高手",我将自己所听到最重要的内容写下,如下: 1.刻意学习.分解学习过程到每一部分,例如就是一栋楼,分解到每一块砖.然后刻意的去反复训练,重复的训练. 2.不怕累,不怕苦.脱离舒适区,进入学习区.努力学习. 3.人类的认知也是分层次的,按幂律分布,认知少的人,生活清闲,而高级有能耐的的人,却越忙越累. 罗胖提到,学习的本质就是不让自己处在自己的舒适区,而是去往非舒适区,让自己不停地在痛苦中挣扎进步. 也许习惯躺在舒服区是人的本性,我们都想舒舒服服地

观逻辑思维《怎样成为一个高手》有感

在老师的推荐和要求下,今天我看了逻辑思维<怎样成为一个高手>,开头先讲了勤奋,练习两个关键点.他先提出了古语中的"学海无涯苦作舟"和<异类>中的"一万小时练习"指出了想要有所成就就要勤奋和不停的练习,但是他又提出了这些事农耕名族的结论,现在看来很多都不符合现实社会了,有很大的缺陷.我们不仅要勤奋而且要学会思考. 练习是基础,而且我们不仅要不停的练而且我们要做到刻意的练习.进行即使反馈,能够使我们在学习中遇到的问题能够有更好的解决. 学会记笔记

逻辑思维《怎样成为一个高手》

视频中开头讲到怎样成为一个高手,答案很简单,那就是刻意练习.讲到这里我的脑海中想起了一句谚语:熟读百变其义自见.随后我才知道他讲的刻意练习不是 这个意思.真正的练习,不是一遍一遍的做着,而是把知识体系拆碎.分开有针对性的一个一个的重复的练习 .刻意就是持续做自己不会做的事,去挑战不可能,如果一直做自己会的东西就不可能成为一个高手,要么怎么会说学习不是一件舒服的事情.我们要不断地积累知识,学习概念,概念是知识的基础.笔记我平时也会写,但写完之后总是不会去看,也没什么太大的作用.伟大的思想只有付诸行

罗辑思维:怎样成为一个高手183 随笔

怎样成为一个高手我觉得 可以分为两部分 其一 针对性的重复训练(练习不是重复性练整个的大部分把所有东西都练习,而是要有针对性的,把要做的想象成一座大厦,而针对性的训练是一块块的砖头,得把他们拆解开来,练习不是掌握住一大块就行了,而是掌握住每一小块,小块组成了大块,就和细节决定成败一个道理,细节要先处理好.光练习还不行,关键是要有成效,不然毫无意义,那么怎样才能有成效呢?那就是及时反馈,做的对不对第一时间就要知道这样练习是不是对的,这就需要一个有及时反馈的地方从而督促你,帮你改进) 其二 持续做你

初入&#39;C&#39;,以做一个例题有感。

题目:写一个函数返回参数二进制中 1 的个数 方法1: 我自己写的,运用'%'和'/',感觉挺简单的. int count_one_bit(int num) { unsigned int count=0; while(num) { if(num%2==1) count++; num=num/2; } return count; } int main() { int n = 0; int count = 0; scanf("%d", &n); count = count_one_

观《怎样成为一个高手》后感

看完< 怎样成为一个高手>的体会: 成为一个高手就是" 刻意练习" 1.学会"套路,有针对性的重复练习,从概念入手,将知识形成一个一个的罐头( 知识点)然后练习,从练习中形成自己的学习套路. 2.针对性重复练习--练习的本质,学习要有钻研的傻劲,要持续做你不会做的事打破舒适感,学习本身不是轻松快捷舒适的事情. 3.学习要有反馈,要有一个交互,能够有良好的学习环境和方法. 4.注重细节,将一些零碎的东西连接起来,细节决定成败,态度决定人生.

转: 罗辑思维:怎么样成为一个高手 文字版

感谢各位来到<罗辑思维>捧场 上一期节目我们隆重地给大家推荐了一个 付费的订阅产品 在我们罗辑思维开发的 得到APP里面 这个产品叫 精英日课 那主持它的是万维刚老师 因为我长期是他的读者和粉丝 所以我心知肚明 他出手开发的这个知识服务产品 品质有多高 所以我在美国专门跑了一趟 敦请他为我们的用户开发这个产品 所以上一期节目其实就是这个产品的广告 相信你也听出来了 特别不好意思 本期节目仍然是这个产品的广告 你看本期节目的题目 叫怎样才能成为一个高手 说实话 这期节目的策划案早就成型了 但是它

怎么样成为一个高手?

今天听完<罗辑思维>,感觉收益颇丰.如果成为一个高手呢? 1.练习 刻意练习,基本功的练习.足球比赛不能代替基本功的训练,不能以赛代练. 2.套路 学会高手的套路,比如围棋通过打古谱来学习套路. 3.拆分 将一个完整的知识体系大厦拆分成一个一个小的模块体系,然后用“练习”和“重复”来熟练高手的套路 4.重复 反复的重复,基本功练习的重复,套路的重复. 5.本质 思考问题的本质.为什么这样,为什么要这样,不这样会怎样? 什么是刻意练习? 持续做你不会做的事.不停在脱离舒适区.是向高难度.未知的知

《怎么样成为一个高手》观后感

高手善于拿前人总结出来的经验为自己所用,想要成为一个高手需要我们有针对性的对自己不会做的事进行刻意的练习,想学习没有舒服的事,因此需要我们反复做自己不会的事情,脱离舒适的环境进入学习环境,学习中做好及时反馈,选择适合自己的记忆方法,养成做笔记的习惯并使之形成知识库,提升自己的认知.