• codeforces Gym 100735 D、E、G、H、I


    http://codeforces.com/gym/100735

    D题 直接暴力枚举 感觉这道题数据有点问题 为什么要先排下序才能过?不懂。。

    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
    #include <sstream>
    #include <algorithm>
    #include <string>
    #include <queue>
    #include <map>
    #include <vector>
    using namespace std;
    const int maxn = 55;
    const int maxm = 1e4+10;
    const int inf = 0x3f3f3f3f;
    const double epx = 1e-10;
    typedef long long ll;
    int n,m;
    ll a[maxn];
    int main()
    {
        while(cin>>n)
        {
            for(int i=1; i<=n; i++)
            {
                scanf("%I64d",&a[i]);
            }
            sort(a+1,a+1+n);
            int ans=0;
            int visit[maxn];
            memset(visit,0,sizeof(visit));
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
    
                    for(int k=1;k<=n;k++)
                    {
                        if(visit[i]==0&&visit[j]==0&&visit[k]==0&&i!=j&&j!=k&&i!=k&&a[i]+a[k]>a[j]&&a[i]+a[j]>a[k]&&a[j]+a[k]>a[i])
                        {
                            ans++;
                            visit[i]=1,visit[j]=1,visit[k]=1;
                        }
                    }
                }
            }
            printf("%d
    ",ans);
        }
    }
    View Code

    E题  n*n的数字矩阵 横着 竖着 对角线 相加都等于val 可以推出 公式把矩阵   每行(或者每列)已有的数字加起来除以n-1=val 每行(每列)只有一个未知用val去减就好了。

    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
    #include <sstream>
    #include <algorithm>
    #include <string>
    #include <queue>
    #include <map>
    #include <vector>
    using namespace std;
    const int maxn = 1005;
    const int maxm = 1e4+10;
    const int inf = 0x3f3f3f3f;
    const double epx = 1e-10;
    typedef long long ll;
    int n,m;
    ll a[maxn][maxn];
    int main()
    {
        cin>>n;
        ll sum[maxn],zong=0;
        for(int i=0; i<n; i++)
        {
            sum[i]=0;
            for(int j=0; j<n; j++)
            {
                scanf("%I64d",&a[i][j]);
                sum[i]+=a[i][j];
            }
            zong+=sum[i];
        }
        zong=zong/(n-1);
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
            {
                ll x=a[i][j];
                if(i==j)
                    x=zong-sum[i];
                if(j==n-1)
                    printf("%I64d
    ",x);
                else
                    printf("%I64d ",x);
            }
        }
    }
    View Code

    G题 水题

    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
    #include <sstream>
    #include <algorithm>
    #include <string>
    #include <queue>
    #include <map>
    #include <vector>
    using namespace std;
    const int maxn = 1e5+10;
    const int maxm = 1e4+10;
    const int inf = 0x3f3f3f3f;
    const double epx = 1e-10;
    typedef long long ll;
    int n,m;
    char a[maxn];
    int main()
    {
        cin>>a;
        int sum=0,ans=0;
        int len=strlen(a);
        for(int i=0;i<len;i++)
        {
            if(a[i]=='1')
                ans++;
        }
        printf("%d
    ",min(ans,len-ans));
    }
    View Code

    H题 要用二分图最大匹配写  用dfs会T的很惨。

    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
    #include <sstream>
    #include <algorithm>
    #include <string>
    #include <queue>
    #include <map>
    #include <vector>
    using namespace std;
    const int maxn = 105;
    const int maxm = 1e4+10;
    const int inf = 0x3f3f3f3f;
    const double epx = 1e-10;
    typedef long long ll;
    int n;
    char a[maxn][10];
    char s[maxn];
    int len;
    int visit[maxn];
    int m[maxn][maxn];
    int match[maxn];
    bool found(int x)
    {
        for(int i=1;i<=n;i++)
        {
            if(m[x][i]==1&&visit[i]==0)
            {
                visit[i]=1;
                if(match[i]==-1||found(match[i]))
                {
                    match[i]=x;
                    return true;
                }
            }
        }
        return false;
    }
    int main()
    {
        cin>>s>>n;
        len=strlen(s);
        memset(m,0,sizeof(m));
        memset(match,-1,sizeof(match));
        for(int i=1; i<=n; i++)
        {
            for(int j=0; j<6; j++)
            {
                cin>>a[i][j];
                for(int k=0;k<len;k++)
                {
                    if(a[i][j]==s[k])
                        m[k][i]=1;
                }
            }
        }
    
        int ans=0;
        for(int i=0;i<len;i++)
        {
            memset(visit,0,sizeof(visit));
            if(found(i))
                ans++;
        }
        if(ans==len)
            printf("YES
    ");
        else
            printf("NO
    ");
    }
    View Code

    I题 大数加法 Java大数类

    import java.util.*;
    import java.math.*;
    public class Main
    {
        public static void main(String args[])
        {
            Scanner cin = new Scanner(System.in);
            BigInteger a, b,c,a1,b1,c1;
            while (cin.hasNext())
            {
                a = cin.nextBigInteger();
                b = cin.nextBigInteger();
                c = cin.nextBigInteger();
                a1=a.add(a);b1=b.add(b);c1=c.add(c);
                int flag=0;
                if(a.add(b).compareTo(c)==0)
                    flag=1;
                else if(a.add(c).compareTo(b)==0)
                    flag=1;
                else if(b.add(c).compareTo(a)==0)
                    flag=1;
                else if(a1.compareTo(b)==0)
                    flag=1;
                else if(a1.compareTo(c)==0)
                    flag=1;
                else if(b1.compareTo(a)==0)
                    flag=1;
                else if(b1.compareTo(c)==0)
                    flag=1;
                else if(c1.compareTo(b)==0)
                    flag=1;
                else if(c1.compareTo(a)==0)
                    flag=1;
                if(flag==1)
                     System.out.println("YES");
                else
                     System.out.println("NO");
            }
        }
    }
    View Code

    菜菜菜 就出了几道水题

  • 相关阅读:
    个推推出青少年网络游戏防沉迷解决方案,助力开发者构建完善的青少年保护系统!
    个推2022届校园招聘火热启动!数据岗、算法岗、研发岗,热门技术岗位等你来!
    iOS里的动态库和静态库
    idea中svn回退到指定版本
    稻花香项目接口文档
    Ubuntu系统记录
    获取当前系统名称、获取当前操作系统信息
    Temporary failure in name resolution
    零基础学python:错误与异常
    Python内置函数之输入输出函数
  • 原文地址:https://www.cnblogs.com/stranger-/p/8331014.html
Copyright © 2020-2023  润新知