2017杭电ACM集训队单人排位赛 - 6

2017杭电ACM集训队单人排位赛 - 6

排名 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>ss.louwr_bound()s.erase()

vectorerase()是线性的,会TLE

对b和a从小到排序,枚举ai时,将比ai小的bj都将cj-bj丢入优先队列中,然后每次从优先队列中取出c-b最大的来。

posted @ 2017-07-16 21:52  洛丶航  阅读(238)  评论(0编辑  收藏  举报