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
首先把每一种可能的组的时间和总重量算出来,然后每次枚举子集表示最后刚加入的组。
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=18,maxs=(1<<16)+10;
int W,n,t[maxn],w[maxn],mi[maxn],f[maxs],g[maxs],ans[maxs];int aa;char cc;
int read() {aa=0;cc=getchar();while(cc<'0'||cc>'9') cc=getchar();while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();return aa;
}int main() {W=read();n=read();for(int i=1;i<=n;++i) t[i]=read(),w[i]=read();mi[1]=1;for(int i=2;i<=n;++i) mi[i]=mi[i-1]<<1;for(int i=1;i<(1<<n);++i) {for(int j=1;j<=n;++j) if((mi[j]|i)==i) {g[i]+=w[j];f[i]=max(f[i],t[j]);}}memset(ans,0x3f3f3f3f,sizeof(ans));ans[0]=0;for(int i=1;i<(1<<n);++i) {for(int j=i;j;j=i&(j-1)) if(g[j]<=W) ans[i]=min(ans[i],ans[i^j]+f[j]);}printf("%d",ans[(1<<n)-1]);return 0;
}

转载于:https://www.cnblogs.com/Serene-shixinyi/p/7481588.html

bzoj2073 PRZ相关推荐

  1. BZOJ2073 PRZ(状压dp)

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

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

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

  3. bzoj2073 [POI2004]PRZ

    http://www.elijahqi.win/2018/01/24/bzoj2073-poi2004prz/ ‎ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要 ...

  4. 【BZOJ2073/POI2004】PRZ

    题目:PRZ 解析: 本来是道傻逼状压枚举子集的题,因为数组开小了WA了半天... 数组一定要尽量开大!! 代码: #include <bits/stdc++.h> using names ...

  5. BZOJ2073: [POI2004]PRZ

    Portal 暴力状压,刚开始加了判断条件W[i-j]<=m,去掉以后发现竟然莫名其妙的A了..后来发现原来是自己蠢,转移时只是将当前状态j合并到答案中,所以只用判j. 之前的做法,第二层循环巨 ...

  6. 【BZOJ2073】【POI2004】PRZ(状压dp)

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

  7. 【bzoj2073】[POI2004]PRZ 状态压缩dp

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

  8. 【bzoj2073】[POI2004]PRZ

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

  9. Bzoj2073 [POI2004] PRZ

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

最新文章

  1. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝
  2. String Reduction问题分析
  3. Java中的注解到底是如何工作的?
  4. 无需数据线,在Windows电脑上就可以浏览和编辑华为的手机文件
  5. Linux基础之网络配置
  6. 文件到集合改进版【应用】
  7. mysql jdbc实例_jdbc操作mysql数据库实例
  8. Linux设备管理(三)_总线设备的挂接
  9. LVS基本介绍及NAT模型配置示例
  10. 从sql2016导出数据库到sql2014
  11. 斯坦福大学最新-机器学习导论
  12. pageadmin 网站建设教程:如何添加自定义页面
  13. 诛仙mysql架设_目前最完整的诛仙私服架设教程
  14. 团队管理--领导力的重要性
  15. 赶紧收藏!41个Web UI工具包资源免费及付费下载
  16. python学习记录——容器篇
  17. linux net子系统-系统调用层
  18. 机器学习之DBSCAN算法
  19. 2022焊工(初级)考试题模拟考试题库及在线模拟考试
  20. 【厚积薄发系列】读书笔记2—《洞察力的秘密》小记

热门文章

  1. Python Docker 接口测试代码-立哥开发
  2. 爬虫抓取天气预报、定时发送给指定微信好友,自动回复
  3. 前端必看书籍总结(哪些值得看)
  4. 怎么将照片拼在一起?分享几种拼图神器
  5. 【mos 1265700.1】Oracle Patch Assurance - Data Guard Standby-First Patch Apply
  6. ULM图解 “23种设计模式”,及实例的类图
  7. 玩转自定义View之大学问特色蛛网评分控件
  8. [资源]汇集最有用的PHP资源
  9. 全球最好的IT企业文化 :Netflix 企业文化
  10. Ubuntu增加硬盘