hdu1494&&hdu1203&&hdu2602(背包和dp)
来源:互联网 发布:网络如何交友 编辑:程序博客网 时间:2024/06/05 11:31
hdu2602
简单01背包
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#define maxn(x,y) x>y?x:yusing namespace std;int a[1100],v[1100],res[1100];int main(){int i,t,n,V;#ifndef ONLINE_JUDGEfreopen("D:\\o.txt","r",stdin);#endif // ONLINE_JUDGEscanf("%d",&t);while(t--){memset(res,0,sizeof(res));cin>>n>>V;for(i=1;i<=n;i++)cin>>a[i];for(i=1;i<=n;i++)cin>>v[i];for(i=1;i<=n;i++){for(int j=V;j>=v[i];j--){res[j]=maxn(res[j],res[j-v[i]]+a[i]);//状态转移方程}}printf("%d\n",res[V]);}return 0;}
hdu1203
//与上一题差不多,注意到至少有一个的话,我们可以反过来考虑,就是最小的全部没有的概率,然后1减去算得的概率就是最后结果了
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#define inf 1<<30#define maxn(x,y) x>y?x:y#define minn(x,y) x>y?y:xusing namespace std;int v[11000];double a[11000],res[11000];int main(){int i,n,V;#ifndef ONLINE_JUDGEfreopen("D:\\o.txt","r",stdin);#endif // ONLINE_JUDGEwhile(cin>>V>>n&&n+V){for(i=0;i<=V;i++)res[i]=1;for(i=1;i<=n;i++)cin>>v[i]>>a[i];for(i=1;i<=n;i++){for(int j=V;j>=v[i];j--){res[j]=minn(res[j],res[j-v[i]]*(1-a[i]));}}printf("%0.1f%%\n",(1-res[V])*100);}return 0;}
hdu1494
//这个题目自己没有做出来,相当委屈!!!
//首先用dp[i][j]表示第i段能量为j时所走的最短时间,接下来就分为四种情况考虑
//当j==0时,只能是能量为5的上一个阶段变为本阶段
//当j<10时,取上一个阶段能量为j-1的和上一个阶段能量为j+5的较小的一个
//当j>10时,只能是上一个阶段能量为j-1变为本阶段
//当j==10时,取上一个阶段能量为j-1的和上一个能量为14的较小的一个
//注意初始化问题,当i==0时,j=1,2,3,4…………14都要为inf因为没有这种状态
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#define inf 1<<30#define M 100010#define maxn(x,y) x>y?x:y#define minn(x,y) x>y?y:xusing namespace std;int a[M],b[M],dp[M][15];int main(){int i,j,L,n;#ifndef ONLINE_JUDGEfreopen("D:\\o.txt","r",stdin);#endif // ONLINE_JUDGEwhile(cin>>L>>n){for(i=1;i<=L;i++)cin>>a[i];for(i=1;i<=L;i++)cin>>b[i];for(i=1;i<=L;i++){for(j=i+L;j<=n*L;j+=L)a[j]=a[i],b[j]=b[i];}for(i=0;i<=n*L;i++)for(j=0;j<15;j++)dp[i][j]=inf;dp[0][0]=0;for(i=1;i<=n*L;i++){for(j=0;j<15;j++){if(j==0)dp[i][j]=dp[i-1][j+5]+b[i];else if(j<10)dp[i][j]=minn(dp[i-1][j+5]+b[i],dp[i-1][j-1]+a[i]);else if(j>10)dp[i][j]=dp[i-1][j-1]+a[i];else if(j==10)dp[i][j]=minn(dp[i-1][14]+a[i],dp[i-1][j-1]+a[i]);}}int res=inf;for(j=0;j<15;j++)res=minn(dp[n*L][j],res);printf("%d\n",res);}return 0;}
- hdu1494&&hdu1203&&hdu2602(背包和dp)
- HDU1203 DP-01背包
- hdu2602 dp 01背包
- HDU1203 DP 01背包问题
- HDU2602 DP + 裸 + 01背包
- Bone Collector hdu2602(经典dp)01背包
- hdu2602(01背包)
- HDU2602(01背包)
- hdu2602(01背包)
- hdu1494 - 跑跑卡丁车 (01背包)
- hdu1203(01背包变形)
- (简单01背包)HDU2602
- hdu2602-Bone Collector (背包)
- hdu2602(01背包基础)
- HDU2602(简单背包问题)
- hdu2602(背包)Bone Collector
- HDU2602(基础01背包)
- hdu1494之dp
- android 退出应用后管理程序中force stop 强制关闭为灰色的代码
- 软件工程导论 实验一
- virtualBox中的ubuntu共享文件夹
- 【Android 开发】: AsyncTask 详解
- 动态下载苹果提供的多种中文字体
- hdu1494&&hdu1203&&hdu2602(背包和dp)
- Android开发之SharedPreferences的使用
- c语言读文件实例
- JS动态 按需 加载
- linux学习(一)基本命令
- TopCoder SRM 597 Div1 第1题
- Exercise 2.6
- POI Word 模板导出教程
- 几点总结