• 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= =

  • 相关阅读:
    51nod 1004 n^n的末位数字
    51nod 1003 阶乘后面0的数量
    unity3d-多媒体与网络
    unity3d-代码控制游戏角色控制器移动
    unity3d-角色控制器续
    unity3d-物理引擎
    unity3d-碰撞检测
    unity3d-射线(Ray)
    unity3d-小案例之角色简单漫游
    unity3d-绘制贴图
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4322600.html
Copyright © 2020-2023  润新知