考试:
(感觉自己考了假试,啥也不会))
t1一看推了个错误结论,但是找不到反例,于是50(第一遍交加的有调试信息,竟然有50,于是发现-1有50分,嘻嘻嘻),加了错误结论后73分,8点47走t2,打了个暴力,结果45,嗯嗯嗯???一看数位,计数跑不了,写了一写,发现果然高估了自己,按照我的dp状态,有一个非常重要的平移无法被计算,于是走了,又回去看t1,仍然找不到反例,天要亡吾,看了一眼t3,算了,走吧,看着暴力都要命,看了看t4,t5感觉是一类·的题·,而且好像见过,但是我还没A呢!!!看看t5像网络流,尝试了一下失败了,太要命了,t4 5分的暴力还tle,t5跑了个暴力就走了,回来看t4,发现没加freopen,加了就不tle了???于是想t1,t3之间徘徊,还是写了t3,但是非常头疼,于是写了1个小时多的暴力快结束了也没写出来。
总结:
找到结论管他对不对,先交一发再说,暴力打的快一点
题解:
t1:
AGC034E
经典模型(话说以前见过,但是一直陷在错误结论里出不来,有点印象但是没有向下想)
有若干个点被分成了若干个集合,
每次要找两个在不同集合中的点匹配然后消掉
当sum−max≥max,如果总共有偶数个点可以消完否则可以剩下恰好1个,消掉了sum/2对(递归配对)
否则还剩下max-(sum-max)个来自最大集合的点,消去了sum − max对
升阶版:
清华集训2017榕树之心
t2:
把贡献转化一下
f[i][j][0/1]表示放了 i 个数,有恰好 j 位大于等于 d,是否压上界。
转移一下就行了
t3:
子序列自动机
t4:
有点复杂,就不写了
注意细节
t5:
显然在最优决策中存在一种情况 对于每个p,p一定是c中的某个值
那么把c离散化,考虑区间 DP
考虑 f [ i ][ j ][ k ] = max { f ( i , pos−1 , y ) + f ( pos + 1 , j , z ) + cnt ( pos ) ∗ c[k] }
y>=k,z>=k,cnt(x)是[a,b]在[i,j]里,且跨过pos的顾客数量
y,z后缀和优化一下,时间复杂度 O ( n ^ 3 * m )