n个怪物围成一圈,每个怪物有自己的血量和爆炸伤害。
怪物在死后会对下一个怪物造成爆炸伤害,又死了又可以爆炸......
你每发子弹可以对怪物造成1点伤害,求杀死所有怪物的最小子弹数。

传送门

\(\color{Red}{---------------------华丽分割线w(゚Д゚)w------------------------}\)

\(其实嘛,看到题目束手无策,但是看到数据范围会发现是个O(n)算法,那我们要开始找规律了。\)

\(首先还是想最坏情况,每个怪物都用子弹打,答案是所有怪物的血量和。\)

那么我们得出一个很沙雕但很重要的结论:尽可能利用爆炸伤害

\(爆炸伤害在最优时是每个怪物都炸下一个怪物,这样爆炸伤害和就是\)

\[\sum_{i=1}^{n-1}{min(本怪物爆炸伤害,下一个怪物血量)}+min(最后一个怪物爆炸伤害,第一怪物血量)
\]

但是这个伤害是打不出来的,因为我们需要一个起始点 。

很明显我们取一个爆炸伤害对自己炸的血量最少的怪物为起点,这样其余所有爆炸伤害都可以打出来。

\(答案是sum(怪物血量和)-sum(爆炸伤害)+(爆炸贡献最小的一次爆炸伤害)\)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=300009;
ll t,n,a[maxn],b[maxn],c[maxn],explore,sumn,minn=1e18;
int main()
{
cin>>t;
while(t--)
{
minn=1e18,sumn=0,explore=0;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&a[i],&b[i]);
sumn+=a[i];
}
for(int i=1;i<=n-1;i++)
{
c[i]=min(b[i],a[i+1]),explore+=c[i];
minn=min(minn,c[i]);
}
c[n]=min(b[n],a[1]);
minn=min(minn,c[n]);
explore+=c[n];
cout<<sumn-explore+minn<<endl;
}
}

Circle of Monsters(贪心)的更多相关文章

  1. Codeforces - 102222H - Fight Against Monsters - 贪心

    https://codeforc.es/gym/102222/problem/H 题意:有一堆怪兽,怪兽有HP和ATK.你有一个英雄,英雄每次先被所有怪兽打,然后打其中一个怪兽.打的伤害递增,第一次1 ...

  2. Codeforces Educational Rounds 85 A~C

    A:Level Statistics 题意:统计n个游戏数据,p代表游玩次数,c代表通关次数,每次游玩都不一定通关,求这些数据是否合法 题解:1.游玩次数不能小于通关次数   2.游玩次数和通关次数必 ...

  3. Educational Codeforces Round 85 (Rated for Div. 2)

    \(Educational\ Codeforces\ Round\ 85\ (Rated\ for\ Div.2)\) \(A. Level Statistics\) 每天都可能会有人玩游戏,同时一部 ...

  4. Educational Codeforces Round 85 (Div. 2)

    题目链接:https://codeforces.com/contest/1334 A. Level Statistics 题意 一个关卡有玩家的尝试次数和通关次数,按时间顺序给出一个玩家 $n$ 个时 ...

  5. Codeforces #617 (Div. 3) D. Fight with Monsters(贪心,排序)

    There are nn monsters standing in a row numbered from 11 to nn . The ii -th monster has hihi health ...

  6. 2018 ACM-ICPC 宁夏 H.Fight Against Monsters(贪心)

    It is my great honour to introduce myself to you here. My name is Aloysius Benjy Cobweb Dartagnan Eg ...

  7. Gym - 101670H Dark Ride with Monsters(CTU Open Contest 2017 贪心)

    题目: A narrow gauge train drives the visitors through the sequence of chambers in the Dark Ride attra ...

  8. Fight Against Monsters Gym - 102222H【贪心】

    贪心的策略 #include <bits/stdc++.h> using namespace std; ; typedef long long ll; struct m { int hp, ...

  9. Codeforces - 1189B - Number Circle - 贪心

    https://codeforc.es/contest/1189/problem/B 优先考虑最大的元素怎么构造.拿两个次大的围着他就很好,但是其他的怎么安排呢?就直接降序排列就可以了. a数组还开错 ...

随机推荐

  1. AJ学IOS(29)UI之Quartz2D自定义下载控件_画各种图形

    AJ分享,必须精品 效果 自定义控件过程 主要过程在上一篇里有介绍了,这里主要介绍下代码实现 先做好要放的view 然后实现呢主要就是四步: 1:获取上下文 2:拼接路径 3:把路径添加到上下文. 4 ...

  2. 【半监督学习】MixMatch、UDA、ReMixMatch、FixMatch

    半监督学习(Semi-Supervised Learning,SSL)的 SOTA 一次次被 Google 刷新,从 MixMatch 开始,到同期的 UDA.ReMixMatch,再到 2020 年 ...

  3. 03-css3中的3D转换

    一.CSS3-3D转换 1.3D 特点:近大远小,物体和面遮挡不可见 1.1三维坐标系 x 轴:水平向右 -- x 轴右边是正值,左边是负值 y 轴:垂直向下 -- y 轴下面是正值,上面是负值 z ...

  4. Python列表介绍,最常用的Python数据类型

    文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:数据杂论 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获 ...

  5. 抠脚大叔如何改变性别,Python实现变声器功能

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 乔柯 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  6. stand up meeting 1/11/2016

    part 组员                工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云 跑通打印机功能,尝试与pdf读取部分结合;生词本卡片选择简略释义 ...

  7. stand up meeting 12/23/2015

    part 组员                工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云  基本完成单词本显示页面的设计和实现    4 完善页面切换   ...

  8. Spring5:控制反转

    二.Spring IOC控制反转 1:IOC推导 >传统业务调用编程 定义一个userDao接口:UserDao package com.spring; public interface Use ...

  9. api接口安全

    API接口安全 在做app开发中,如何保证api的接口安全,不被其他app去调用? 接口安全的措施很多,今天记录一个常用的措施 签名: 前台想要调用接口,需要使用几个参数生成签名: 时间戳:当前时间 ...

  10. 苹果登录服务端JWT算法验证-PHP

    验证参数 可用的验证参数有 userID.authorizationCode.identityToken,需要iOS客户端传过来 验证方式 苹果登录验证可以选择两种验证方式 具体可参考这篇文章 htt ...