题目链接:点击查看

题目大意:给出一个有顺序的环形敌人序列,每个敌人有两个属性,分别记为 a 和 b ,a 为 该敌人的血量,需要相应的子弹数量才能击败,当敌人 i 被击败后,他会爆炸,对第 i + 1 名敌人造成 b[ i ] 的伤害,问至少需要用多少子弹才能将敌人都消灭

题目分析:因为 b 都是大于 0 的数,所以最优解肯定是先挑选一个敌人开始,然后按照顺序依次击杀,不难看出这样是最优的,那么找出第一个击杀的敌人成了这个题的突破口,我的第一反应是找到 a[ i ] 的最小值入手,但不幸的是这样做并不对,后来看到了数据范围给了提示,就恍然大悟了,想一下为什么 a 和 b 的数值都给到了 1e12 ,而不是正常的 1e9 或 1e5 呢,显然是需要进行某种操作,而不能超过 1e18 ,这相差了不到 1e6 的量级恰好就和敌人的数量 n 对应了起来,所以数据范围提示我们需要维护一个前缀和,这样一想我们因为只是第一个敌人的选择不一样,所以可以一层循环枚举起点然后维护最小值作为答案

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=3e5+100;LL a[N],b[N],c[N];int main()
{
#ifndef ONLINE_JUDGE
//  freopen("input.txt","r",stdin);
//  freopen("output.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%lld%lld",a+i,b+i);LL sum=0;for(int i=1;i<=n;i++)//敌人受到爆炸后的剩余血量记为数组 c {if(i==1)c[i]=a[1]-b[n];elsec[i]=a[i]-b[i-1];if(c[i]<0)c[i]=0;sum+=c[i];}LL ans=0x3f3f3f3f3f3f3f3f;for(int i=1;i<=n;i++)ans=min(ans,sum-c[i]+a[i]);printf("%lld\n",ans);}return 0;
}

CodeForces - 1334C Circle of Monsters(贪心)相关推荐

  1. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  2. Codeforces Round #655 (Div. 2) D. Omkar and Circle 思维 + 奇偶贪心

    传送门 题意: 给一个长为nnn的数组(nnn为奇数),iii与i−1i-1i−1相邻,111与nnn相邻,每次选择一个位置,将这个位置的值变成与它相邻的两个位置的和,让后将相邻位置删掉.求最终剩下一 ...

  3. Codeforces 1334 C. Circle of Monsters

    题意: n n n 只怪物围成一圈,每只怪物拥有体力 a a a 和爆炸伤害 b b b 如果怪物 i i i 死亡,则与他相邻的下一只怪物将受到 b i b_i bi​ 点伤害,每次你能随便挑一只怪 ...

  4. Codeforces 671E Organizing a Race (贪心、线段树)

    题目链接 https://codeforces.com/contest/671/problem/E 题解 完全不会做--基本是抄lk的代码 ruogu的题解: https://www.luogu.co ...

  5. CodeForces - 1529E Trees of Tranquillity(贪心+线段树)

    题目链接:https://vjudge.net/problem/CodeForces-1529E 题目大意:给出两棵根节点为 111 的树,分别称为 AAA 树和 BBB 树,现在通过两棵树可以构造出 ...

  6. [CodeForces 1603C] Extreme Extension(贪心 + 数论分块优化dp)

    problem CodeForces solution observation1:\text{observation1}:observation1: 对于一个非空子段 [l,r][l,r][l,r], ...

  7. codeforces 416C C. Booking System(贪心)

    题目链接: codeforces 416C 题目大意: 给出n个请求,每个请求包括客人数量和支付金额,再给出m个桌子,包括桌子大小,问如何安排才能最大盈利.给出最大盈利和一个能够最大盈利的方案. 题目 ...

  8. Codeforces 540B School Marks 【贪心构造】

    题目链接:Codeforces 540B School Marks Little Vova studies programming in an elite school. Vova and his c ...

  9. CodeForces 508E Arthur and Brackets 贪心

    题目: E. Arthur and Brackets time limit per test 2 seconds memory limit per test 128 megabytes input s ...

最新文章

  1. Don’t Use the Win32 API PostThreadMessage() to Post Messages to UI Threads(翻译)
  2. 阿里云容器化GPU共享服务已开放!性能无损失,对你的环境无侵入,真正实现AI降本增效...
  3. Eclipse MyEclipse下常用快捷键介绍
  4. spark streaming 入门例子
  5. 变频器lpm故障码是什么_什么是变频器软故障,如何解决?
  6. Python 日期和时间戳的转换
  7. 一文读懂平衡二叉树 | 技术头条
  8. 强悍的 vim —— g s 替换区别
  9. redis lettuce 超时_Spring Cache 操作 Redis 实现数据缓存(上)
  10. 6年经验java笔试_不想搞Java了,6年经验去面试10分钟结束,现在Java面试为这么难...
  11. 计算机不显示用户组密码设置,手把手教你设置win10系统开机时跳过锁屏画面直接显示密码框登录界面-系统操作与应用 -亦是美网络...
  12. android 电源管理 和 Doze 模式
  13. python单元测试mock_Python单元测试mock,获取mocked函数的输入参数
  14. 2022蓝桥杯A组Python
  15. 2019年3月5日-MPU9250使用(二)
  16. QQ空间首页模仿制作——HTML布局练习
  17. 个人计算机专业报告,计算机专业个人实习报告
  18. 新版谷歌眼镜专利曝光:终于像普通眼镜了
  19. 影刀RPA自动化学习和部分问题解决方式
  20. [相机配置] 海康相机丢包配置环境

热门文章

  1. linux mysql UNSIGNED,关于mysql:MySqlint10-与-int-unsigned-之前的区别
  2. mysql 5.5.15_mysql5.5.15配置主从数据库
  3. MySQL通过安装包提供的卸载功能卸载
  4. SpringSecurity分布式整合之jwt和rsa说明
  5. 简单了解各种序列化技术-Avro序列化
  6. Actuator对于JMX支持
  7. MapReduce-流量统计求和-排序-JobMain代码和测试运行
  8. 网页加载的不同的方式、点击按钮显示一句话、jQuery中获取元素的方法
  9. 微型计算机具有什么等特点,微机原理 课后题 标准答案
  10. 用oracle怎么测试,oracle – 如何(单位)测试数据密集的PL / SQL应用程序