逃跑

jzoj 1748

题目大意

你有一个能量值l,在接下来的n天里,你每天有两个选择:
1、增加l个食物
2、使l加一,
你第i天要吃ai个a_i个ai​个食物,如果吃不到就会死掉,现在问你n天后你能活下去吗,如果能那最多剩多少个食物?(有t组数据)

输入样例

1
5 2
1 1 1 4 2

输出样例

2

样例解释

一个可行的最优方案如下:
第一天制造2个单位的食物,第二天把l升级到3,后面三天各制造3个单位的食物。
最后得到2+3+3+3-1-1-1-4-2=2单位的食物。

数据范围

对于30%的数据,1⩽n⩽20,1\leqslant n\leqslant 20,1⩽n⩽20,且测试点中只有一组数据;
另外40%的数据,1⩽n⩽1000。1\leqslant n\leqslant 1000。1⩽n⩽1000。
对于100%的数据,1⩽n⩽100000,0⩽L,Ai⩽109。1\leqslant n\leqslant 100000,0\leqslant L,Ai\leqslant 10^9。1⩽n⩽100000,0⩽L,Ai⩽109。

解题思路

我们可以如果当前是第i天,增加l的奉献是n−in-in−i,即接下来n−in-in−i天能量多1
当l大于n−ln-ln−l时我们就不考虑加l了
那如果当前天不够食物,我们就要撤回之前的加l改为加食物,因为加l的奉献到当前状态还不一定会大于加食物的奉献(详情见代码)

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
ll t, n, l, x, add, sum, a[100500];//a存某一次加l的时间
int main()
{scanf("%lld", &t);while(t--){sum = 0;//sum就是还剩多少食物add = 0;//add就是加了多少次lscanf("%lld %lld", &n, &l);for (int i = 1; i <= n && sum != -1; ++i){scanf("%lld", &x);if (sum < x)//食物不够{sum += add + l;//当前天造食物while(sum < x && add > 0 && (add + l - 1) > i - a[add])//不够且还能再撤回,以及撤回这个加的是否大于对后面造成的负影响,-1是因为add少了1{sum = sum + add + l - 1 - (i - a[add]);//奉献以及负影响add--;}if (sum < x) sum = -1;//还不够else sum -= x;//够了}else{if (n - i > add + l) a[++add] = i;//有奉献else sum += add + l;//无奉献sum -= x;//减所需食物}}printf("%lld\n", sum);}return 0;
}

【贪心】逃跑(jzoj 1748)相关推荐

  1. 【长更】一句话题解(各大oj)

      太简单的题,但是又要记录下来做过哪些东西,就写在这里啦~   早搞不搞,等到快退役了才来搞   标 * 的为有价值的题,标 ^ 的为欺诈题,标 - 的为知识点待填坑,标 ? 的表示看别人是这样做的 ...

  2. JZOJ 5461 购物 —— 贪心

    题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...

  3. 【并查集】【最小生成树】【贪心】给水(jzoj 2015)

    给水 jzoj 2015 题目大意: 有n个草地,可以在某些草地各安装一个水井,代价是aia_iai​,或者从别的草地运水过来,代价是pijp_{ij}pij​,现在问要让所有草地都有水,代价最少是多 ...

  4. 【贪心】失意(jzoj 2318)

    失意 jzoj 2318 题目大意: 在x轴上给出n条线段,让你选m条线段,使他们的相交部分尽量大 输入样例: 4 6 3 3 8 4 12 2 6 1 10 5 9 11 12 输出样例: 4 1 ...

  5. [二分][贪心]JZOJ P3996 Sabotage

    Description FJ 的死对头,FP,现在决定了去破坏FJ 的挤奶设备! 这个挤奶设备由一行N(3 <= N<= 100, 000)个挤奶机器,其中第i 个机器生产Mi 单位的牛奶 ...

  6. 【jzoj 4727】【NOIP2015模拟10.28B组】终章-剑之魂 {贪心}

    题目 Description [背景介绍] 古堡,暗鸦,斜阳,和深渊-- 等了三年,我独自一人,终于来到了这里-- "终焉的试炼吗?就在这里吗?"我自言自语道. "终焉的 ...

  7. [jzoj 1285] 奶酪厂 {贪心}

    题目 Description 奶牛买了一个奶酪厂生产奶酪,已知每周生产一单位奶酪的费用为C_i,每周可以生产任意数量的奶酪,现在要为接下来N(1<=N<=10,000)周做生产计划. 厂里 ...

  8. [jzoj 4249] 【五校联考7day1】游戏 {贪心/斜率优化}

    题目 Description WYF从小就爱乱顶,但是顶是会造成位移的.他之前水平有限,每次只能顶出k的位移,也就是从一个整点顶到另一个整点上.我们现在将之简化到数轴上,即从 一个整点可以顶到与自己相 ...

  9. Jzoj P5937 斩杀计划___枚举+贪心

    题目大意: 小 G G G有 n n n个人,第 i i i个人有 a i a_i ai​点攻击力,小 K K K有 m m m点血量. 你可以进行以下 3 3 3种操作: ①复用型药水:花费 1 1 ...

最新文章

  1. Cannot create a session after the response has been committed的处理
  2. 白话:服务降级与熔断的区别
  3. Linux grep 命令初步学习
  4. 移动网络安全不容忽视 对恶意程序打好防范补丁
  5. MYSQL limit,offset 区别
  6. 3520a SDL_tff库做bmp 也就是osd
  7. nagios(系统监控)
  8. MAC 安装jenkins
  9. 计算机系统化科学化和什么,自动化概论复习资料
  10. Please ensure that adb is correctly located at……问题解决方案
  11. BugkuCTF-MISC题猫片
  12. mysql事件不定时执行_Mysql 中的事件//定时任务
  13. 程序员的脑回路太清奇,就一件衣服跟我叨叨半天
  14. mysql 跨数据库联表查询
  15. 钢材规格解读的软件_钢结构常用设计软件的总结与分析
  16. 给大忙人看的码农翻身记
  17. 综合概括-中国制造 2025
  18. 自尊者人必尊之,自贱者人必贱之!
  19. 推荐5个神仙软件,个个让你爱不释手
  20. Elasticsearch-7.8.0源码编译

热门文章

  1. php查询类似abab,ABAB中的正则表达式匹配编号(必须相同) - php
  2. 错误代码1500什么意思_啊早安打工人是什么梗???
  3. 怎样用python批量处理文件夹_python批量处理文件或文件夹
  4. 算法设计与分析——动态规划——最大字段和问题
  5. leetcote34. 在排序数组中查找元素的第一个和最后一个位置
  6. 了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
  7. [设计模式]适配器模式
  8. hdu1873 看病要排队-优先队列
  9. 高等数学上-赵立军-北京大学出版社-题解-练习5.8
  10. 哈希表-拉链法及应用举例