Vijos1617 超级教主

传送门@百度。。

背景

Orz4-3 jump

描述

LHX教主很能跳,因为Orz他的人太多了。教主跳需要消耗能量,每跳1米就会消耗1点能量,如果教主有很多能量就能跳很高。

教主为了收集能量,来到了一个神秘的地方,这个地方凡人是进不来的。在这里,教主的正上方每100米处就有一个能量球(也就是这些能量球位于海拔 100,200,300……米处),每个能量球所能提供的能量是不同的,一共有N个能量球(也就是最后一个能量球在N×100米处)。教主为了想收集能 量,想跳着吃完所有的能量球。教主可以自由控制他每次跳的高度,接着他跳起把这个高度以下的能量球都吃了,他便能获得能量球内的能量,接着吃到的能量球消 失。教主不会轻功,教主不会二段跳,所以教主不能因新吃到的能量而变化此次跳跃的高度。并且教主还是生活在地球上的,所以教主每次跳完都会掉下来。

问教主若要吃完所有的能量球,最多还能保留多少能量。

格式

输入格式

第1行包含两个正整数N,M,表示了能量球的个数和LHX教主的初始能量。

第2行包含N个非负整数,从左到右第I个数字依次从下向上描述了位于I×100米位置能量球包含的能量,整数之间用空格隔开。

输出格式

仅包括一个非负整数,为教主吃完所有能量球后最多保留的能量。

样例1

样例输入1[复制]

3 200
200 200 200

样例输出1[复制]

400

限制

对于10%的数据,有N≤10;
对于20%的数据,有N≤100;
对于40%的数据,有N≤1000;
对于70%的数据,有N≤100000;
对于100%的数据,有N≤2000000。

保证对于所有数据,教主都能吃到所有的能量球,并且能量球包含的能量之和不超过2^31-1。

时限1s。

提示

第1次跳100米,得到200能量,消耗100能量,所以落地后拥有300能量。

第2次跳300米,吃到剩下的第3棵能量球,消耗拥有的300能量,得到400能量。

若第1次跳200米,第2次跳300米,最后剩余300能量。

这些天一直没做题。。感觉状态真是不能更逗比。

单调队列的裸题

#include<set>
#include<queue>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 2000010;
#define Rep(i,n) for(int i=1;i<=n;i++)
#define For(i,l,r) for(int i=l;i<=r;i++)

int A[N],sum[N],n,m,q[N],dp[N];

int main(){
    scanf("%d%d",&n,&m);
    Rep(i,n){
        scanf("%d",&A[i]);
        sum[i]+=sum[i-1]+A[i];
    }
    dp[0]=m;
    int Left=0,Right=0;
    Rep(i,n){
        while(Left<Right&&dp[i-1]-sum[i-1]>dp[q[Right-1]]-sum[q[Right-1]]) Right--;
        q[Right++]=i-1;
        dp[i]=dp[q[Left]]+sum[i]-sum[q[Left]]-i*100;
        while(Left<Right&&dp[q[Left]]-(i+1)*100<0) Left++;
    }
    printf("%d\n",dp[n]);
    return 0;
}
时间: 2024-10-11 04:45:50

Vijos1617 超级教主的相关文章

[Vijos1617] 超级教主(DP + 单调队列)

传送门 设 f[i] 表示吃完 f[i] 及其以下的能量球后所剩下的能量. 所以 f[i] = max(f[i], f[j] + (sum[i] - sum[j]) - i * 100) ( 0 <= j < i ) 但这是 O(n2) 的,肯定超时, 把上面的式子变换以下得到 f[i] = max(f[i], (f[j] - sum[j]) + sum[i] - i * 100) ( 0 <= j < i ) 也就是说,f[i] 只与 f[j] - sum[j] 有关,sum[i

FJUT ACM 2396 超级教主

Problem Description 教主很能跳,因为Orz他的人太多了.教主跳需要消耗能量,每跳1米就会消耗1点能量,如果教主有很多能量就能跳很高. 教主为了收集能量,来到了一个神秘的地方,这个地方凡人是进不来的.在这里,教主的正上方每100米处就有一个能量球(也就是这些能量球位于海拔100,200,300--米处),每个能量球所能提供的能量是不同的,一共有N个能量球(也就是最后一个能量球在N×100米处).教主为了想收集能量,想跳着吃完所有的能量球.教主可以自由控制他每次跳的高度,接着他跳

手机撕逼大战:凤姐VS周教主 周教主被击中要害 完败!

近日,凤姐在其微博上写了一篇文章<我为什么不做手机>,解释她为什么不进军手机届.在文章里提到:不管是教书的.唱歌的,还是演戏的都跳出来做手机,一堆牌子. 其中,她在文中还提及了最近周鸿祎周教主所推出的全球首款千元指纹机,对此凤姐直接表示:“全球首款”.“世界先列”这些字眼跟“宇宙超级无敌”一样,看了就直接呵呵吧,而且指出在周教主推出这款千元指纹手机之前,一家叫小辣椒的公司就已经推出了更便宜的指纹手机. 面对凤姐暗指周教主欺骗消费者的指控,周教主立刻回应:姐姐不做手机,是对中国手机界最大的尊重.

超级搬运工

前我们往屏幕输出了一个Hello,费了老大的劲.有没有什么更简单的方法呢?当然有啦. 我们把所有的文字对应的Ascll码统一放到一块内存里面.再把这些东西统一搬进去显存里面. mov cx,10ES:B800DI:0 DS:07C0SI:8 rep movsb byte ptr [ES:DI],byte ptr [DS:SI] 超级搬运工:1.要搬的东西的在哪里.2.把东西搬到哪里去.3.每一次可以搬多少东西,需要搬多少次.4.从上往下搬,还是从下往上搬. movsb  32位  16位 8位寄

noi Big String 超级字符串

//来自2017青岛信息竞赛第一题 9269:Big String超级字符串 查看 提交 统计 提问 总时间限制:  10000ms 单个测试点时间限制:  1000ms 内存限制:  131072kB 描述 fish在无数次oi竞赛的狱炼之后,悟出一个真理,往往越容易的题目,陷阱越深.由此,fish创作了这道题目. fish首先给出两个短串A='4567' (4个字符), B='123'(3个字符).反复进行如下的操作得到一个长串C. (1)C=B+A (例如:A='4567' ,B='123

【No.2 Ionic】超级逗表情 App

本人使用Ionic框架开发了一个 超级逗表情 的App 依赖插件 cordova-plugin-app-version 0.1.9 "AppVersion" cordova-plugin-file 4.3.0 "File" cordova-plugin-file-opener2 2.0.2 "File Opener2" cordova-plugin-file-transfer 1.6.0 "File Transfer" cor

Win7下超级管理员创建普通权限任务

已转至新的博客 http://www.raysoftware点击打开链接.cn/?p=49 项目中用到一个功能,Win7下超级管理员创建普通权限任务. 试了几种办法,例如获取资源管理器的Token,然后以这个Token用CreateProcessWithTokenW创建任务.这样做是可以的. 但是如果当前没有资源管理器或者其他普通权限的任务怎么办?CreateToken自己构造一个Token也可以,但是那些参数看了就头大. 试了一下以超级用户方式启动任务管理器用菜单中的运行,居然是默认创建普通权

hdu 1226 超级密码

超级密码 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3110    Accepted Submission(s): 1006 Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息: 密码是一个C进制

超级电容v1.1

超级电容储能线路评估 负责人:张强 合伙人:李晓爽 员工:李静.王可心 项目分工: 1.张强:分析低成本.高效率.小体积的优势占据市场:把研究过程讨论论证结果,发布到博客上. 2.李晓爽:对超级电容储能线路做出最大的风险和不足的评估:做出简历和创业的意见. 3.李静:对其他储能方式比较的最大风险做分析;分析产业链最有可能的突破方式和公司估计. 4.王可心:设计前沿动态网站和机构地址:分析距离大规模产业化还有多远. 摘要: 北京合众汇能科技有限公司是一家从事先进能源技术和产品的研发.生产与销售的高