2017-Sp177-team2
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
[[Image(1.png,500px)]]
== 流水账 ==
出门各自看题,感觉A是个用力单纯型,思考了一会儿sub发现这个东西可以转化成经典的x[i]+y[i]>=k的形式,然后再求Σ的最优解,然后就是经典KM操作了,cjb上机'''A1y63'''。之后yzc开始上机写C,sub推式子给cjb搞J,然后cjb tle了,改了改'''J2y133'''。yzc Cwa了,很自闭,cjb上机写L,'''L1y153''',之后yzc发现C的问题,重写了,然后不停自闭,终于'''C7y223'''。cjb和sub开出了G,sub和cjb先后上机'''G1y264'''。cjb和yzc讨论了I,sub加入讨论后很快会做了,'''I1y292'''。
== 总结 ==
=== chenjb ===
码量有点大,这个D到底怎么搞啊。。。
=== oipotato ===
=== subconscious ===
== 题解 ==
* A:式子可以变成每行的逐位差数组完全相同,然后推得一定存在x[i],y[i],ans[i][j]=x[i]+y[j],又有ans[i][j]>=a[i][j],且求Σans[i][j]最小,符合KM算法,直接把原图当成邻接矩阵跑一次,顶标即为所求的x[i],y[i]。
* B:
* C:用差分约束跑出每个点最多向下移动多远。
* D:
* E:
* F:
* G:显然行列无关,压成一维。从左往右每次取尽可能短的折叠,途中记录目前需要的最右端的位置,倒过来再做一次,可以发现用树状数组sort一下插入统计即可。
* H:
* I:f[cur][I][j]代表目前有cur条边,并且有i个联通块,并且联通块数值有j次改变的方案数,可以计算出当前状态合不合法,转移是枚举下一次吃掉多少人,可以轻易算出最多能吃多少人。
* J:枚举每一条边,推式子后暴力求解。
* K:
* L:如果异或和为0则平局,否则考虑最高位是否为1,那么把原数列变成0101,如果n为偶数,则必然先手胜(黑白染色后选全黑或全白),然后如果a[1]和a[n]都是0,则后手必胜。之后双方必定互相模仿,模拟就知道谁赢了。
[[Image(L.png,500px)]]

流水账
出门各自看题,感觉A是个用力单纯型,思考了一会儿sub发现这个东西可以转化成经典的x[i]+y[i]>=k的形式,然后再求Σ的最优解,然后就是经典KM操作了,cjb上机A1y63。之后yzc开始上机写C,sub推式子给cjb搞J,然后cjb tle了,改了改J2y133。yzc Cwa了,很自闭,cjb上机写L,L1y153,之后yzc发现C的问题,重写了,然后不停自闭,终于C7y223。cjb和sub开出了G,sub和cjb先后上机G1y264。cjb和yzc讨论了I,sub加入讨论后很快会做了,I1y292。
总结
chenjb
码量有点大,这个D到底怎么搞啊。。。
oipotato
subconscious
题解
- A:式子可以变成每行的逐位差数组完全相同,然后推得一定存在x[i],y[i],ans[i][j]=x[i]+y[j],又有ans[i][j]>=a[i][j],且求Σans[i][j]最小,符合KM算法,直接把原图当成邻接矩阵跑一次,顶标即为所求的x[i],y[i]。
- B:
- C:用差分约束跑出每个点最多向下移动多远。
- D:
- E:
- F:
- G:显然行列无关,压成一维。从左往右每次取尽可能短的折叠,途中记录目前需要的最右端的位置,倒过来再做一次,可以发现用树状数组sort一下插入统计即可。
- H:
- I:f[cur][I][j]代表目前有cur条边,并且有i个联通块,并且联通块数值有j次改变的方案数,可以计算出当前状态合不合法,转移是枚举下一次吃掉多少人,可以轻易算出最多能吃多少人。
- J:枚举每一条边,推式子后暴力求解。
- K:
- L:如果异或和为0则平局,否则考虑最高位是否为1,那么把原数列变成0101,如果n为偶数,则必然先手胜(黑白染色后选全黑或全白),然后如果a[1]和a[n]都是0,则后手必胜。之后双方必定互相模仿,模拟就知道谁赢了。
