因为只考了280所以心情不爽写出的总结反思

来源:互联网 发布:radon内核优化项目 编辑:程序博客网 时间:2024/05/01 22:34

   .......这次只考了280,心情非常不好的说。关于这次只考了280的原因,主要是这样的:前三道敲太快了,第四道卡的时间太长了,敲完第四道还不仔细看前三道,而且因为第四道改的程序太多了,本来有些简单的地方也被复杂化了,导致数据超时了4组,本来只会超时三组的.....心累.....因为自己想出来的数据测试死活不对,然后就改了好多,然后......就没有然后了。So,

    警告一:当你的程序有地方不对的时,可以改;但要记得先将你的原程序找个文本文档存下来。然后当你改对之后,记得将原程序和现在的对比,如果原程序有比现在的处理更简单的,一定要优化现在的程序。不然....你就等着超时的数据更多吧,除非你可以肯定一定不会超,但最好是改过来。

    而且到现在为止,我都没想通自己第一题为什么会错。评测成绩出来,我一直就很诧异为什么第一题只拿了70。明明我的思路是对的,而且代码和100的基本上也一样。但看完最简洁的,顿时心灵受伤了....就这样,又一个道理:

    警告二:理解题意后,即使发现这道题 very easy也照样不能放松。说不定,极端数据和特殊数据就会在这种时候坑掉你二三十分甚至更多。而且,代码能够简单就不要把它复杂化,前提在于简单的代码是复杂代码的精髓,没有少了哪一部分。如果你不能100%的保证,那就用原来复杂的吧,在确认能拿分的前提下,再考虑复杂度,否则方法是简单了,照样拿不到分。

    第三题也没想通为什么会错,但慢慢分析,得出的结论和警告二是差不多的,就不再敲出来了。还是那句话,能简单就不要复杂

    第四题是让我最心累的一题,直到现在,还是没有AC。因为数据太大,如果想要AC,用的是散离化的思想,因为数据太大了,二重循环也会超时,如果不想让超时,只能用散离化的想来做。AC的那段代码虽然用的是散离化,但理解起来却有些困难。我是按照自己的思路来敲的,可是才拿了40....无语...代码也贴出来了

#include<iostream>

#include<cstdio>

#include<algorithm>

using namespace std;

int yt[1000100]={},s[30000],f[30000];

int main()

{

freopen("t4.in","r",stdin);

freopen("t4.out","w",stdout);

int n,k,j=1;

cin>>n>>k;

for(int i=1;i<=k;i++)

cin>>s[i]>>f[i];

while(j<=n+1)

{

if(s[j]>f[j]) j++;

yt[s[j]]++;

s[j]++;

}

sort(yt+1,yt+1+n);

cout<<yt[(n+1)/2];

return 0;

}

     第四题的题简单来说,有n个盒子,k次操作,每次往编号从ab的盒子里放一块糖(盒子的编号是1N),再将糖的数量排序,输出中位数。

         其实关于第四题的总结和反思,就是警告一了,但还有要补充的。

    警告三:关于大数据的一些题,先不要想着一下子所有的数据都可以过,也就是不要想着可以一次AC,这是最不现实的。一点一点来,先保证小数据和特殊数据没问题。将这样的代码先复制到文本文档里之后,在修改。举个例子,如果原来用的是二重循环,但是如果想要全部AC的话,只能用一重循环。那么就可以加一些预处理,如果不行的话,可以重敲,但记得注意时间。当你改完过后,如果对你敲的代码没有信心,可以自己多编几组数据试试,前提在于自己不能算错。如果对了(前提在于记得要多试几组),那可以提这个;如果没对你又没时间改了,那你就提交原来的吧,能拿一点是一点,不要太贪心。太贪心结果就有可能是搬起石头砸自己的脚。

    警告四:当剩时间不多时,就像还剩10分钟左右时,如果你还没敲完,那可以选择放弃了,除非你有把握能在四五分钟内结束。只剩五六分钟了,不管你原来在干什么,都停下来,检查文件名,输入输出,以及和题上要求的一不一样,代码弄错了没。尤其记得,文件名每道题的都不同,千万不能弄错。否则小心零分哦。

    好了,就这样了。

0 0