• 牛客寒假算法基础集训营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

  • 相关阅读:
    PageRank
    Map-Reduce基础
    Docker Hadoop LAMP安装配置教程
    HDFS Architecture
    Goole Search Auto Complete
    TopK-微博今日热门话题
    Hadoop开发环境搭建
    文本数据挖掘 Matrix67: The Aha Moments
    神经风格转换Neural Style Transfer a review
    神经风格转换 (Neural-Style-Transfer-Papers)
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10335776.html
Copyright © 2020-2023  润新知