zoukankan      html  css  js  c++  java
  • 2019年湘潭大学程序设计竞赛(重现赛)

    https://ac.nowcoder.com/acm/contest/893#question

    A:签到1

    #include<algorithm>
    #include<cstring>
    #include<iostream>
    #include<math.h>
    #include<string>
    #include<stdio.h>
    #include<map>
    #include<queue>
    #define ll long long
    #define inf 0x3f3f3f3f
    using namespace std;
    
    int n1,n2,p1,p2,s1,s2;
    int main()
    {
        while(cin>>n1>>p1>>s1>>n2>>p2>>s2)
        {
            if(n1>n2)
                printf("1
    ");
            else if(n1<n2)
                printf("2
    ");
            else
            {
                if(p1<p2)
                    printf("1
    ");
                else if(p1>p2)
                    printf("2
    ");
                else
                {
                    if(s1<s2)
                        printf("1
    ");
                    else if(s1>s2)
                        printf("2
    ");
                    else
                        printf("God
    ");
                }
            }
        }
        return 0;
    }
    View Code

    B:签到2

    #include<algorithm>
    #include<cstring>
    #include<iostream>
    #include<math.h>
    #include<string>
    #include<stdio.h>
    #include<map>
    #include<queue>
    #define ll long long
    #define inf 0x3f3f3f3f
    using namespace std;
     
    int n;
    ll a[300005];
    
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
            scanf("%lld",&a[i]);
        for(int i=1;i<=n;i++)
        {
            ll x=a[i];
            ll cnt=0;
            while(x>1)
            {
                if(x%10==0)
                    x=x/10;
                else
                    x++;
                cnt++;
            }
            printf("%lld
    ",cnt);
        }
        return 0;
    }
    View Code

    C:签到3,打印观察a的值有规律,192的倍数+1,等差求和

    #include<algorithm>
    #include<cstring>
    #include<iostream>
    #include<math.h>
    #include<string>
    #include<stdio.h>
    #include<map>
    #include<queue>
    #define ll long long
    #define inf 0x3f3f3f3f
    using namespace std;
     
    int t;
    ll l,r,n;
     
    int main()
    {/*
        for(ll i=1;i<=10000;i++)
            if(i*i*i%192==1)
            printf("%lld
    ",i);*/
        scanf("%d",&t);
        while(t--)
        {
            cin>>l>>r;
            ll sum=0;
            while(l%192!=1)
                l++;
            while(r%192!=1)
                r--;
     
            n=r/192-l/192+1;
            sum=((l+r)/2)*n;
            printf("%lld
    ",sum)
        }
        return 0;
    }
    View Code

    D:签到4,每次依附到最大的那一堆,结果是:总和-最大

    #include<algorithm>
    #include<cstring>
    #include<iostream>
    #include<math.h>
    #include<string>
    #include<stdio.h>
    #include<map>
    #include<queue>
    #define ll long long
    #define inf 0x3f3f3f3f
    using namespace std;
     
    int t,n;
     
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            ll maxx=-1,sum=0,x;
            for(int i=0;i<n;i++)
            {
                scanf("%lld",&x);
                sum+=x;
                maxx=max(maxx,x);
            }
            printf("%lld
    ",sum-maxx);
        }
     
        return 0;
    }
    View Code

    F:尺取法,详看注释

    #include<algorithm>
    #include<cstring>
    #include<iostream>
    #include<math.h>
    #include<string>
    #include<stdio.h>
    #include<map>
    #include<queue>
    #define ll long long
    #define inf 0x3f3f3f3f
    using namespace std;
     
    int t;
    int n,m;
    string s;
     
    int main()///尺取法
    {
        scanf("%d",&t);
        while(t--)
        {
            cin>>n>>m;
            cin>>s;
     
            int num,l,r,k,ans;///num表示当前的价值,k表示当前执行了多少次操作
            ans=k=num=l=r=0;
            while(r<n)///算0的价值
            {
                while(  (r<n && k<m)||(s[r]=='0') )///有操作机会 或者 当前是0即不需要操作
                {
                    if(s[r]=='0')
                    {
                        num++;
                        r++;
                    }
                    else if(s[r]=='1' && k<m)
                    {
                        num++;
                        k++;
                        r++;
                    }
                    ans=max(ans,num);
                }
                ///r走不动了,轮到l来走
                if(s[l]=='0')
                {
                    num--;
                    l++;
                }
                else
                {
                    num--;
                    k--;///之前用一次机会把1变成0,现在不要这个1,操作次数要减少
                    l++;
                }
                ans=max(ans,num);
            }
            k=num=l=r=0;
            while(r<n)///算1的价值
            {
                while(  (r<n && k<m)||(s[r]=='1') )///有操作机会 或者 当前是0即不需要操作
                {
                    if(s[r]=='1')
                    {
                        num++;
                        r++;
                    }
                    else if(s[r]=='0' && k<m)
                    {
                        num++;
                        k++;
                        r++;
                    }
                    ans=max(ans,num);
                }
                if(s[l]=='1')
                {
                    num--;
                    l++;
                }
                else
                {
                    num--;
                    k--;///之前用一次机会把0变成1,现在不要这个0,操作次数要减少
                    l++;
                }
                ans=max(ans,num);
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    解决ubuntu不能安装g++的问题
    解决VMware虚拟机不能上网的问题
    打开vmvare出现The VMware Authorization Service is not running。
    word2-寻找社交新浪微博中的目标用户
    新浪云计算SAE部署代码过程
    Python如何调用新浪api接口的问题
    work1-英语辅导班在线报名系统
    Mysql对自增主键ID进行重新排序
    如何使用LIBSVM,从安装到基本实例使用
    laravel怎么创建一个简单的blog
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/10811727.html
Copyright © 2011-2022 走看看