zoj 3741 Eternal Reality(DP)
来源:互联网 发布:淘宝直播看不到聊天 编辑:程序博客网 时间:2024/04/30 15:45
题意:以魔禁为背景的题~你是学院都市的一个学生,并且你是level L的能力者,现在要接连参加n场比赛,每场比赛你至少要到达level Ai才能得到一分,现在你有一个能增加自身等级的药,每次使用会让你在[i, i + X - 1]场比赛中level变成L+1,但是这个药有副作用,每次使用以后,在[i + X, i + X + Y - 1]场比赛等级会降为0,成为无能力者。。。每次副作用后才能再次使用。。。问最后能获得的最大的分是多少。
思路:还算比较好想的dp吧,但是有个小坑,那就是题中说没有人能到达level 6,因此level 5使用药是无意义的,如果L==5,那么单独处理就好了。。用dp[i][j]表示当前是第i场比赛,上一次在第j场比赛使用了药,j==0表示一直没用过,剩下dp方程挺好想的,就是要讨论下当前的状态,能否用药和当前等级。。最后取最大值就行了,具体看代码吧
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>#include<queue>#include<set>#include<stack>#include<cmath>#include<vector>#define inf 0x3f3f3f3f#define Inf 0x3FFFFFFFFFFFFFFFLL#define eps 1e-9#define pi acos(-1.0)using namespace std;typedef long long ll;const int maxn=100+10;int dp[maxn][maxn],a[maxn];int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int L,n,X,Y; while(~scanf("%d%d%d%d",&L,&n,&X,&Y)) { for(int i=1;i<=n;++i) scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;++i) { dp[i][0]=dp[i-1][0]+(L>=a[i]); dp[i][i]=max(dp[i][i],dp[i-1][0]+(L+1>=a[i])); for(int j=1;j<i;++j) { if(j+X+Y-1<i) //可以使用 { //使用 dp[i][i]=max(dp[i][i],dp[i-1][j]+((L+1)>=a[i])); //不使用 dp[i][j]=max(dp[i-1][j]+(L>=a[i]),dp[i][j]); } else //不能使用 { if(j+X-1>=i) //leveruper { dp[i][j]=max(dp[i][j],dp[i-1][j]+((L+1)>=a[i])); } else { dp[i][j]=max(dp[i][j],dp[i-1][j]+(a[i]<=0)); } } } } int ans=0; for(int i=0;i<=n;++i) ans=max(dp[n][i],ans); if(L==5) { ans=0; for(int i=1;i<=n;++i) if(a[i]<=5) ans++; } printf("%d\n",ans); } return 0;}
0 0
- zoj 3741 Eternal Reality(DP)
- zoj 3741 Eternal Reality DP
- ZOJ 3741 Eternal Reality [dp]
- zoj 3741 Eternal Reality DP
- zoj 3741 Eternal Reality dp
- ZOJ 3741 Eternal Reality 简单DP
- ZOJ 3741 Eternal Reality 简单dp
- ZOJ 3741 Eternal Reality
- ZOJ 3741 Eternal Reality
- Eternal Reality
- ZOJ 3741 魔禁 dp
- codeforces 61D Eternal Victory 树形DP
- Reality
- Eternal Flame
- zoj 1149 双向dp
- zoj 2402 简单dp
- zoj 2744 DP做法
- zoj 2704 dp
- Schema和DTD之间的那些事儿
- 846 - Steps
- 【资料】Maximum Bipartite Matching
- TortoiseSVN的设置,如何查看更多的log记录
- 中
- zoj 3741 Eternal Reality(DP)
- table点击表头排序
- 初识--UML
- 讨论“get”和“post”安全性
- HDU 1280 前m大的数 基数排序
- 算法入门之移动雕塑
- (十一)Struts2中ognl中的ValueStack理解
- LRU Cache 最近最少使用缓存的设计
- Linux netstat命令详解