P1426兴奋剂检查

 
 

背景

北京奥运会开幕了,这是中国人的骄傲和自豪,中国健儿在运动场上已经创造了一个又一个辉煌,super pig也不例外………………

描述

虽然兴奋剂是奥运会及其他重要比赛的禁药,是禁止服用的。但是运动员为了提高成绩难免要服用一些,super pig也不例外。为了不被尿检检查出来,这些药品就只能选一些不容易被发现的来服用。但是奥委会关于兴奋剂检查有很多个指标,只有尿检中各项数值均不高于规定指标才算成阴性(“你没服兴奋剂”),所以如何服用适量的药品使自己的水平达到最高是每个运动员困扰的问题。

现在有n个药品,每个药品如服用就必须全部用掉(否则会有副作用)。尿检检查共有m个项目,服用每个药品对于每个检查项目都会得到一定的效果值,这些效果值是累加的;服用每个药品当然还会给super pig一些水平提高值,这些效果也是累加的。现在super pig想把问题交给你来解决,因为吃药归吃药,训练才重要。

格式

输入格式

第一行有两个整数n (0<n<=200)和m (1<=m<=5),分别表示药品数和需要检查的项目;
第二行m个整数 v1---vm,表示检查各项目的指标(即最高不能超过的值);
第三行到第n+2行,分别是这n个药品的资料,每行m+1个数。每行第一个数表示服用该药品所得到的水平提高值,第二到第m+1个数分别表示服用这个药品每一项的效果值(分别对应第二行的指标类型)。

0<= k=1∏m Vk <=5000000

输出格式

一个整数,即super pig通过服这些药在不被检查出来的条件下所能得到的最高水平提高值

样例1

样例输入1[复制]

 
5 1
6
7 3
8 5
3 1
6 2
4 3

样例输出1[复制]

 
16

限制

各个测试点1s

题解:

一开始读错题了,以为是个裸的01背包
读完题目,跑m组01背包,结果还是22分
于是看了看题解,我惊呆了,6重循环的dp,得亏m比较小要不然早爆了

AC代码i,j这个地方边界处理的很巧妙。

具体看代码吧

22分代码:

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=;
const int M=5e6+;
int n,m;
int res,c[],v[N][],w[N],f[M];
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++) scanf("%d",&c[i]);
for(int i=;i<=n;i++){
scanf("%d",&w[i]);
for(int j=;j<=m;j++){
scanf("%d",&v[i][j]);
}
}
for(int k=;k<=m;k++){
for(int i=;i<=n;i++){
for(int j=c[k];j>=v[i][k];j--){
f[j]=max(f[j],f[j-v[i][k]]+w[i]);
}
}
res=max(res,f[c[k]]);
}
printf("%d\n",res);
return ;
}

AC代码:

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=;
const int M=5e6+;
int n,m,ans,c[],v[N][],f[M];
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++) scanf("%d",&c[i]);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
scanf("%d",&v[i][j]);
}
}
for(int i=,j,k;i<=n;i++){
for(int a1=c[];a1>=v[i][];a1--){
for(int a2=c[];a2>=v[i][];a2--){
for(int a3=c[];a3>=v[i][];a3--){
for(int a4=c[];a4>=v[i][];a4--){
for(int a5=c[];a5>=v[i][];a5--){
j=(((a1*(c[]+)+a2)*(c[]+)+a3)*(c[]+)+a4)*(c[]+)+a5;
k=((((a1-v[i][])*(c[]+)+(a2-v[i][]))*(c[]+)+(a3-v[i][]))*(c[]+)+(a4-v[i][]))*(c[]+)+a5-v[i][];
ans=max(ans,f[j]=max(f[j],f[k]+v[i][]));
}
}
}
}
}
}
printf("%d\n",ans);
return ;
}

最新文章

  1. rsync参数及通信
  2. 28. Implement strStr()
  3. Maven提高篇系列之(四)——使用Profile
  4. 利用WCF的双工通讯实现一个简单的心跳监控系统 z
  5. HTML &lt;!DOCTYPE&gt; Declaration
  6. ECSHOP修改后台地址
  7. JavaScript案例五:下拉列表左右选择
  8. POJ 2407 Relatives(欧拉函数)
  9. hdu 3929 Big Coefficients 容斥原理
  10. hdu1695 GCD
  11. Thrift反序列化导致OOM(转)
  12. 数字操作 转为false的类型 typeof操作符 isNaN函数
  13. PHP数字金额转换大写金额
  14. OWA (Office Web Access)
  15. JavaScript继承详解(一)
  16. knnMatch
  17. SVN: is scheduled for addition, but is missing
  18. CCKS 2018 | 最佳论文:南京大学提出DSKG,将多层RNN用于知识图谱补全
  19. phpredis pipeline
  20. Java读取txt文件信息并操作。

热门文章

  1. 通过css代码使边框变圆角(ie9以下浏览器不支持)
  2. 全代码实现ios-1
  3. ASP.NET 最佳DataGrid读取单元格的值
  4. 整合spring roo,maven,mybatis,spring-flex,blazeds,mysql
  5. IE调试方法(一)&lt;转&gt;
  6. Codeforces Round #311 (Div. 2) A. Ilya and Diplomas 水题
  7. (转)用AGG实现高质量图形输出(一)
  8. alue of type java.lang.String cannot be converted to JSONObject
  9. ASCII码对应表
  10. AssetsManager下载类