牛客算法周周练2
A
1 |
|
C
打个表出来,然后用lower_bound(返回第一个大于等于该元素的数)然后,计算个数,范围其实不大,注意查找得用二分,不然会TLE
代码:
1 |
|
B
dp题,首先有个抽屉原理,当元素个数>=3600时直接输出YES了。
01背包。。
啊,不会dp呀。
假如:
2000 1000 3000
一开始2000加入的时候,2000%3600=2000,便标记dp[2000]为1
下次加入1000的时候遍历dp数组一遍,会发现dp[1600]为1,便在这个基础上加上a[i]再对3600取模(这里因为只要1600被标记了故v中只加入了(1000+1600)%3600=1000),结果存储在v数组中,最后再用将v数组中存储的放入dp数组中(dp[1000]=1),在标记(1000%3600=2600)dp[2600]=1;
这样我们可以发现会大大缩小枚举范围,比如很多组合加起来%3600都为4,在下一次加入时候,我们只要计算一次便可以得出结果是多少。
1 |
|