CF 297
D
给定一个n*m(n,m<=2000)的矩阵
其中有一些格子是障碍物
每个连通块是一个房间
现在需要拔掉一些障碍物,使得每个连通块都是矩形
类似于cf 243中div1的B题的思想
就是要知道对于2*2的四个格子,不可能的情况就是只有一个是障碍物
所以对于这张图,把所有可能要清除的障碍物放进队列,变成可达的点,出队的同时扫一遍周围的八个点,把不合法的放进队列,每个障碍物最多进队一次,复杂度n*m
E
给定n(<=25)个数字,K张标签(贴了标签之后这个数就变阶乘了),S(<=1016)
先挑数字,再贴标签(每个物品上只能贴最多一张标签),使得这些物品的和是S
同样的思想在http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26255也有出现
(XD 话说出题人你连n的数据都懒得改了)
所以方法也差不多,分成两堆去枚举
每一堆计算dp[i][j]
表示贴了j张标签,和是i的方案数
计算的时候直接暴力枚举
每一堆都是3tot的枚举
所谓3,就是每种物品都有3种选择,不选,选了不贴标签,选了贴标签