2015年四川省赛
A,E,I,J sb题
B 数学题
对于两个数\(A,B\)相加,第i位数是否进位取决于\(A%10^i+B%10^i\)是否大于\(10^i\).
代码:http://paste.ubuntu.com/24714109/
C 字符串匹配
D Vertex Cover[WQF补]
传送门
dfs+剪枝
一般图的最小点覆盖问题是是一个npc问题。但是这题有一点特殊的地方,每条边必定包含前面30个点的的一个,所以这题可以枚举钱30个点的选和不选的状态,后面的点对应的状态就唯一了。
代码
F dp+树状数组
- 枚举数值为perfect的点,然后顺序构造一个新的数组没有perfect数。然后题目就变成了求和最大的非递增/非递减序列。另设两个\(dp\),很显然\(dp\)是\(O(n^2)\)的。可以利用树状数组来更新\(dp\)值。(套路是根据原序列的值作为\(BIT\)的下标取值)
- 最后的答案需要枚举分割点。
G 二分图 关键点在这句: “Luckily, frogs can be divided into 2 groups such that no two frogs in the same group dislike each other.”说明这张图可以构造出二分图,所以 对这个图黑白染色。再开始建网络流的边。
1.每个点拆为Ai和Bi,Ai→Bi权值Wi.
2.若一个点为黑色,不能喝红茶则S→Ai,不能喝绿茶则Bi→T,容量都是INF。
3.若一个点为白色,不能喝红茶则Bi→T,不能喝绿茶则S→Ai,容量都是INF。
4.对每一条矛盾边,Bi→Aj,Bj→Ai,容量INF。
然后就是求最小割
WQF代码
H 完备匹配的最小字典序