• 贪心-恰糖果


    题目链接:https://www.luogu.com.cn/problem/P3817
    分析有错欢迎集美们指出。
    题目:
    有n个糖果盒,第 i个盒中有 ai颗糖果。每次可以从其中一盒糖果中吃掉一颗,想知道,要让任意两个相邻的盒子中糖的个数之和都不大于x,请问至少需要吃掉几颗糖果。
    输入格式:
    第一行输入两个数字,用空格隔开,分别代表糖果盒的个数n和给定的参数x;
    第二行有n个用空格隔开的整数,第i个整数代表第i个盒子糖果数目ai;
    输出格式:
    输出一行一个整数,代表最少要吃掉的糖果数目。

    输入样例1:
    3 3
    2 2 2
    输出样例1:
    1

    输入样例2:
    6 1
    1 6 1 2 0 4
    输出样例2:
    11

    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		int a=in.nextInt();
    		int x=in.nextInt();
    		long sum=0;
    		int []aa=new int [100002];
    		for(int i=1;i<=a;i++)
    		{
    			aa[i]=in.nextInt();
    		}
    		for(int i=1;i<=a;i++)
    		{
    			if(aa[i]+aa[i+1]>x)
    			{
    				sum+=aa[i+1]-x+aa[i];
    				aa[i+1]=x-aa[i];
    			}
    		}
    		System.out.println(sum);
    	}
    
    }
    

    自己的思考:
    1.因为要求的是最少数目,而且是不大于x,所以我们就可以把当前盒子里面的糖果吃到剩余数量就为x(小心长蛀牙哟,嘿嘿嘿);
    2.同时还要面临吃前一盒呢还是后面一盒呢(或者吃当前这一盒还是后一盒呢,这个说法就要看自己囊凯定义了);
    比如:
    5 6
    4 5 3 6 2
    6
    如果我们先吃前一盒,吃掉四个,第二盒就只需要吃掉两个,可是第三盒改囊们整呢?所以到底该怎样选择才是最好的选择,看下面的图就知晓了:

    x=6

    作者:Better又
    出处:https://www.cnblogs.com/lwyy1223-/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    GUI 监听事件 (两个按钮,实现同一个监听)
    GUI 监听事件
    GUI 练习
    GUI 之表格布局
    GUI 之边界布局
    GUI 之流布局
    [转帖]Linux 下解压 rar 文件
    Linux 启动、停止、重启jar包脚本
    关于linux下,ls vi等命令失效的解决方法(配置下环境变量出现问题)
    超好用的UnixLinux 命令技巧 大神为你详细解读
  • 原文地址:https://www.cnblogs.com/lwyy1223-/p/12737256.html
Copyright © 2020-2023  润新知