zoukankan      html  css  js  c++  java
  • Codeforces Round #273 (Div. 2)

    A. Initial Bet

    题意:给出5个数,判断它们的和是否为5的倍数,注意和为0的情况

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 
    10 
    11 int main()
    12 {
    13     int i,x,sum=0;
    14     for(i=1;i<=5;i++){
    15         cin>>x;
    16         sum+=x;
    17     }
    18     if(sum%5==0&&sum!=0) printf("%d
    ",sum/5);
    19     else printf("-1
    ");
    20     return 0;    
    21 }
    View Code

    补------------------------------------------

    B. Random Teams

    题意:给出n个人,需要分成m个组,称分到同一组里的任意两个人为一队 求最小的对数,最大的对数。

    首先好考虑的是最大对数,让人尽量集中在一起, 即为前m-1组全为1个人,最后一组为n-(m-1)个人

    然后是最小的对数,与最大相反,应该让人数尽量分散,即为先每一组分n/m个人,在将余数依次添加到n%m个组上

    比如10个人,6组

    yushu=10%6=4

    ans=10/6=1

    1 1 1 1 1 1

    依次添加余数

    2 2 2 2 1 1

    即为有yushu个组是人数为ans+1,(m-yushu)个组是ans个人

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 
    10 
    11 int main()
    12 {
    13     LL mx,mn=0,m,n;
    14     cin>>n>>m;
    15     LL d=n%m;
    16     LL ans=n/m;
    17     mx=(n-(m-1))*(n-(m-1)-1)/2;
    18     mn=(d*(ans+1)*ans)/2+(m-d)*ans*(ans-1)/2;
    19     cout<<mn<<' '<<mx<<"
    ";    
    20     return 0;    
    21 }
    View Code

    C. Table Decorations

    题意:给出三种颜色的气球个数a,b,c,一张桌子不能全是一种颜色的气球,问最多可以装饰多少个桌子

    这道题目是看题解都看得好艰难= =

    假设a<b<c,最多可以装饰ans张桌子

    结论是:当c>=2*(a+b) ans=a+b      

               当c<2*(a+b)  ans=(a+b+c)/3

    当c>=2*(a+b)的时候好证明:即为每次从c中取2,从(a,b)里面任选一个,因为c是大于等于2*(a+b)的,对于任意从(a,b)里面任意选出来的一个,都能从c里面取出2 即只需考虑a+b,所以为a+b

    第二种情况= =还木有看懂

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 LL a[5];
    10 
    11 int main()
    12 {
    13     int ans=0;
    14     while(cin>>a[1]>>a[2]>>a[3]){
    15         sort(a+1,a+3+1);
    16         if(a[3]>=2*(a[1]+a[2])) cout<<a[1]+a[2]<<endl;
    17         else cout<<(a[1]+a[2]+a[3])/3<<endl;
    18     }
    19     return 0;
    20 }
    View Code

    D是dp= =

  • 相关阅读:
    显存与纹理内存详解
    UE4 编译虚幻引擎
    利用Lua脚本语言制作魔兽WOW插件
    详解液晶面板制造全过程
    游戏引擎剖析
    数据库常见面试题
    Selenium Webdriver元素定位的八种常用方式
    Windows 安装 Mongodb
    Redis在windows下安装过程
    python 关于一个懒惰和非懒惰的
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4322600.html
Copyright © 2011-2022 走看看