NYOJ 654 喜欢玩warcraft的ltl (01背包常数优化)
来源:互联网 发布:知行结合爱国 编辑:程序博客网 时间:2024/05/22 00:52
【题目链接】:click here~~
一个常数优化
前面的伪代码中有 for v=V..1,可以将这个循环的下限进行改进。
由于只需要最后f[v]的值,倒推前一个物品,其实只要知道f[v-w[n]]即可。以此类推,对以第j个背包,其实只需要知道到f[v-sum{w[j..n]}]即可,即代码中的
for i=1..N
for v=V..0
可以改成
for i=1..n
bound=max{V-sum{w[i..n]},c[i]}
for v=V..bound
这对于V比较大时是有用的。
代码:/** Problem: NYOJ No.654* Running time: 412MS* Complier: C++* Author: ACM_herongwei* Create Time: 9:24 2015/9/9 星期三 * zeroonebags 的常数优化*/#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#define CLR(c,v) (memset(c,v,sizeof(c)))using namespace std;template <typename _T>inline _T Max(_T a,_T b){return (a>b)?(a):(b);}template <typename _T>inline _T Max(_T a,_T b,_T c){return (a>Max(b,c))?(a):(Max(b,c));}const int COST = 1e6 + 10;const int M = 1e4 + 10;int dp[COST];int value[M];int volume[M];int main(){int Ncase;scanf("%d",&Ncase) ;while(Ncase--){CLR(dp,0);int max_cost, n_bags;scanf("%d%d",&n_bags, &max_cost);for (int i = 0 ; i < n_bags ; ++i){ // max:1000scanf("%d%d",&volume[i],&value[i]);}for (int i = 0 ; i < n_bags ; ++i){ // max:1000int sum = 0;for(int j = i ; j < n_bags ; ++j){sum += volume[j];}int bound = Max(max_cost-sum , volume[i]);for(int j = max_cost ; j >= bound ; j--){ // max:100 0000if( dp[j] < dp[j-volume[i]] + value[i]){dp[j] = dp[j-volume[i]] + value[i];}}}printf("Max experience: %d\n",dp[max_cost]);}return 0;}/*样例输入23 107 72 33 52 53 52 1样例输出Max experience: 12Max experience: 6*/
0 0
- NYOJ 654 喜欢玩warcraft的ltl -- 01背包 一中常数优化
- NYOJ 654 喜欢玩warcraft的ltl (01背包常数优化)
- NYOJ 654 喜欢玩warcraft的ltl
- 喜欢玩warcraft的ltl
- 喜欢玩warcraft的ltl
- 01背包(降维 + 常数级优化)
- 关于背包九讲01背包中的常数优化
- HDU 2844 Coins 多重背包+常数优化 -
- 背包九讲——01背包(降维+常数级优化)
- 矩阵乘法的常数优化
- nyoj 325 zb的生日 【01-背包】
- nyoj--860--又见01背包--01背包的变形
- A water problem 常数优化的故事。。
- 浅谈程序复杂度的常数优化
- nyoj 苹果 01背包
- 01背包的空间优化
- HDU 3008 Warcraft (DP 背包)
- Hrbust1053 Warcraft III (完全背包)
- 基于物理渲染的基础理论
- 在Windows平台上安装Node.js及NPM模块管理
- const
- Android图片缓存
- php+redis
- NYOJ 654 喜欢玩warcraft的ltl (01背包常数优化)
- <Linux内核探秘>读书笔记
- 生活中的观察者模式——一壶水的故事
- android隐藏软键盘的方法
- 向OpenCV3.0中添加opencv_contrib插件中的新功能
- oracle与mysql数据库的区别
- Redis cpu 100%和连接数多分析
- 贝叶斯网络
- 关于用户身份及密码问题的说明