• [bzoj4893]项链分赃


    来自FallDream的博客,未经允许,请勿转载,谢谢。


    有一串长度为n(n<=10^5)的项链,上面有红绿蓝三种颜色的珠子,每种颜色的珠子数目都是偶数,现在要你把它切几刀分成若干段,把其中一些段分给海盗1,剩余的段分给海盗2,要求两个海盗分得的每种颜色的珠子数量都相同,请输出最少需要切多少刀。
     
    感觉是到智商题 想了很久不懂怎么做开始猜结论  
    感觉答案不会超过3  就判掉了答案是1和2的情况,然后就过了233 
    然后又想了很久 根本不会证明qaq
    去出题人博客上看了看证明 真的神 我是服了..  给个链接吧
    #include<cstdio>
    #define getchar() (*S++)
    #define MN 100000
    char B[1<<26],*S=B;
    using namespace std;
    inline int read()
    {
        int x = 0; char ch = getchar();
        while(ch < '0' || ch > '9') ch = getchar();
        while(ch >= '0' && ch <= '9')x = x * 10 + ch - '0',ch = getchar();
        return x;
    }
    
    int n,N,a[MN+5],tot[3];
    
    int main()
    {
        fread(B,1,1<<26,stdin);
        n=read();N=n>>1;
        for(register int i=1;i<=n;++i) ++tot[a[i]=read()];
        tot[0]>>=1;tot[1]>>=1;tot[2]>>=1;
        for(register int i=1;i<=N;++i) --tot[a[i]];
        if(!tot[0]&&!tot[1]&&!tot[2]) return 0*puts("1");
        for(register int i=1,j=N;j<n;++tot[a[i++]],--tot[a[++j]])
            if(!tot[0]&&!tot[1]&&!tot[2]) return 0*puts("2");
        puts("3");
        return 0;
    }
  • 相关阅读:
    ASP.NET Core 发布
    cmd命令使用笔记
    彻底卸载Visual Studio 2013、Visual Studio 2015
    C#委托,事件理解入门 (译稿)
    理解ASP.NET MVC中的HTML Helpers
    Entity Framework 数据库初始化四种策略
    DbContext 那些事 —— 数据库初始化
    TryUpdateModel
    Fluent API 配置
    EF CodeFirst 关系配置
  • 原文地址:https://www.cnblogs.com/FallDream/p/bzoj4893.html
Copyright © 2020-2023  润新知