2073: [POI2004]PRZ

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 315  Solved: 237
[Submit][Status][Discuss]

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,我竟然没敢写。。。

for(int j=i;j;j=i&(j-1))

枚举所有子集

#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<complex>
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<vector>
#include<string>
#include<bitset>
#include<queue>
#include<map>
#include<set>
using namespace std;
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch<='9'&&ch>='0'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;
}
const int N=1000100;
int dp[N],st[N],sw[N],bas[20],wei[20],ti[20],n,w;
int main()
{w=read();n=read();for(int i=1;i<=n;i++)ti[i]=read(),wei[i]=read();bas[0]=1;for(int i=1;i<=n;i++)bas[i]=1<<i;for(int i=1;i<=bas[n]-1;i++)for(int j=1;j<=n;j++)if(i&bas[j-1]){sw[i]+=wei[j];st[i]=max(ti[j],st[i]);}memset(dp,0X3f,sizeof(dp));dp[0]=0;for(int i=1;i<bas[n];i++)for(int j=i;j;j=i&(j-1)){if(sw[j]>w)continue;dp[i]=min(st[j]+dp[i^j],dp[i]);}printf("%d\n",dp[bas[n]-1]);return 0;
}
/*
100 3
24 60
10 40
18 5042
*/

BZOJ 2073: [POI2004]PRZ 状压动归相关推荐

  1. BZOJ 2073: [POI2004]PRZ( 状压dp )

    早上这道题没调完就去玩NOI网络同步赛了.... 状压dp , dp( s ) 表示 s 状态下所用的最短时间 , 转移就直接暴力枚举子集 . 可以先预处理出每个状态下的重量和时间的信息 . 复杂度是 ...

  2. bzoj 2073:[POI2004]PRZ 状压DP

    Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的人都不能超过一定的限制. 所以这只队伍 ...

  3. bzoj 2073: [POI2004]PRZ

    2073: [POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的 ...

  4. Bzoj 2073 [POI2004]PRZ

    2073: [POI2004]PRZ Time Limit: 10 Sec  Memory Limit: 64 MB Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们 ...

  5. 【BZOJ2073】[POI2004]PRZ 状压DP

    [BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...

  6. 状压动规_(POJ2817)

    题意:给出N(N<=10)个字符串(length<=10),定义两个串a,b之间的公共序列长度为 将a,b对齐后,相同位置上相同字母的个数,a,b的最长公共序列长度自然是相同字母数的 最大 ...

  7. BZOJ 4000: [TJOI2015]棋盘( 状压dp + 矩阵快速幂 )

    状压dp, 然后转移都是一样的, 矩阵乘法+快速幂就行啦. O(logN*2^(3m)) ------------------------------------------------------- ...

  8. BZOJ 2004 公交线路(状压DP+矩阵快速幂)

    注意到每个路线相邻车站的距离不超过K,也就是说我们可以对连续K个车站的状态进行状压. 然后状压DP一下,用矩阵快速幂加速运算即可. #include <stdio.h> #include ...

  9. 【题解】2073: [POI2004]PRZ

    \(Description:\) 有一群人要过一个有承重限制,只能一批一批的走这个桥,每个人有一个过桥时间和重量 \(Sample\) \(Input:\) 100 3 24 60 10 40 18 ...

最新文章

  1. 自己收藏的symantec 需要的拿走
  2. 阿里创业员工分享公司的BI选型之路!自研、开源的坑都踩过
  3. 确认过眼神,你是要来百度AI开发者实战营深圳站的人
  4. 们--加强菲波那切数列
  5. linux ping不允许的操作,Alpine ping:不允许操作
  6. Flutter之跨组件共享状态Provider原理剖析
  7. c语言例题22:日期计算
  8. 总结:Oracle 递归查询
  9. 发光二极管pcb封装图画法_【干货】LED封装形式分类解析
  10. linux查看历史命令history
  11. LQA: Time of day is written with a “dot” not a “colon” (13.14 not 13:14)
  12. 胶装一般多少钱一本?网上打印资料胶装便宜的地方
  13. 数据驱动 - ddt
  14. 第二章练习题(2):计算圆柱面积和体积
  15. Recsys2021 | 基于Transformer的会话推荐
  16. ​生鲜也能卖尾货了?
  17. Bartender3使用教程
  18. 数字图像处理学习记录
  19. 【悟】终于入手PS4
  20. 农业生产中的机器学习技术

热门文章

  1. CAD看图软件怎么把dwg格式转换成dxf格式
  2. App Annie-2021年移动市场报告——附下载
  3. picsart旧版本_picsart2016旧版本
  4. 【Python数据科学】Matplotlib画图
  5. JAVA计算机毕业设计校园跑腿平台Mybatis+源码+数据库+lw文档+系统+调试部署
  6. HTML——表头标签th的属性
  7. iterm2配置rz sz
  8. oracle存储过程 论文,Oracle中基于Java的存储过程开发_计算机论文
  9. Xmind免费资源共享
  10. Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux