机房测试8.17
高斯消元
题目& 数据范围
样例
num.1
in
4 5 2
1 2 3 1
out
12
num.2
in
1 9 2
1
out
1
num.3
in
3 10 2
1 2 1
out
0
解题法
就是模拟一波又一波。
第一波处理一个循环节内的消消乐情况。
模拟栈的结构,每读到一个数,将其推入栈中,判断是否满足消去条件,
满足就栈指针减k。
第二波处理头尾相消的情况。
两个指针,从两边往里走,能消则消。
然后就是每个循环剩余长度*(m-1)+仅去掉同一循环的剩余数的个数。
糖果镇
当m<=2时,枚举分界点,预处理前缀和就好了。
对于另外20%,直接dp[i][j]表示到点i,j的最优答案。
对于100%,我们可以枚举第二次下行的分界点,然后我们可以统计出第一次下行的影响,就是第一行到x的前缀和减去第二行到x-1的前缀和,第二行就是到枚举端点的前缀和,这样在已知第二次下行的分界点时,第二行和第三行的贡献是已知的,我们只要找到模意义下第一行的最优贡献就好了,这个就可以用set维护,找前驱。
游戏
通过题目可以发现,我们要求的就是在使用最小的点权的情况下选中所有边,每条边都可以被他的两个端点选中,且出入点权可能不同,于是就可以发现这是一个最小点权覆盖。
建边:
1> 先建立虚拟源S和汇T,把每个点拆成两个,ia,ib。
2> 从S向ia连一条流量为wi-的边,从ib向T连一条流量为wi+的边。
3> 原图中的边从ua向vb连一条流量无穷大的边。
4> 然后跑最大流即可。
总结
今天因为A-了第一题,所以Rank很高,但是我网络流竟然写错了,讲过的诶。
终于要放假了。
今晚八点,准时开车!