第二场:
线段树:这题自己弄了单点更新区间查询还有单点查询区间更新,,都超时了,,题解说还要建立一个每一个节点的单位价格,,。(还是自己做题少,还有,自己敲了之后,知道要注意取模的时候应该是(ret+xxxx)%mod 如果里面有* 还应该(sum[rt]+1LL*val[rt]*c%mod)%mod; 要不然中间会爆然后返回wa
第二题的判断小数循环的。。。我下来居然不会做, 因为有小数,总是在浮点的时候错。。别人的代码都是把他变为int来看的。。感觉好强。(自己做题太少了)
树的dfs的题两种代码,一种是看数学的问题,dp[i][2]=dp[i][1]-dp[i][0];
第二种是jh的乱搞:
void get1(int now,int fr){
int ret = 0;
for(int i = toedge[now] ; i != 0 ; i = nextedge[i]){
if(ededge[i] != fr){
ret++;
get1(ededge[i],now);
}
}
f1[now] = ret;
}
void get2(int now,int fr){
int ret = 0;
for(int i = toedge[now] ; i != 0 ; i = nextedge[i]){
if(ededge[i] != fr){
ret+=f1[ededge[i]];
get2(ededge[i],now);
}
}
f2[now] = ret;
}
第三场:
D:对于那道求树的最长路径的题目,我又因为没有提问所以没想到最长路径不一定是要经过根的,结果一直找不出错误。GG了
B:自己从S到T匹配。。因为弄了几次,最后想到用新得到的子串判断是否在T里面作为剪枝的方法的时候已经很烦了,觉得自己做不出来了,GG了
一道大水题(开关灯的):自己的代码太丑了。。又慢。。。
别人的代码:(对于这种每隔几位变化的。。
int j=i;j<=len;j+=i//以i为循环
light[j] ^= 1;//开关类问题,状态压缩类为题用的方式,就不用时候判断为0的时候怎样,判断为1的时候怎样
state[k] = !state[k];//这种是bool state[1010];直接取反
for(int i = 0; i < len; i++) {
if(s[i] == 'Y') light[i + 1] = 1;
else light[i + 1] = 0;
}//很朴素的对于烦人的数组时从0开始读转换的方式。
H:自己应该是想不出来的。。还没问人。。
接下来应该是做紫书,还有白书,等题目的时候了
1万+

被折叠的 条评论
为什么被折叠?



