2018-2019 ACM-ICPC, Asia East Continent Finals I. Misunderstood … Missing(dp)
题目链接:
http://codeforces.com/gym/102056/problem/I
题意:
人物有l两个属性分别是$A,D$
每个回合人物$A\pm D$
每个回合有三个选择分别是:
1,对怪物造成$a_i+A$的伤害
2,$A\pm c_i$
3,$D\pm b_i$
求n回合后对怪物造成的最大伤害
数据范围:
$1 \le n \le 100$
$1\le a_i, b_i, c_i \le 10^9$
分析:
虽然比赛的时候想到了用DP来做也想到了逆序处理,但是一直不知道怎么定义状态。赛后看到题解,瞬间明白。
定义$DP[i][j][k]$,代表在$i$回合,攻击了$j$次,攻击的回合累加是$k$
注意:long long类型的数组不要大于$3\times 10^7$,会超空间
ac代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=110;
const int maxm=10000+10;
int a[maxn],b[maxn],c[maxn];
ll dp[2][maxn][maxm];
int main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=n;i>=1;i--)
scanf("%d %d %d",&a[i],&b[i],&c[i]);
for(int j=0;j<=n;j++)for(int k=0;k<=n*n;k++)dp[1][j][k]=-1e18;
dp[1][1][1]=a[1];
for(int i=2;i<=n;i++)
{
for(int j=0;j<=n;j++)for(int k=0;k<=n*n;k++)
dp[0][j][k]=dp[1][j][k],dp[1][j][k]=-1e18;
for(int j=0;j+1<=n;j++)
for(int k=0;k+i<=n*n;k++)
dp[1][j+1][k+i]=max(dp[1][j+1][k+i],dp[0][j][k]+a[i]);
for(int j=0;j<=n;j++)
for(int k=0;k<=n*n;k++)
dp[1][j][k]=max(dp[1][j][k],dp[0][j][k]+(ll)c[i]*j),
dp[1][j][k]=max(dp[1][j][k],(ll)(i*j-k)*b[i]+dp[0][j][k]);
}
ll ans=0;
for(int i=0;i<=n;i++)
for(int j=0;j<=n*n;j++)
ans=max(dp[1][i][j],ans);
printf("%lld\n",ans);
}
return 0;
}
2018-2019 ACM-ICPC, Asia East Continent Finals I. Misunderstood … Missing(dp)的更多相关文章
- 训练20191009 2018-2019 ACM-ICPC, Asia East Continent Finals
2018-2019 ACM-ICPC, Asia East Continent Finals 总体情况 本次训练共3小时20分钟,通过题数4. 解题报告 D. Deja vu of - Go Play ...
- 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp
QSC and Master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 2016 ACM/ICPC Asia Regional Shenyang Online 1007/HDU 5898 数位dp
odd-even number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- hdu 5868 2016 ACM/ICPC Asia Regional Dalian Online 1001 (burnside引理 polya定理)
Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K ...
- 2018-2019 ACM-ICPC, Asia East Continent Finals部分题解
C:显然每p2个数会有一个0循环,其中22 32 52 72的循环会在200个数中出现,找到p2循环的位置就可以知道首位在模p2意义下是多少,并且循环位置几乎是唯一的(对72不满足但可能的位置也很少) ...
- 2018-2019 ACM-ICPC, Asia East Continent Finals Solution
D. Deja vu of … Go Players 签. #include <bits/stdc++.h> using namespace std; int t, n, m; int m ...
- 2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)
Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...
- 2015 ACM/ICPC Asia Regional Changchun Online Pro 1002 Ponds(拓扑排序+并查集)
Ponds Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Sub ...
- ACM/ICPC 之 DFS求解欧拉通路路径(POJ2337)
判断是欧拉通路后,DFS简单剪枝求解字典序最小的欧拉通路路径 //Time:16Ms Memory:228K #include<iostream> #include<cstring& ...
随机推荐
- asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...
- kubernetes 存储卷
kubernetes 存储卷 数据卷用于实现容器持久化数据,Kubernetes对于数据卷重新定义,提供了丰富强大的功能.在Kubernetes系统中,当Pod重建的时候,数据卷会丢失,Kube ...
- Activity、Fragment、Dialog基类简单整理
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 这里简单记录下Activity.Fragment.Dialog基类中的常规写法,后续根据项目需求进行相应的扩展. BaseActiv ...
- 接口自动化:HttpClient + TestNG + Java(二) - 第一个接口测试:get请求
在上一篇中,我们搭建好了HttpClient + TestNG + Java的自动化接口测试环境,这一篇我们就赶紧开始编写我们的第一个接口测试用例. 本篇会对问题解决的思路进行更详尽的阐述. 2.1 ...
- Java 核心系列教程
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 关于Java核心技术学习积累的例子,是初学者及核心技术巩固的最 ...
- 使用 FFT 分析周期性数据
可以使用傅里叶变换来分析数据中的变化,例如一个时间段内的自然事件. 天文学家使用苏黎世太阳黑子相对数将几乎 300 年的太阳黑子的数量和大小制成表格.对大约 1700 至 2000 年间的苏黎世数绘图 ...
- Webpack系列-第三篇流程杂记
系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 本文章个人理解, 只是为了理清webpack流程, 没有关注内部过多细节 ...
- [转]How to: Create a Report Server Database (Reporting Services Configuration)
本文转自:https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms157300%28v%3dsql.10 ...
- 忘记Linux登录密码怎么办?
1.启动虚拟机,出现下面倒计时界面时,按e键.进入启动前编辑. 2.进入如下界面,再按e键. 3.进入如下页面后,选中第二项kernel开头的项,选中后再按e键. 4.进入如下界面后,在最后面输入空格 ...
- java--变量,常量,数据类型的声明及使用
一.概念: 变量是指内存中的一个存储区域,该区域要有自己的名称(变量名).类型(数据类型),该区域的数据可以在同一数据类型的范围内不断变化值: 二.变量的使用注意事项: 1.Java中的变量必须声明后 ...