vijos1426 兴奋剂检查 - 动态规划
2017-05-26 21:45
281 查看
传送门
题目大意:略。
题解:把五位状态用类似进制位的思想压缩成一位即可,注意细节。
代码://vijos 1426
#include<iostream>
#include<cstring>
#include<cstdio>
#define up upppppuuup
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define per(i,t,s) for(int i=t;i>=s;i--)
#define MAXN 5100000
using namespace std;
int up[10],v[210][10],w[210],dp[MAXN];
int calc(int a,int b,int c,int d,int e)
{
return a*(up[2]+1)*(up[3]+1)*(up[4]+1)*(up[5]+1)
+b*(up[3]+1)*(up[4]+1)*(up[5]+1)
+c*(up[4]+1)*(up[5]+1)+d*(up[5]+1)+e;
}
int main()
{
int n,m;scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
scanf("%d",&up[i]);
for(int i=1;i<=n;i++)
{
scanf("%d",&w[i]);
for(int j=1;j<=m;j++)
scanf("%d",&v[i][j]);
}
rep(i,1,n)per(a,up[1],v[i][1])per(b,up[2],v[i][2])
per(c,up[3],v[i][3])per(d,up[4],v[i][4])per(e,up[5],v[i][5])
{
int x=calc(a,b,c,d,e),y=calc(a-v[i][1],b-v[i][2],c-v[i][3],d-v[i][4],e-v[i][5]);
dp[x]=max(dp[x],dp[y]+w[i]);
}
printf("%lld\n",dp[calc(up[1],up[2],up[3],up[4],up[5])]);
return 0;
}
题目大意:略。
题解:把五位状态用类似进制位的思想压缩成一位即可,注意细节。
代码://vijos 1426
#include<iostream>
#include<cstring>
#include<cstdio>
#define up upppppuuup
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define per(i,t,s) for(int i=t;i>=s;i--)
#define MAXN 5100000
using namespace std;
int up[10],v[210][10],w[210],dp[MAXN];
int calc(int a,int b,int c,int d,int e)
{
return a*(up[2]+1)*(up[3]+1)*(up[4]+1)*(up[5]+1)
+b*(up[3]+1)*(up[4]+1)*(up[5]+1)
+c*(up[4]+1)*(up[5]+1)+d*(up[5]+1)+e;
}
int main()
{
int n,m;scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
scanf("%d",&up[i]);
for(int i=1;i<=n;i++)
{
scanf("%d",&w[i]);
for(int j=1;j<=m;j++)
scanf("%d",&v[i][j]);
}
rep(i,1,n)per(a,up[1],v[i][1])per(b,up[2],v[i][2])
per(c,up[3],v[i][3])per(d,up[4],v[i][4])per(e,up[5],v[i][5])
{
int x=calc(a,b,c,d,e),y=calc(a-v[i][1],b-v[i][2],c-v[i][3],d-v[i][4],e-v[i][5]);
dp[x]=max(dp[x],dp[y]+w[i]);
}
printf("%lld\n",dp[calc(up[1],up[2],up[3],up[4],up[5])]);
return 0;
}
相关文章推荐
- vijos1426兴奋剂检查(多维费用的背包问题+状态压缩+hash)
- vijos1426兴奋剂检查(多维费用的背包问题+状态压缩+hash)
- [vijos1426] 兴奋剂检查
- [vijos1426]兴奋剂检查(多维背包)
- 兴奋剂检查(vijos 1426)
- Vijos 1426 兴奋剂的检验
- VIJOS P1426兴奋剂检查[DP 状态哈希]
- Vijos 1404 遭遇战 - 动态规划 - 线段树 - 最短路 - 堆
- 【动态规划】Vijos P1218 数字游戏(NOIP2003普及组)
- Vijos P1143 三取方格数(动态规划,多进程DP)
- Vijos - 1488 路灯的改建计划 动态规划 重庆一中高2018级竞赛班第九次测试 2016.9.10 Problem 3
- vijos1441 打鼹鼠 (动态规划)
- 【bzoj1592】【Usaco2008 Feb】【动态规划】CQYZ_Vijos_P1468 路面修整
- vijos1011【动态规划】
- Vijos - 1037 搭建双塔 动态规划(DP) 重庆一中高2018级竞赛班第七次测试 2016.8.4 Problem 2
- 【动态规划】Vijos P1616 迎接仪式
- Vijos P1312 能量项链(动态规划,环状DP,区间DP)
- 【哈希】【动态规划】[NOIP模拟赛]仔细的检查
- VIJOS P1057盖房子 (动态规划)
- vijos1025【动态规划】