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

    a.题意很简单,有五个人每个人开始有相同不为0数量的赌注,赌注可以在他们之间流通,给出最终状态,问原来每个人的赌注是多少。 这题在cf a题中也算是个大水题了,加起来看能不能被5整除就可以了。  可是。。。 坑爹的cf卡的要死,2分钟敲完准备交,11分钟才交上去,然后发现wa,然后再读了几遍题发现忘记判断0的情况,又等好久才交上去,20几分钟才A。。。

    b.n个人放入m堆,两个人在相同一堆就有一个关系,然后问最多的关系和最小的关系。 最多关系的情况就是尽量放在一堆,最小的关系就是尽量分开来分。

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <algorithm>
    #include <string>
    #include <queue>
    #include <stdlib.h>
    using namespace std;
    
    
    int main()
    {
        long long int n,m;
        cin>>n>>m;
        long long tmp=n-m+1;
        long long int yu=n%m;
        tmp=n/m;
        long long mi=0;
        for(int i=1;i<=m;i++)
        {
            if(yu!=0)
            {
                mi+= (tmp+1)*tmp/2;
                yu--;
            }
            else mi+=(tmp-1)*tmp/2;
        }
        cout<<mi<<" "<<(n-m+1)*(n-m)/2;
        return 0;
    }
    View Code

    c.这题还是比较坑,开始苦想各种解法,各种贪心,最后想出来时发现三行代码搞定。

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <algorithm>
    #include <string>
    #include <queue>
    #include <stdlib.h>
    using namespace std;
    
    long long g[5];
    
    int main()
    {
        for(int i=0;i<3;i++)
            scanf("%d",g+i);
        sort(g,g+3);
        long long ans;
        long long x=g[1]-g[0],y=g[2]-g[0];
        if( g[2]>=2*(g[0]+g[1]) )
            ans=g[0]+g[1];
        else ans=(g[2]+g[0]+g[1])/3;
        cout<<ans;
        return 0;
    }
    View Code

    d.这题要用到一点dp了,首先求出最大高度,即最大的h使得 h(h+1)/2<(r+g),求出高度后dp求出高度为i时有j个红色块的方法数(1<=i<=h,0<=j<=r),然后枚举r的个数是的r+g=h*(h+1)/2,记录总和即可。

    (注意能不用取模尽量不用取模,取模操作比加减操作慢太多吧。估计有个10几倍吧,这题直接取模用了1.5s,用减法只需0.8s)

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 #include <math.h>
     5 #include <algorithm>
     6 #include <string>
     7 #include <queue>
     8 #include <stdlib.h>
     9 using namespace std;
    10 #define MOD 1000000007
    11 
    12 long long int dp[402000][2];
    13 
    14 
    15 long long int r,g;
    16 
    17 int main()
    18 {
    19     cin>>r>>g;
    20     long long h;
    21     for(h=1;h*(h+1)/2<=r+g;h++) ;
    22     h--;
    23     int a=0;
    24     memset(dp,0,sizeof(dp));
    25     dp[1][a]=1;
    26     dp[0][a]=1;
    27     for(int i=2;i<=h;i++)
    28     {
    29         for(int j=0;j<=r;j++)
    30             dp[j][a^1]=0;
    31         for(int j=0;j<=r;j++)
    32             if(j>=i)
    33                 dp[j][a^1] = (dp[j][a]+dp[j-i][a])%MOD;
    34             else
    35                 dp[j][a^1] = dp[j][a];
    36         a=a^1;
    37     }
    38     long long ans=0;
    39     long long cnt=h*(h+1)/2;
    40     for(int i=0;i<=r;i++)
    41     {
    42         if( cnt-i<=g &&cnt-i>=0)
    43         {
    44             ans = (ans+dp[i][a])%MOD;
    45         }
    46     }
    47     cout<<(ans+MOD)%MOD;
    48     return 0;
    49 }
    View Code
  • 相关阅读:
    webrtc系列之-像老鼠一样打洞
    Ubuntu记录用户IP访问操作信息工具
    OPENVIDU实现同一用户同时发布多个流媒体
    如何使用Nginx-rtmp搭建简易的HLS直播系统
    python实现数据库主从状态监控
    简单分析实现运维利器---批量操作bashshell
    《我与Windows Server 2008R2那点事儿》之域控账户故障事件
    常用动态路由协议之IS-IS
    在云服务器上搭建Python开发环境
    基于Python3接口自动化测试开发相关常用方法
  • 原文地址:https://www.cnblogs.com/chenhuan001/p/4030674.html
Copyright © 2011-2022 走看看