• Codeforces Round #613 (Div. 2)


    A. Mezo Playing Zoma

    一个机器人,给一行只包含“R”“L”的指令,代表向左或者向右走。每个操作执行或者不执行,机器人在数轴上起始位置为0,求经过一些列操作后可能在的区间长度。

    水题

    #include <iostream>
    #include <cstring>
    using namespace std;
    int a,b;
    int main()
    {
        int n;
        scanf("%d",&n);
        char c;
        for(int i=1;i<=n;i++)
        {
            cin>>c;
            if(c=='L')
            a++;
            else
            b++;
    
        }
        printf("%d
    ",a+b+1);
    }
    View Code

    B. Just Eat It!

    给定一组数组,求出所有元素的和sum,若sum大于一段子区间的和输出yes,否则输出no。

    分析:由于要求一段子区间的最大和,我们可以求出区间【1-n-1】和区间【2-n】的最大区间和再与sum比较

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    typedef long long ll;
    using namespace std;
    const int mx=1e5+10;
    int a[mx];
    int t,n,m;
    ll sum;
     
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            bool flag=true;
            sum=0;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            {
              scanf("%d",&a[i]);
              sum+=a[i];
            }
            ll cnt=0,maxx=-1;
            for(int i=1;i<=n-1;i++)
            {
                cnt+=a[i];
                if(cnt<a[i])cnt=a[i];
                maxx=max(maxx,cnt);
            }
            cnt=0;
            for(int i=2;i<=n;i++)
            {
                cnt+=a[i];
                if(cnt<a[i])cnt=a[i];
                maxx=max(maxx,cnt);
            }
            if(maxx>=sum)
            printf("NO
    ");
            else
            printf("YES
    ");
        }
        return 0;
    }
    View Code

    C. Fadi and LCM

    题意:给一个整数N 求一对数(a,b),使x为(a,b)的最小公倍数,且max(a,b)最小

    分析:枚举所有N的 因子,每次得到因子 x与N/x 若需使x为一对因子的最小公倍数,则需要满足 gcd(x,N/x)==1;

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    ll x,z,b;
     
    ll gcd(ll a,ll b)
    {
       return a%b==0?b:gcd(b,a%b);
    }
    int main()
    {
       ll mn=1e13;
       scanf("%lld",&x);
       mn=min(x,mn);
       for(ll i=2;i<=sqrt(x);i++)
       {
           if(x%i==0&&gcd(x/i,i)==1)
            mn=min(mn,x/i);
       }
       printf("%lld %lld
    ",x/mn,mn);
       return 0;
    }
    View Code
  • 相关阅读:
    ORA-01940: cannot drop a user that is currently connected 问题解析
    Oracle11g数据库导入Oracle10g操作成功
    固态硬盘
    Oracle数据库默认的data pump dir在哪
    navicat 关于orcale新建表空间,用户和权限分配
    oracle 11g 完全卸载方法
    完全卸载oracle11g步骤
    架构设计:负载均衡层设计方案(4)——LVS原理
    C++中使用REST操作
    在C#中实现视频播放器
  • 原文地址:https://www.cnblogs.com/daoyuan/p/12431167.html
Copyright © 2020-2023  润新知