zoukankan      html  css  js  c++  java
  • 洛谷——P3817 小A的糖果

     https://www.luogu.org/problem/show?pid=3817

    题目描述

    小A有N个糖果盒,第i个盒中有a[i]颗糖果。

    小A每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中加起来都只有x颗或以下的糖果,至少得吃掉几颗糖。

    输入输出格式

    输入格式:

    第一行输入N和x。

    第二行N个整数,为a[i]。

    输出格式:

    至少要吃掉的糖果数量。

    输入输出样例

    输入样例#1:
    3 3
    2 2 2
    输出样例#1:
    1
    
    
    输入样例#2:
    6 1
    1 6 1 2 0 4
    输出样例#2:
    11
    输入样例#3:
    5 9
    3 1 4 1 5
    输出样例#3:
    0
    

    说明

    样例解释1

    吃掉第二盒中的糖果。

    样例解释2

    第二盒吃掉6颗,第四盒吃掉2颗,第六盒吃掉3颗。

    30%的测试数据,2<=N<=20,0<=a[i], x<=100

    70%的测试数据,2<=N<=1000,0<=a[i], x<=10^5

    100%的测试数据,2<=N<=10^5,0<=a[i], x<=10^9

    贪心,注意long long 不开80.。

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 const int N(1e5+15);
     7 long long n,x,a[N],ans;
     8 
     9 void read(long long &x)
    10 {
    11     int ch=getchar();x=0;
    12     for(;ch<'0'||ch>'9';) ch=getchar();
    13     for(;ch>='0'&&ch<='9';ch=getchar())
    14         x=ch-'0'+x*10; 
    15 }
    16 
    17 int main()
    18 {
    19     read(n); read(x);
    20     for(long long i=1;i<=n;i++) read(a[i]);
    21     for(long long i=1;i<n;i++)
    22     {
    23         long long temp=a[i]+a[i+1];
    24         if(temp<=x) continue;
    25         ans+=temp-x;a[i+1]-=temp-x;
    26     }
    27     printf("%lld",ans);
    28     return 0;
    29 }
    AC
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    第二次冲刺阶段第九天
    第二次冲刺阶段第八天
    第二次冲刺阶段第七天
    学习进度条(十三)
    第二次冲刺阶段第六天
    团队冲刺(二)个人工作总结3
    学习进度表第十四周
    团队冲刺(二)个人工作总结2
    团队冲刺(二)个人工作总结1
    买书折扣问题
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7105079.html
Copyright © 2011-2022 走看看