Misunderstood … Missing

记忆深刻......打铁没做出来的题

题意 :

打怪,有 A 的攻击力,有 D 的成长,初始均为 0,有 n 轮。

同时有三个数组 a[1:n],b[1:n],c[1:n]

对于每一轮:

首先,攻击力永久性成长 A=A+D;然后,在下面三个选择中选择一种行为:

①、发起进攻,产生 A+ai的伤害。

②、增加成长 D=D+bi。

③、永久性增加攻击力 A=A+ci。问产生最大总伤害为多少

思路:

逆向DP,DP [ i ]代表的是从第i天到第n天产生的最大伤害,转移方程分析一下:
如果 这一天选择 ① 那么 对后面的影响是伤害增加 ai,选择②对后面影响的是攻击的那些天数伤害都增加 ( bi * (j-i))

选择③对后面的影响是,增加伤害为攻击的天数 * c[ i ],那么dp 需要增加两个变量 ,一个是方便计算选择②的情况

增加一个攻击了的天数下标和,另一个是 当前攻击的天数数目和,初始值为 dp[ n ] [ 1 ] [ n ] =  a [ n ] 详见代码:

#include<bits/stdc++.h>
using namespace std;
#define maxn 111
#define ll long long
ll t,n,a[maxn],b[maxn],c[maxn];
ll dp[3][maxn][maxn*maxn/2],ans;
int main()
{scanf("%lld",&t);while(t--){ans=0;memset(dp,0,sizeof(dp));scanf("%lld",&n);for(int i=1; i<=n; i++)scanf("%lld%lld%lld",&a[i],&b[i],&c[i]);dp[n&1][1][n]=a[n];for(int i=n-1; i>=1; i--){for(int j=1; j+i<=n; j++){int low = (i+i+j)*(j-1)/2+n;int up = (n+n-(j-1))*j/2;for(int k=low; k<=up; k++){dp[i&1][j+1][k+i]=max(dp[i&1][j+1][k+i],dp[(i+1)&1][j][k]+a[i]);dp[i&1][j][k]=max(dp[i&1][j][k],dp[(i+1)&1][j][k]+(k-j*i)*b[i]);dp[i&1][j][k]=max(dp[i&1][j][k],dp[(i+1)&1][j][k]+j*c[i]);}}}for(int j=1; j<=n; j++)for(int k=n; k<=5050; k++)ans=max(ans,dp[1][j][k]);printf("%lld\n",ans);}return 0;
}

  

 

转载于:https://www.cnblogs.com/SDUTNING/p/10260406.html

Misunderstood-Missing-逆向DP相关推荐

  1. [Ec Final 2018] Misunderstood … Missing

    题目描述: 我有两个基本属性 一个 A 表示每次攻击可以造成的伤害,D为每轮自动增加的攻击力(A D初始值都为0 每轮你有三种操作(任选一个 1:造成 A+ai 的伤害 2:给 D 增加 Bi 的数值 ...

  2. 174. 地下城游戏 逆向dp

    174. 地下城游戏 // // // 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿 // ...

  3. UOJ #390 【UNR #3】百鸽笼 容斥+DP

    题目分析 算法0 每个管理员选哪一列,将构成一个长度为 N − 1 N-1 N−1的序列,序列的种数可以通过经典的将 a a a个相同元素插入到一个没有该元素的长度为 b b b的序列里问题,轻松求出 ...

  4. 2018-2019 ACM-ICPC, Asia East Continent Finals题解

    以下所有AC题解程序来自"仙客传奇"团队. A. Exotic - Ancient City 题解链接: 2018 EC-Final 部分题解 (A,J) ABCDEFGIJKL ...

  5. Leetcode Proble 汇总四

    第一题: Permutations 分析:全排列问题,DFS即可. 代码: vector<int> visit; int size; vector<vector<int> ...

  6. 2021—10—31 上课笔记

    DP主要的核心就是对于每道题专属的状态转移方程 动态规划过程是: 每次决策依赖于当前状态,又随即引起状态的转移.一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为 ...

  7. 2018-2019 ACM-ICPC, Asia East Continent Finals

    2018-2019 ACM-ICPC, Asia East Continent Finals 在此附上吉老师的视频题解 Problem C:Heretical - Möbius 思路:根据莫比乌斯系数 ...

  8. 2018-2019 ACM-ICPC, Asia East Continent Finals D.F.I.L(VP)

    专业打假赛 VP情况略,不会的题单独补了 D.Deja vu of - Go Players 题目分析 签到题,直接判断n,mn,mn,m大小关系即可. Code #include <bits/ ...

  9. SP1026 FAVDICE - Favorite Dice

    题目描述 一个\(n(n \leq 1000)\)面的骰子,求期望掷几次能使得每一面都被掷到. 输入输出样例 输入样例#1: 2 1 12 输出样例#1: 1.00 37.24 思路:期望\(dp\) ...

最新文章

  1. 【Laravel学习篇 · 一】Windows下起步就遇麻烦
  2. Android中动态更新ListView
  3. Safair css hack
  4. java中true转换为int_在Java中将字节转换为int的最优雅的方式
  5. python——作用域 == is
  6. 战队不显示名字了_年仅17岁的新人选手!峡谷之巅1200分!被16家战队哄抢
  7. Sublime Text 3快捷键大全
  8. 2017全球超算峰会召开 联想以智能超算赋能AI时代
  9. 数库“SmarTag”数据体系正式登陆Factset另类数据市场
  10. xshell写JS脚本自动进行操作
  11. 网站图片如何批量下载教程
  12. ios-swift-环信集成
  13. 云空间插html音乐,【详细教程】如何在空间中引用网易云音乐
  14. android 清理工具,安卓清理君深度清理软件/真心强
  15. js禁止鼠标右键及F12禁止查看源代码
  16. 数据分析 # 深入分析近三年以来各大城市发展情况
  17. 论文阅读:Gradient Harmonized Single-stage Detector
  18. Intel MKL基础(4)MKL函数举例(BLAS and Sparse BLAS)
  19. 计算机组装 仿真交互,《计算机硬件组装》仿真交互系统设计与实现.doc
  20. pandas 常用的数学统计方法 mad()

热门文章

  1. CSDN-markdown编辑器使用方法
  2. [Android 插件化(二)] DroidPlugin 用法
  3. Android打包的那些事
  4. 【问链财经-区块链基础知识系列】 第四十七课 蚂蚁区块链的布局和打法
  5. JZOJ 3468. 【NOIP2013模拟联考7】OSU!(osu)
  6. JZOJ 5266. number
  7. matlab相关系数影像匹配_双目立体匹配步骤详解
  8. [USACO1.2]挤牛奶Milking Cows
  9. JZOJ__Day 9:【普及模拟】Square
  10. Codeforces 997E Good Subsegments (线段树)