zoukankan      html  css  js  c++  java
  • 牛客寒假算法基础集训营4

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

    A.Applese 的取石子游戏

    #include <bits/stdc++.h>
    using namespace std;
     
    const int maxn = 1e5 + 10;
    int N;
    int a[maxn];
     
    int main() {
        scanf("%d", &N);
        int sum1 = 0, sum2 = 0;
        for(int i = 0; i < N; i ++) {
            scanf("%d", &a[i]);
            if(i % 2 == 0) sum1 += a[i];
            else sum2 += a[i];
        }
     
        if(sum1 > sum2 || sum2 > sum1)
            printf("Applese
    ");
        else printf("Bpplese
    ");
        return 0;
    }
    View Code

    简单博弈 送温暖

    B.Applese 走方格

    #include <bits/stdc++.h>
    using namespace std;
    
    int N, M;
    string ans = "";
    
    int main() {
        scanf("%d%d", &N, &M);
        if(N % 2 && M % 2) printf("-1
    ");
        else if(N == 1 && M == 2) printf("RL
    ");
        else if(N == 2 && M == 1) printf("DU
    ");
        else if(N == 1 && M != 2 || N != 2 && M == 1) printf("-1
    ");
        else {
            if(M % 2 == 0) {
                for(int i = 0; i < N - 1; i ++)
                    ans += 'D';
                for(int i = 0; i < M / 2 - 1; i ++) {
                    ans += 'R';
                    for(int j = 0; j < N - 2; j ++)
                        ans += 'U';
                    ans += 'R';
                    for(int j = 0; j < N - 2; j ++)
                        ans += 'D';
                }
                ans += 'R';
                for(int i = 0; i < N - 1; i ++)
                    ans += 'U';
                for(int i = 0; i < M - 1; i ++)
                    ans += 'L';
            } else {
                for(int i = 0; i < M - 1; i ++)
                    ans += 'R';
                for(int i = 0; i < N / 2 - 1; i ++) {
                    ans += 'D';
                    for(int j = 0; j < M - 2; j ++)
                        ans += 'L';
                    ans += 'D';
                    for(int j = 0; j < M - 2; j ++)
                        ans += 'R';
                }
                ans += 'D';
                for(int i = 0; i < M - 1; i ++)
                    ans += 'L';
                for(int i = 0; i < N - 1; i ++)
                    ans += 'U';
            }
            cout << ans << endl;
        }
        return 0;
    }
    View Code

    如果 N M 都是奇数的话输出 -1 如果 N M 中有一个是 1 的话 另一个不能超过 2 即 N = 1, M = 2 和 N = 2, M = 1 是可以的 其他情况模拟就好了 然而因为 Be 主当时多余的三句话导致 wa 了 10 发 怀疑人生

    E.Applese 涂颜色

    #include <bits/stdc++.h>
    using namespace std;
     
    const int mod = 1e9+7;
    typedef long long ll;
     
    ll phi(ll n)
    {
        int ans=n,temp=n;
        for(int i=2;i*i<=temp;i++)
        {
            if(temp%i==0)
            {
                ans-=ans/i;
                while(temp%i== 0) temp/=i;
            }
        }
        if(temp>1) ans-=ans/temp;
        return ans;
    }
    ll mod_pow(ll x,ll n,ll mod)
    {
        ll ans=1;
        while(n)
        {
            if(n%2==1) ans=ans*x%mod;
            x=x*x%mod;
            n/=2;
        }
        return ans;
    }
     
    ll a,c;
    char b[1000010], m[1000010];
     
    int main()
    {
        scanf("%s%s", b, m);
     
        //c %= mod;
        //a %= mod;
        ll phic=phi(mod);
        int i,len=strlen(b);
        ll res=0,ans;
        for( i=0;i<len;i++)
        {
            res=res*10+b[i]-'0';
            if(res>phic)
            break;
        }
        if(i==len)
        {
            ans=mod_pow(2,res,mod)%mod;
        }
        else
        {
            res=0;
            for(int i=0;i<len;i++)
            {
                res=res*10+b[i]-'0';
                res%=phic;
            }
            ans=mod_pow(2,res+phic,mod)%mod;
        }
        cout<< ans <<endl;
     
        return 0;
    }
    View Code

    欧拉函数      答案就是 $2^N$ 

    I.Applese 的回文串

    #include <bits/stdc++.h>
    using namespace std;
     
    bool IsHuiWen(string str) {
        for(int i = 0; i < (int)str.size() / 2;i ++) {
            if(str[i] != str[str.size() - 1 - i])
                return false;
        }
        return true;
    }
     
    int main() {
        string str;
        cin >> str;
        bool flag = false;
        int i;
        for(i = 0; i < (int)str.size() / 2; i ++) {
                if(str[i] != str[str.size() - 1 - i])
                    break;
        }
        if(i == (int)str.size() / 2)
            flag = true;
        else
            flag = (IsHuiWen(str.substr(i + 1, str.size() - 2 * i - 1)) ||
                    IsHuiWen(str.substr(i, str.size() - 2  * i - 1)));
     
        cout << ((flag == true) ? "Yes" : "No")<<endl;
        return 0;
    }
    View Code

    时间复杂度为 O(N) 学到了

    J.Applese 的减肥计划

    #include <bits/stdc++.h>
    using namespace std;
    
    #define pi 3.1415926535897932384626433832795028841971
    int F1, F2, a;
    
    int main() {
        scanf("%d%d%d", &F1, &F2, &a);
        double ans = 1.0 * F1 * F1 + 1.0 * F2 * F2 + 2.0 * F1 * F2 * cos(1.0 * a * pi / 180);
        printf("%.10lf
    ", sqrt(ans));
        return 0;
    }
    View Code

    $F1^2 + F2^2 + 2 * F1 * F2 * cos(a)$

    FHFHFH

  • 相关阅读:
    Java程序:从命令行接收多个数字,求和并输出结果
    大道至简读后感
    大道至简第一章读后感Java伪代码
    Creating a SharePoint BCS .NET Connectivity Assembly to Crawl RSS Data in Visual Studio 2010
    声明式验证超时问题
    Error message when you try to modify or to delete an alternate access mapping in Windows SharePoint Services 3.0: "An update conflict has occurred, and you must re-try this action"
    Upgrading or Redeploying SharePoint 2010 Workflows
    Upgrade custom workflow in SharePoint
    SharePoint 2013中Office Web Apps的一次排错
    How to upgrade workflow assembly in MOSS 2007
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10335776.html
Copyright © 2011-2022 走看看