codeforces 297

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种选择,不选,选了不贴标签,选了贴标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值