杭电3732 Ahui Writes Word (多重背包问题)
来源:互联网 发布:清华大学软件专业课程 编辑:程序博客网 时间:2024/05/17 09:34
Ahui Writes Word
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2076 Accepted Submission(s): 757
Question: the maximum value Ahui can get.
Note: input words will not be the same.
Each of the next N line are a string and two integer, representing the word, the value(Vi ) and the complexity(Ci ). (0 ≤ Vi , Ci ≤ 10)
5 20go 5 8think 3 7big 7 4read 2 6write 3 5
15代码:这道题不能用01背包问题解决,会超时,将其化为多重背包问题#include<stdio.h>#include<string.h>int max(int x,int y){ if(x > y) return x; else return y ;}char a[100001] ;int w[12][12] ;int f[100001] ;int va[100001] ;int v[100001] ;int N = 0 ,C = 0;
//完全背包void completepack(int x ,int y){ for(int i = y ; i <= C ; i++ ) f[i] = max(f[i],f[i-y] + x) ;}
//01背包void zeroonepack(int x,int y){ for(int i = C ; i >= y ; i-- ) f[i] = max(f[i],f[i-y] + x) ;}
//多重背包,这里需要用到二进制优化void multipack(int x,int y,int n){ if(n * y >= C) completepack(x,y) ; else { int k = 1 ; while(k < n) { zeroonepack(k * x , k * y) ; n -= k ; k *= 2 ; } zeroonepack(n * x , n * y) ; }}int main(){ while(~scanf("%d%d",&N,&C)) { int i = 0 , j = 0 ; int x = 0 , y = 0 ; memset(a,0,sizeof(a)); memset(w,0,sizeof(w)); memset(f,0,sizeof(f)); memset(va,0,sizeof(va)); memset(v,0,sizeof(v)); for(i = 1 ;i <= N ; i++) { scanf("%s%d%d",a,&x,&y); w[x][y]++; } for(i = 0 ;i < 11 ; i++) { for(j = 0 ; j < 11 ; j++) { multipack(i,j,w[i][j]); } }
printf("%d\n",f[C]); } return 0 ;}
- 杭电3732 Ahui Writes Word (多重背包问题)
- HDU 3732 Ahui Writes Word(多重背包问题)
- HDOJ 3732 Ahui Writes Word (多重背包)
- hdoj 3732 Ahui Writes Word (多重背包)
- HDU 3732 Ahui Writes Word(多重背包)
- HDU 3732(Ahui Writes Word)多重背包
- HDU - 3732 Ahui Writes Word(多重背包)
- hdu 3732 Ahui Writes Word 多重背包 小心超时
- hdu 3732 Ahui Writes Word 【多重背包】、好题
- (DP,多重背包) Ahui Writes Word -- HDOJ
- hdu 3721 Ahui Writes Word 多重背包
- HDOJ3732--Ahui Writes Word--多重背包
- Ahui Writes Word hdu3732 多重背包
- hdu3732 Ahui Writes Word (多重背包)
- HDU 3732 Ahui Writes Word(01背包转化为多重背包)
- hdu 3732 Ahui Writes Word(多重背包的二进制思想优化)
- Ahui Writes Word(01转化为多重背包)
- 【hdu3732】Ahui Writes Word——多重背包
- 弹出框
- 清华大学留学班2014年招生--美加英澳名校直通车
- javaEE 使用ServletContext实现服务器端简单定时更新缓存
- 中国移动互联网用户行为统计报告2014H1(完整版)
- [除錯]引動過程的目標傳回例外狀況
- 杭电3732 Ahui Writes Word (多重背包问题)
- (原创)底层最基本的也是用的最多的条件查询方法实现,有点多!(已经更新)
- jquery easyui datagrid基本功能
- JFinal框架操作oracle数据库
- Oracle中几个关于日期方面的SQL实例
- 清华大学留学班2014年招生--美加英澳名校直通车
- service使用以及startService,stopService,bindService,unbindService方法比较
- PACKAGE “VISUAL C++ PACKAGE” FAILED TO LOAD
- ArcGIS API for javascript 空间查询 没有结果 解决(二)