• CF1334C Circle of Monsters(贪心)


    首先我们发现打的顺序一定是连续的,不然会浪费一次爆炸的机会,比如我打了x 不可能去打 x-1,因为这样x-1的爆炸用不到甚至有可能x-1不会被别的爆炸影响

    比如我打了x 不可能直接打 x+2,因为这样x+1的位置最后一定要打但是他打完的爆炸就用不到了

    因此我们枚举第一次打的位置,然后计算其他剩下的被i-1影响后的生命值剩下多少

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cstdio>
    #include<map>
    #include<string>
    #include<vector>
    using namespace std;
    typedef long long ll;
    const int N=1e6+10;
    ll a[N],b[N],s[N];
    ll res[N];
    int main(){
        int t;
        cin>>t;
        while(t--){
            int n;
            cin>>n;
            int i;
            for(i=1;i<=n;i++){
                scanf("%lld%lld",&a[i],&b[i]);
            }
            ll sum=0;
            for(i=1;i<=n;i++){
                if(i==1){
                    res[i]=a[i]-b[n];
                }
                else{
                    res[i]=a[i]-b[i-1];
                }
                if(res[i]>0)
                    sum+=res[i];
            }
            ll ans=1e18;
            for(i=1;i<=n;i++){
                ans=min(ans,sum-max(res[i],0ll)+a[i]);
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    View Code
    没有人不辛苦,只有人不喊疼
  • 相关阅读:
    appcan封装好的ajax,解决onDATA覆盖问题
    待研究
    mysql主从实验
    jQuery动态加载JS以减少服务器压力
    HTTP协议详解
    企业站收藏
    Linux查看程序端口占用情况
    大流量网站优化
    营销类网站
    Nginx (简体中文)
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/12730726.html
Copyright © 2020-2023  润新知