山东省第六届省赛K题
来源:互联网 发布:鹿晗用的直播软件 编辑:程序博客网 时间:2024/04/27 13:22
题意描述:
题目原型来自LOL游戏,一个人和一座塔,共同打n个怪,每个怪都有一定的血量,塔和人都有无限血。每一轮攻击都是塔先打,而且塔只按顺序打怪物,人后打,但人可以选择任意一个攻击,但是人在每一轮可以攻击也可以不攻击。求人最多可以给几个怪物以最后一击。
1<=n<=1000, 塔,人的每次攻击力x、y 在 0 - 1e9之间 ,怪的血量在 ai在 1 - 1e9之间。
解法描述:
定义 : 由于每一轮人可以攻击可以不攻击,那么人可以保留这次攻击,记为一次可用攻击数。
定义 : d(i,j)为前i个怪 人杀死j个 所能剩余的最大可用攻击数。
定义:b(i) 为 为怪i 再被 塔打一下就死时的血量 , c(i) 为人把i滴血打完所需次数。
状态转移: 当 i-1 > = j 时 d(i,j)->d(i-1,j); 当且仅当 (d(i-1,j-1)+ (ai - b(i))%x ) >= c(b(i)) 时 d(i,j)->d(i-1,j-1);
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <string>using namespace std;typedef long long LL;const int inf = 1e9;const int N = 1010;LL d[N][N],x,y,a[N],n;bool vis[N][N];LL dp(int i,int j){ if(vis[i][j]) return d[i][j]; vis[i][j]=1; if(i==0) return d[i][j]=0; d[i][j] = -inf; if(i-1 >= j) d[i][j]=dp(i-1,j)+(a[i]/x +(a[i]%x==0 ? 0:1)); if(j>0){ LL pre = dp(i-1,j-1); int lef=(a[i]%x==0 ? x:a[i]%x),add=a[i]/x-(a[i]%x==0 ? 1:0); LL need = lef/y+(lef%y==0 ? 0:1); pre+=add; if(pre >= need) d[i][j]=max(d[i][j],pre-need); } return d[i][j];}int main(){ int T; scanf("%d",&T); while(T--){ scanf("%lld %lld %lld",&n,&x,&y); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); } memset(vis,0,sizeof(vis)); if(y==0 || x==0) { if(y == 0) printf("0\n"); else if(x == 0) printf("%d\n",n); continue; } for(int i=n;i>=0;i--){ if(dp(n,i)>=0) { printf("%d\n",i); break; } } } return 0;}
0 0
- 山东省第六届省赛K题
- 山东省第六届省赛总结--宋萍萍
- 山东省第六届省赛总结 -- 王淑婷
- CF----思维排序+01背包 山东省第八届省赛K题
- 第六届山东省ACM竞赛 B题 Lowest Unique Price
- 第六届山东省ACM竞赛 C题 Game!
- 第六届山东省ACM竞赛 J题 Single Round Math
- sdut 3258 (第六届山东省ACM省赛H题)
- 2015山东省第六届acm省赛 C题Game!
- 山东省第八届ACM省赛 K 题(CF)
- 山东省第八届acm省赛K题 贪心+dp
- 山东省第八届acm省赛K题 CF
- 山东省第三届省赛D题
- 山东省第七届省赛L题
- 【第六届山东省ACM竞赛】B题 Lowest Unique Price(SDUT3252)
- 第六届山东省赛I题 Routing Table 字典树 NEU 1588 & UPC 3116 & SDUT 3259
- 第六届山东省ACM竞赛 A题 Nias and Tug-of-War
- 第六届山东省省赛总结
- 黑马程序员---------C语言 关于数组被当作函数参数传递的问题
- hsacm-1575
- [android]自定义ContentProvider
- scorm标准平台有哪些是免费的?
- 方块游戏—题解
- 山东省第六届省赛K题
- ACM-A Famous Music Composer
- 河南网络底案回品田
- iOS开发--地图移动中心点获取
- POJ 3169 Layout bellman_ford 最短路
- 菜鸟app开发学习之路1
- JavaScript跨域总结与解决办法
- ios 摄像头,二维码相关
- Source