zoukankan      html  css  js  c++  java
  • Codeforces Round #652 题解

    https://codeforces.com/contest/1369

    A

    猜结论,一开始盲猜 (n mod 2=0),然后 WA 了,画了一画,改成 (n mod 4=0),然后 A 了。

    时间复杂度 (O(t))

    #include<bits/stdc++.h>
    using namespace std;
    int t,n,an;
    int main() {
        scanf("%d",&t);
        while(t--) {
            scanf("%d",&n);
            if(n%4)
                puts("NO");
            else
                puts("YES");
        }
    }
    

    B

    对于这一类序列而言 (1ldots10ldots0),其可以被变成 (0)

    将两个序列连起来,也可以变成 (0)

    所以统计一下前缀 (0) 和后缀 (1),这是要保留的。

    中间如果有值,就输出 (0)

    时间复杂度 (O(tn))

    #include<bits/stdc++.h>
    using namespace std;
    int t,n,opt,l,r;
    char st[100010];
    int main() {
        scanf("%d",&t);
        while(t--) {
            scanf("%d
    ",&n);
            for(int i=1;i<=n;i++)
                st[i]=getchar();
            l=1,r=n;
            while(st[l]=='0')
                l++;
            while(st[r]=='1')
                r--;
            if(l>r)
                for(int i=1;i<=n;i++)
                    printf("%c",st[i]);
            else {
                for(int i=1;i<l;i++)
                    printf("0");
                printf("0");
                for(int i=r+1;i<=n;i++)
                    printf("1");
            }
            puts("");
        }
    }
    

    C

    考虑贪心。

    (a) 从大到小排序,(w) 从小到大排序。

    先满足需求为 (1) 的,随后从大到小满足。

    因为我们可以让最大的带走一堆最小的!

    时间复杂度 (O(t imes nlog n))

    #include<bits/stdc++.h>
    using namespace std;
    long long t,n,a[200010],w[200010],l,r,zz,k;
    long long ans;
    int main() {
        scanf("%lld",&t);
        while(t--) {
            scanf("%lld %lld
    ",&n,&k);
            for(long long i=1;i<=n;i++)
                scanf("%lld",&a[i]);
            for(long long i=1;i<=k;i++)
                scanf("%lld",&w[i]);
            sort(a+1,a+n+1);
            sort(w+1,w+k+1);
            ans=0,zz=1;
            while(w[zz]==1) {
                ans+=a[n]*2;
                zz++,n--;
            }
            l=1,r=n;
            while(k>=zz) {
                ans=ans+a[l]+a[r];
                l=l+(w[k]-1);
                r--;k--;
            }
            printf("%lld
    ",ans);
        }
    }
    

    D

    找规律。

    (dp_n=2 imes dp_{n-2}+dp_{n-1}+(nmod 4=0?4:0))

    时间复杂度 (O(2 imes 10^6+T))

    #include<bits/stdc++.h>
    using namespace std;
    const int twx=1e9+7;
    int n,dp[2000010],t;
    int main() {
        for(int i=3;i<=2000000;i++)
            dp[i]=(dp[i-2]*2%twx+dp[i-1]+(i%3==0?4:0))%twx;
        scanf("%d",&t);
        while(t--) {
            scanf("%d",&n);
            printf("%d
    ",dp[n]);
        }
    }
    
  • 相关阅读:
    释放下一代网络应用的能量[转载]
    帮助创建未来的 .NET 客户端开发
    ASP.NET Ajax替代品AjaxWidgets
    Microsoft Surface
    有意思的《致招商银行的公开信》行动!
    Applying DomainDriven Design and Patterns(ADDDP) With examples in C# and .NET
    Silverlight ASP.NET control
    StructureMap 轻量IOC框架
    DDay.iCal an iCalendar class library
    Mono ASP.NET 上几个性能调优技巧
  • 原文地址:https://www.cnblogs.com/lajiccf/p/CF652.html
Copyright © 2011-2022 走看看