2016.12.10【初中部 NOIP提高C组】模拟赛

T1:通过暴力找规律发现如果输入的数是2的k次方,就输出YES,否则输出NO。


T2:把所有数从小到大排序,然后把相邻两个数的差存到一个数组里,再把这个数组从小到大排序,答案就是这个数组的前k个数的和。


T3:一开始用暴力,发现会超时。然后在暴力的基础上想到dp。

先求出n的因数,然后把所有的因数按从小到大存到一个数组里,设这个数组为a。

设f[i][j]表示前i个数选了j个数,第i个数必选的方案数,然后我们用一个k从i-1往前搜,设第k个数选,而从k+1到i-1都不选,在f[k][j-1]>0的前提下,f[i][j]=f[i][j]+f[k][j-1],最后的ans就是在j最大的前提下的j-1,f[t][j](t表示因数的个数)。初始值为f[1][1]=1。


T4:zzx教了我一个水法。

设第一个字符串为a串,第二个字符串为b串。

1、把b串倒过来。

2、找出a串中连续两个字符与b串中连续两个字符相同的个数,每找到一个ans就乘2。

你可能感兴趣的:(【初中部,NOIP提高组,】模拟赛C)