【BZOJ2073】【POI2004】PRZ(状压dp)
Description
一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的人都不能超过一定的限制. 所以这只队伍过桥时只能分批过,当一组全部过去时,下一组才能接着过. 队伍里每个人过桥都需要特定的时间,当一批队员过桥时时间应该算走得最慢的那一个,每个人也有特定的重量,我们想知道如何分批过桥能使总时间最少.
Input
第一行两个数: w – 桥能承受的最大重量(100 <= w <= 400) 和 n – 队员总数(1 <= n <= 16). 接下来n 行每行两个数分别表示: t – 该队员过桥所需时间(1 <= t <= 50) 和 w – 该队员的重量(10 <= w <= 100).
Output
输出一个数表示最少的过桥时间.
Sample Input
100 3
24 60
10 40
18 50
Sample Output
42
题解:
今天做了太多状压dp了,导致我觉得已经没什么好说的了……
就枚举状态转移吧……
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#define ll long long
#define inf 0x7f7f7f7f
#define N 65536
using namespace std;
int m,n,t[20],w[20],bin[20],ti[N],wei[N],dp[N];
int main()
{memset(dp,63,sizeof(dp));for(int i=0;i<=16;i++) bin[i]=(1<<i);scanf("%d%d",&m,&n);for(int i=1;i<=n;i++) scanf("%d%d",&t[i],&w[i]);for(int i=1;i<bin[n];i++)for(int j=1;j<=n;j++)if(i&bin[j-1]) {ti[i]=max(ti[i],t[j]);wei[i]+=w[j];}dp[0]=0;for(int i=1;i<bin[n];i++)for(int j=i;j;j=i&(j-1))if(wei[j]<=m) dp[i]=min(dp[i],ti[j]+dp[i^j]);printf("%d\n",dp[bin[n]-1]);return 0;
}
【BZOJ2073】【POI2004】PRZ(状压dp)相关推荐
- 【BZOJ2073】[POI2004]PRZ 状压DP
[BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...
- BZOJ 2073: [POI2004]PRZ( 状压dp )
早上这道题没调完就去玩NOI网络同步赛了.... 状压dp , dp( s ) 表示 s 状态下所用的最短时间 , 转移就直接暴力枚举子集 . 可以先预处理出每个状态下的重量和时间的信息 . 复杂度是 ...
- bzoj 2073:[POI2004]PRZ 状压DP
Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的人都不能超过一定的限制. 所以这只队伍 ...
- BZOJ 2073: [POI2004]PRZ 状压动归
2073: [POI2004]PRZ Time Limit: 10 Sec Memory Limit: 64 MB Submit: 315 Solved: 237 [Submit][Status] ...
- BZOJ2073 PRZ(状压dp)
** BZOJ2073 PRZ(状压dp) ** Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候 ...
- bzoj2073 [POI2004]PRZ
http://www.elijahqi.win/2018/01/24/bzoj2073-poi2004prz/ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要 ...
- POJ 1038 Bugs Integrated Inc (复杂的状压DP)
\(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...
- codeforces 8C. Looking for Order 状压dp
题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...
- UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)
整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...
最新文章
- Tensorflow多线程输入数据处理框架(一)——队列与多线程
- 区块链学习笔记(五)
- 友盟开放日: 通过 App 内社区提高留存率的 6 个技巧
- python做abaqus后处理_python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。...
- 看国外女神级程序员,直播写代码一年的感悟
- 清除防火墙所有配置规则
- 工作113:声明问题 的定义变量
- java dom4j api_详解Java解析XML的四种方法(推荐使用DOM4J,因为for Java)
- R_ggplot2基础(一)
- Jdk1.6.0+Tomcat6.0环境变量配置
- 【MCMC】基于贝叶斯优化的自适应MCMC算法仿真
- Simulink 快速入门(二)--创建简单模型
- 常见的企业流程再造模式
- PAT_1078 Hashing
- 传输预编码matlab,基于MATLAB的MIMO系统预编码性能仿真.doc
- 3.10 Maya历法
- 圣诞快到了,用JavaScript画一个圣诞树
- iOS7下的drawInRect的新方法drawInRect:withAttributes:使用
- Wrapper中ge,gt,lt,le的含义
- 摩托罗拉刷机维修服务器,摩托罗拉手机通用刷机教程