zoukankan      html  css  js  c++  java
  • 牛客编程巅峰赛S2第8场 部分题解

    A

    https://ac.nowcoder.com/acm/problem/209426

    发现 (nle 10^9),显然不能暴力枚举。

    发现是拆成两个不同的数之和,那这题不就按奇偶讨论一下就行了?

    时间复杂度:(O(1))

    class Solution {
    public:
        int solve(int n) {
            if(n%2) return n/2;
            else return n/2-1;
        }
    };
    

    B

    https://ac.nowcoder.com/acm/problem/207796

    考烂了的 01 背包,(nle 20),直接爆搜即可。

    时间复杂度:(O(2^n))

    class Solution {
    public:
        bool p[20];
        int v_[22],g_[22],V_,ans=-1,n;
        void work() {
            int sum=0;
            for(int i=1;i<=20;i++)
                if(p[i]) sum+=v_[i];
            if(sum!=V_) return;
            sum=0;
            for(int i=1;i<=20;i++)
                if(p[i]) sum+=g_[i];
            ans=max(ans,sum);
            return;
        }
        void dfs(int dep) {
            if(dep==n+1) {
                work();
                return;
            }
            dfs(dep+1);
            p[dep]=1;
            dfs(dep+1);
            p[dep]=0;
            return;
        }
        int Maximumweight(vector<int>& v, vector<int>& g, int V) {
            n=v.size();
            for(int i=0;i<v.size();i++) v_[i+1]=v[i];
            for(int i=0;i<g.size();i++) g_[i+1]=g[i];
            V_=V;
            dfs(1);
            return ans;
        }
    };
    

    C

    https://ac.nowcoder.com/acm/problem/210281

    真前缀与真后缀的话,显然如果相同,长度也一定相同。

    明显枚举长度不能省,考虑优化比较两个字符串的方法,想到可以 Hash 做,于是就做完了。

    时间复杂度:(O(n))

    class Solution {
    public:
        typedef unsigned long long ull;
        const int base=13331;
        ull bm[1000010],ha[1000010];
        int ans=-1;
        int solve(string s) {
            int len=s.size();
            bm[0]=1;
            for(int i=0;i<len;i++) {
                bm[i+1]=bm[i]*base;
                ha[i+1]=ha[i]*base+s[i];
            }
            for(int i=1;i<len;i++)//ha[6]-ha[4]*
                if(ha[i]==(ha[len]-ha[len-i]*bm[i]))
                    ans=max(ans,i);
            return ans;
        }
    };
    

    D

    不会,没学过对数,爬了。

  • 相关阅读:
    对我影响最大的三位老师
    自我介绍
    第二周作业
    2019第一次作业
    PTA编程总结3
    币值转换
    PTA编程总结2
    PTA编程总结1
    秋季学期学习总结
    人生路上对你影响最大的三位老师
  • 原文地址:https://www.cnblogs.com/lajiccf/p/14127946.html
Copyright © 2011-2022 走看看