排名 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 |
---|---|---|---|---|---|---|---|---|---|---|---|
59 | 1 | X | X | 1 | 1 | X | X | 0 | 1 | X | X |
1003 bx回文
dp[i]表示到串长度为i时的最大愉悦值
枚举以i为回文串中心,串为奇数时候,为中心,偶数时,为偏左部分的中心点.
dp[i+k] = max(dp[i-k]+a[2*k+1]);
dp[i+k+1] = max(dp[i-k]+a[2*k]);
多组样例注意初始化,这题有一个坑点,串长度不是n。
1007 bx值
思路反过来考虑,求某个数字的贡献,则求出总的情况数-某个数字贡献的情况。
如: 3 1 4 2
数字2不贡献的情况就是包含序列 1 4 2
的所有子串。
1008 对抗女巫的魔法碎片
对c-b从小到大排序,用贪心的方法二分找到恰好大于b的a。存下所有找到的b-c。
然后从大到小使用a。
推荐用mulitset<int>s
的s.louwr_bound()
和s.erase()
用vector
的erase()
是线性的,会TLE
对b和a从小到排序,枚举ai时,将比ai小的bj都将cj-bj丢入优先队列中,然后每次从优先队列中取出c-b最大的来。