T1:
题面:
题解:
用string记录名字,再输入求救字符串,每看到s就判断前两是否为so,如果是就ans++,最后判断最大输出。
分数:
估分:100
实际:100
T2:
题面:
题解:
普通的dfs,就像细胞那样,值得一提的是我的判断:我用了一个数组把每个星座的大小记录起来,然后遍历一遍,判重输出答案。
分数:
估分:100
实际:50
失分:
就是错在我的那个判断,我的判断方法会使最后一种星系没被判断到,多判断一个就ok了。
T3:
题面:
题解:
暴力50%(不过我50不是暴力,而是数据开小了):
把它当成一个无脑 的暴力01背包问题,把
k
i
k_i
ki个
a
i
a_i
ai当成单纯的
k
i
k_i
ki个
a
i
a_i
ai,时间复杂度为O(
k
i
k_i
ki*
a
i
a_i
ai*
t
i
t_i
ti)。
二进制优化背包100%:
如果想让 k i k_i ki个 a i a_i ai不是单纯的 k i k_i ki个 a i a_i ai,那就需要二进制优化。
首先,我们知道20+21+……2n=2n+1-1,且用20,21……2n,可以组成2n+1以下的所有整数,且绝不超2n+1。
然后,根据上面的的定理,我们就能得到2n+1-1的优化,但别的呢???
我们再放一个
k
i
k_i
ki-(2n+1-1),再配上前面的就可以组成别的数了。
放一个二进制优化的代码:
int q=read(),p=read(),k=1;
while(k<=p){
w[++w[0]]=k*q;
p-=k;
k*=2;
}
if(p!=0)
w[++w[0]]=p*q;
分数:
估分:100
实际:50
失分:
数据开小了
总结:
这次比赛本来可以AK的,但实在是太不小心了,二,三题都错在一点细节,数据范围这个下次一定注意,如果再犯错了,就发40次古诗。
但这个像第二题一样的细节问题我也经常犯,我也有验算数据,但还是错,请问各位有没什么好的方法给我参考参考。