Bone Collector和I NEED A OFFER!
来源:互联网 发布:网络摄像机ip破解 编辑:程序博客网 时间:2024/05/08 23:36
两个的01背包,第一个没变型,是最简单的;
第二个稍稍变形了一点。第一题链接:https://cn.vjudge.net/contest/146325#problem/O
第二:https://cn.vjudge.net/contest/146325#problem/L
密码:ACM7114
下面看看这两个代码,对比一下吧!会学的更快;
第一个#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int v1[1005];int w[1005];int f[1005];int main(){ int t; scanf("%d",&t); while(t--) { memset(v1,0,sizeof(v1)); memset(w,0,sizeof(w)); memset(f,0,sizeof(f)); int i,j; int n,v; scanf("%d%d",&n,&v); for(i=1; i<=n; i++) { scanf("%d",&v1[i]); } for(j=1; j<=n; j++) { scanf("%d",&w[j]); } for(i=1; i<=n; i++) { for(j=v; j>=w[i]; j--)//01背包应该注意从后向前因为与前面有关 { f[j]=max(f[j],f[j-w[i]]+v1[i]); } } printf("%d\n",f[v]); } return 0;}
他可以收到至少一份offer的最大概率;因为不好求,所以求他的相反最小概率即可。#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int M = 10005;int v[10005];double f[10005],w[10005];int main(){ int m,n; while(~scanf("%d%d",&m,&n)) { int i,j; if(m==0&&n==0) break; memset(f,0,sizeof(f)); for(i=1; i<=n; i++) { int a1; double a2; scanf("%d%lf",&v[i],&w[i]); w[i]=1-w[i]; } for(i=0; i<=10005; i++) f[i]=1; for(i=1; i<=n; i++) { for(j=m; j>=v[i]; j--) { f[j]=min(f[j],f[j-v[i]]*w[i]); } } f[m]=(1-f[m])*100; printf("%.1lf%%\n",f[m]); } return 0;}
0 0
- Bone Collector和I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I NEED A OFFER!
- I need a offer
- I NEED A OFFER!
- I need a offer!(hdu1203)
- AngularJS 基础入门
- java基础3
- 【备忘】 iOS开发UI基础 UI高级开发(完整)视频下载
- 学习SASS笔记
- gitignore配置
- Bone Collector和I NEED A OFFER!
- sql 2008 无法绑定由多个部分绑定的标示符
- Vue之SetTimeout
- Gulp基础
- 第2章 selenium-python环境的搭建
- java排序算法
- leetcode 410.Split Array Largest Sum(Hard)
- Gossip协议的一些胡乱推导运算分析
- Qt5.7与MySQL5.7在win10下的连接问题(QMYSQL driver not loaded !)