zoukankan      html  css  js  c++  java
  • hdu 1205 吃糖果(抽屉原理)

    题意:N种糖果,不能把一样的放在一起吃,即第一次吃一种,下一次吃另一种。

    思路:找到个数最多的糖果种类(最大的数目记作 ma,该糖果种类记为a),首先把这n个糖果放到n个抽屉里面,然后把剩余的N-1种糖果往抽屉里面放。因为n是最大的数目,即剩余的N-1种糖果的放置过程中,每一种糖果都可以分别放到不同的抽屉里,也就是说,不会出现一个抽屉里有相同的糖果。 只要保证最多有一个抽屉只有一个a糖果即可。也就是说除了a糖果外,剩下的糖果总数要 >=ma-1。(吃的时候就好说了,一个抽屉一个抽屉的吃就可以了,吃的时候保证当前抽屉吃的最后一个不要与下一个抽屉的第一个相同即可。)

    于是也就得到满足条件的公式:sum-ma>=ma-1

    其中sum为总和,ma为数目最多那种糖果数目,

    代码:

     1 #include<iostream>
     2 #include<stdio.h>
     3 using namespace std;
     4 
     5 int main(){
     6     int T,N,Mi,ma;
     7     __int64 sum;
     8     scanf("%d",&T);
     9     while(T--){
    10         sum=0;
    11         ma=0;
    12         scanf("%d",&N);
    13         while(N--){
    14             scanf("%d",&Mi);
    15             sum=sum+Mi;
    16             if(Mi>ma)ma=Mi;
    17         }
    18         if(sum-ma>=ma-1)printf("Yes
    ");
    19         else printf("No
    ");
    20     }
    21     return 0;
    22 }
    View Code
  • 相关阅读:
    SpringBoot介绍
    linux运行jar以及vi
    linux文件命名
    数据库 mysql
    SSM框架-Spring
    SSM框架-mybatis
    SSM框架-SpringMVC
    设计模式-策略模式
    设计模式-单例模式
    Java多线程实现和JUC介绍
  • 原文地址:https://www.cnblogs.com/gongpixin/p/4552258.html
Copyright © 2011-2022 走看看