简化题意

从下到上有一排小鸡叠起来,他们的生命值依次为\(h_1,h_2,...,h_n\),现在史蒂夫要将他们消灭,史蒂夫每次可以选择任意一只小鸡进行挥刀,使它生命值\(-1\),如果这只小鸡的生命值为\(0\),它会消失,并且它上方的一叠小鸡会落在旁边(依然按照原先的顺序叠起来),此时最下方的小鸡会受到坠落高度的伤害,如果这只小鸡的生命值为\(0\),它会消失,并且它上方的一叠小鸡...
直到所有小鸡消失。

思路

1.每只小鸡最多受到跌落伤害一次。当它跌落后,它会位于底层。看了官方的题解后,我想到可以自顶向下的考虑,先考虑史蒂夫是否要把次顶端的小鸡砍死,使最顶端的小鸡受到最大跌落伤害,同时保留了它下面的小鸡的位置不变,这样可以使他们的跌落伤害最大化,在考虑次顶,...

2.考虑\(dp\),\(dp_i\)表示史蒂夫砍死\(1~i\)只小鸡所需要最小的挥刀数,每只小鸡有两种方式,要么受到最大跌落伤害,要么前面全部死亡后受到\(1\)点伤害,$$dp_0 = 0, dp_1 = h_1, dp_i = min(dp_{i-1} + h_i - 1, dp_{i-2} + h_{i-1} + max(0, h_i - (i - 1))$$

code

#include <bits/stdc++.h>
using namespace std; long long t, n, dp[200005], h[200005]; void solve(){
cin >> n;
for(int i = 1;i <= n;i++) cin >> h[i];
for(int i = 1;i <= n;i++) dp[i] = 1e18;
dp[0] = 0;
dp[1] = h[1];
for(long long i = 2;i <= n;i++){
dp[i] = min(dp[i - 1] + h[i] - 1, dp[i - 2] + h[i - 1] + max(0ll, h[i] - i + 1ll));
}
cout<<dp[n]<<'\n';
} int main()
{
cin >> t;
while(t--){
solve();
}
return 0;
}

2133D-Chicken Jockey的更多相关文章

  1. 读《你必须知道的.NET》继承本质论 Bird bird=new Chicken()

    我们创建如下的三层继承层次类. public abstract class Animal { public abstract void ShowType(); } public class Bird ...

  2. CodeForces 522C Chicken or Fish?

    Chicken or Fish? 题意比较难理解. 需要注意的是 就算某个人抱怨了 但是的t[i]也是他最后选择的结果. 题解: 首先考虑没有r[i] = 1的情况. 直接记录t[i]=0的数目,最后 ...

  3. 2019牛客暑期多校训练营(第十场)Coffee Chicken——递归

    题意 $S(1) = "COFFEE", S(2)="CHICKEN"$,$S(n) = S(n-2)+S(n-1)$,请输出 $S(n)$ 中从第 $k$ 个 ...

  4. Feeding Chicken

    D - Feeding Chicken 从左上角开始,往右下角开始遍历,但是遍历的时候需要注意一点,就是遍历的时候需要连起来,就比如第一行从左往右进行遍历,但是第二行不能从左往右了,因为这样就分开了, ...

  5. Coffee Chicken

    Coffee Chicken 字符串斐波那契 输出第s[n]个字符串的第k位及后十位 暴力算出前20项,超过20,跑dfs #include<bits/stdc++.h> using na ...

  6. 牛客多校第十场 B Coffee Chicken 递归

    题意: 给你一个“斐波那契”字符串数列,第n项由第n-1项和第n-2项拼接而成,输出某项的某位及其后10位. 题解: 递归求解即可. #include<bits/stdc++.h> usi ...

  7. 嵊州D5T1 鸡翅 chicken

    鸡翅  chicken [问题描述] 小 x 非常喜欢小鸡翅. 他得知 NSC 超市为了吸引顾客,举行了如下的活动: 一旦有顾客在其他超市找到更便宜的小鸡翅, NSC 超市将免费送给顾客 1000g ...

  8. [dfs] 2019牛客暑期多校训练营(第十场) Coffee Chicken

    题目地址: https://ac.nowcoder.com/acm/contest/890/B   时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 524288K,其他语言1048576 ...

  9. Codeforce 1255 Round #601 (Div. 2)D. Feeding Chicken (模拟)

    Long is a huge fan of CFC (Codeforces Fried Chicken). But the price of CFC is increasing, so he deci ...

  10. 2019牛客暑期多校训练营(第十场)B-Coffee Chicken

    >传送门< 题意:S(1)="COFFEE",S(2)="CHICKEN" ,S(n) = S(n−2)+S(n−1),请输出 S(n) 中从第 k ...

随机推荐

  1. CSP-S 2020模拟训练题1-信友队T2 挑战NPC

    题意简述 有一个\(k\)维空间,每维的跨度为\(L\),即每一维的坐标只能是\(0,1, \cdots ,L-1\).每一步你可以移动到任意一个曼哈顿距离到自己小于等于\(d\)的任意一个合法坐标. ...

  2. 稀疏数组(Golang版本)

    稀疏数组 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法: 记录数组一共有几行几列,有多少个不同的数值: 把具有不同值的元素的行数列数 ...

  3. java练习题之String字符串

    1 编写程序将"jdk" 全部变成大写  并输出到屏幕 截取"DK"并输出到屏幕 1 package com.lv.study.am.first; 2 3 pu ...

  4. Axios 禁用缓存

    Disable cache for Axios1. set headers.Cache-Control = 'no cache' // not work for 0.19.x or later?2. ...

  5. Java 集合框架底层数据结构实现深度解析

    Java 集合框架(Java Collections Framework, JCF)是支撑高效数据处理的核心组件,其底层数据结构的设计直接影响性能与适用场景.本文从线性集合.集合.映射三大体系出发,系 ...

  6. 袋鼠云数栈DTinsight与10家信创厂家完成产品兼容互认证,携手共建信创生态圈

    信创产业是国家数据安全.网络安全的基础,也是"新基建"的重要内容,它将成为拉动经济发展的重要抓手之一.随着国际竞争形势发生新的变化,力争掌握核心科技的"自主可控" ...

  7. windows vs使用grpc-cpp的坑

    1.通过vcpkg安装protoc和grpc-cpp 2.生成proto协议代码: protoc -I .. -I . --cpp_out=.  test.proto 3.生成grpc服务代码: pr ...

  8. vuepress自动生成侧边栏

    vuepress-theme-sidebar vuepress-theme-sidebar 一款用于vuepress2.x的自动生成导航栏的主题. 说明 仓库地址:https://github.com ...

  9. vue的seo

    我们知道,常规用 Vue/React 开发的是 SPA 应用. 但是天然的单页面应用 SEO 就是不好. 虽然说现在也有各种技术可以改善了,比如使用服务端渲染.静态页面生成,不过也存在各种缺点. 但是 ...

  10. SpringSecurity配置和源码解析

    1. 背景 Spring Security最主要的两个功能:认证和授权 功能 解决的问题 Spring Security中主要类 认证(Authentication) 你是谁 Authenticati ...