我的NOIP被坑史

来源:互联网 发布:无网络远程攝像头 编辑:程序博客网 时间:2024/04/30 18:29

被坑之路永无止境

一、RE

(1)
int z=s[a][b]-s[j-1][b]-s[a][k-1]+s[j-1][k-1]
if(a>0&&b>0&&a<=R&&b<=C&&z==0){
    sum++;
}
因为有可能z的值是一个出界的数组,所以z可能是不存在的,则不能调用,会RE
这个也不行//if(a>0&&b>0&&a<=R&&b<=C&&s[a][b]-s[j-1][b]-s[a][k-1]+s[j-1][k-1]==0)  
改为下面的样子


 if(a>0&&b>0&&a<=R&&b<=C){
    if(s[a][b]-s[j-1][b]-s[a][k-1]+s[j-1][k-1]==0)
    sum++;
}
(2)
尽管bool数组开【30000】【30000】在本机上是并没有问题的,然而交上去会RE的,谨慎开数组!
二、优化速度
(1)
背包:能用if判断,就用,降复杂度
从v[i]到max :每种物品个数不重复
从max到v[i] :每种物品只有一个
(2)
用scanf要加&
printf
在20万以上起作用,100万cincout报废
(3)
把“!”改成“==0”,“ ”改成“!=0”,多过25分,玄学
(4)
把a[x][y]改成i,(for循环),多15分
(5)
搜索时谨记要揣摩出题人想法,倒着搜比较好
三、玄学 
勾股数
给定a
n=a/2;
x=n*n-1;
y=x+2;


n=(a-1)/2;
x=2*n+2*n*n;
y=x+1;


四、细节
(1)
复制子函数时注意参数的意义
(2)
阮文哲:
if(n==1) cout<<lx<<" "<<ly<<endl;
由于我的循环从2起 所以n==1 就挂了 
(3)
  软了个猪头(李嘉林):
能开int数组别开long long数组,会MLE

(4)

复制子函数时注意参数的意义

(5)

#define maxn 100+5
int t[10001],k[10001],c[10001],f[maxn][maxn],f1[maxn];

赋值不能赋成这个t[maxn*100]样子!!! 

(6)

左移右移(<<,>>)的优先级不如加减高,所以能加()就尽量加吧

(7)

注意数据是不是按顺序输入的,不知道就加个sort反正不要钱

五、TLE

(1)getchar()读字符,可能是有换行符的关系,全T了,不如cin

原创粉丝点击