2073: [POI2004]PRZ

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 442  Solved: 327
[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

HINT

Source

STAGE 2

这道题目的状态压缩暴力枚举转移的复杂度是∑(Cn,i * 2^i)渐进与3^n

这个我不知道,考试是打表找复杂度吧。

 #pragma GCC optimize(2)
#pragma G++ optimize(2)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring> #define N 70007
#define inf 1000000007
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
} int w,n;
int weight[N],tim[N],f[N];
struct Node
{
int t,w;
}a[]; void dfs(int dep,int now,int slow,int zl)
{
if(dep==n)
{
weight[now]=zl;
tim[now]=slow;
return;
}
dep++;
dfs(dep,now<<|,max(slow,a[dep].t),zl+a[dep].w);
dfs(dep,now<<,slow,zl);
}
int main()
{
w=read(),n=read();
for (int i=;i<=n;i++)a[i].t=read(),a[i].w=read();
dfs(,,,);
f[]=;int up=<<n;
for (int i=;i<up;i++)f[i]=inf;
for (int i=;i<up;i++)
{
for (int j=i;j;j=(j-)&i)
if(weight[j]<=w) f[i]=min(f[i],f[i^j]+tim[j]);
}
printf("%d\n",f[up-]);
}

最新文章

  1. 让.NET xml序列化支持Nullable
  2. Wince 6.0 窗口最大化显示
  3. sqlserver 查看锁表,解锁
  4. Spark RDD概念学习系列之Spark的算子的作用(十四)
  5. 深入分析 iBATIS 框架之系统架构与映射原理--转载
  6. 链表的实现 -- 数据结构与算法的javascript描述 第六章
  7. 操作 IoT 设备内嵌 SQLite
  8. 开涛spring3(6.4) - AOP 之 6.4 基于@AspectJ的AOP
  9. PHP版本替换, phpinfo和php -v显示版本信息不一致
  10. Vue.js安装
  11. SimpleAdapter和Baseadapter填充listActivity-android学习之旅()
  12. mvc RedirectToAction、mobile 重定向地址栏未改变
  13. JAVA设计模式——代理(静态代理)
  14. show engines 解释
  15. CentOS7通过rsync+crontab实现两台服务器文件同步
  16. ExecutorService——shutdown方法和awaitTermination方法
  17. 从零开始学 Web 之 JavaScript(一)JavaScript概述
  18. sql server备份和还原
  19. idea 关闭代码自动折叠,形参提示,行数栏图标,启动不默认打开上次的项目
  20. python之旅:面向对象进阶

热门文章

  1. CCF系列之最大的矩形(201312-3)
  2. 二叉搜索树的平衡--AVL树和树的旋转(图解)
  3. js 获取url链接的任意参数
  4. 微信小程序左右滑动切换图片酷炫效果(附效果)
  5. 2017-06-20 (pwd ls cd)
  6. iphone启动图UI切图尺寸对照保存
  7. git 不成功
  8. Mysql Innodb 锁机制
  9. [PHP]接口请求校验的原理
  10. Jmeter之性能测试类型