【bzoj2073】[POI2004]PRZ 状态压缩dp
2016-12-22 19:08
295 查看
题目描述
一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的人都不能超过一定的限制. 所以这只队伍过桥时只能分批过,当一组全部过去时,下一组才能接着过. 队伍里每个人过桥都需要特定的时间,当一批队员过桥时时间应该算走得最慢的那一个,每个人也有特定的重量,我们想知道如何分批过桥能使总时间最少.
输入
第一行两个数: w – 桥能承受的最大重量(100 <= w <= 400) 和 n – 队员总数(1 <= n <= 16). 接下来n 行每行两个数分别表示: t – 该队员过桥所需时间(1 <= t <= 50) 和 w – 该队员的重量(10 <= w <= 100).
输出
输出一个数表示最少的过桥时间.
样例输入
100 3
24 60
10 40
18 50
样例输出
42
题解
枚举子集的状态压缩dp
先预处理一下time和sum数组,然后枚举子集即可。
题解中数组下标从0开始,如果从1开始请注意细节。
一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的人都不能超过一定的限制. 所以这只队伍过桥时只能分批过,当一组全部过去时,下一组才能接着过. 队伍里每个人过桥都需要特定的时间,当一批队员过桥时时间应该算走得最慢的那一个,每个人也有特定的重量,我们想知道如何分批过桥能使总时间最少.
输入
第一行两个数: w – 桥能承受的最大重量(100 <= w <= 400) 和 n – 队员总数(1 <= n <= 16). 接下来n 行每行两个数分别表示: t – 该队员过桥所需时间(1 <= t <= 50) 和 w – 该队员的重量(10 <= w <= 100).
输出
输出一个数表示最少的过桥时间.
样例输入
100 3
24 60
10 40
18 50
样例输出
42
题解
枚举子集的状态压缩dp
先预处理一下time和sum数组,然后枚举子集即可。
题解中数组下标从0开始,如果从1开始请注意细节。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int f[65540] , tim[65540] , sum[65540] , t[17] , w[17]; int main() { int m , n , i , j; scanf("%d%d" , &m , &n); for(i = 0 ; i < n ; i ++ ) scanf("%d%d" , &t[i] , &w[i]); memset(f , 0x3f , sizeof(f)); f[0] = 0; for(i = 0 ; i < (1 << n) ; i ++ ) for(j = 0 ; j < n ; j ++ ) if((1 << j) & i) tim[i] = max(tim[i] , t[j]) , sum[i] += w[j]; for(i = 0 ; i < (1 << n) ; i ++ ) for(j = i ; j ; j = i & (j - 1)) if(sum[j] <= m) f[i] = min(f[i] , f[i ^ j] + tim[j]); printf("%d\n" , f[(1 << n) - 1]); return 0; }
相关文章推荐
- Android SDK下载和更新失败的解决方法
- 批处理制作静默安装(后台安装)程序包
- [笔记]Android系统进程Zygote启动过程的理解
- 全局Result(让多个action公用一个result)
- IO流
- React Native 学习笔记(九)--网络请求 & 界面跳转
- ListView与ScrollView冲突的4种解决方案
- 织梦报错提示 DedeCMS Error: (PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P
- 点聚weboffice插件自定义菜单
- 使用 PHP 7 给 Web 应用加速
- spring+mybatis+quartz集群
- Servlet, Listener 、 Filter.
- vbs test
- StartCom 申请 SSL 证书及 Nginx HTTPS 支持配置全攻略
- 分析单片机晶振大多为11.0592的原因
- arm-linux-androideabi-addr2line
- 2878: [Noi2012]迷失游乐园
- Sprin 4000 g MVC
- ATM模拟机续作
- 学生选课Pro