• GCJ 2015-Qualification-B Infinite House of Pancakes 枚举,思路,误区 难度:3


    https://code.google.com/codejam/contest/6224486/dashboard#s=p1

    题目不难,教训记终生

    题目给了我们两种操作:1 所有人都吃一个,简记为消除操作 2 所有人不吃,把一个人的煎饼分给另一个人或者新来的人,简记为分配

    明显,分配操作分给新来的人更有利,并且分配操作应该在消除操作之前

    现在就是怎么分配的问题:

    之前错误了两次,因为误认为直接对半分效率更高,但是对于 1 9这组数据,明显是分成 1 3 3 3比分成1 4 5 更优

    所以,枚举分配操作之后的最大煎饼数i,然后分别计算把每个数量大于i的盘子里分到i所需多少次操作tmp.答案取最小的tmp+i即可

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    const int maxn=1e3+3;
    const int maxp=1e3+3;
    int n;
    int num[maxp];
    
    int main(){
        freopen("data.in","r",stdin);
        freopen("data.out","w",stdout);
        int T;
        scanf("%d",&T);
        for(int ti=1;ti<=T;ti++){
            scanf("%d",&n);
            memset(num,0,sizeof(num));
            int ans=0;
            for(int i=0;i<n;i++){
                int tmp;
                scanf("%d",&tmp);
                num[tmp]++;
                ans=max(tmp,ans);
            }
            int mx=ans;
            for(int i=1;i<=mx;i++){
                int tmp=0;
                for(int j=i+1;j<=mx;j++){
                    tmp+=(j+i-1)/i*num[j]-num[j];
                }
                tmp+=i;
                ans=min(tmp,ans);
            }
            printf("Case #%d: %d
    ",ti,ans);
        }
        return 0;
    }
    
  • 相关阅读:
    jenkins代码自动部署
    jenkins安装
    git图形管理工具
    gitlab自动备份恢复与卸载
    linux下获取外网IP
    网站安全webshell扫描
    jQuery动画效果实现
    form表单中的enctype属性什么意思?
    你那么努力又怎么样!
    话语
  • 原文地址:https://www.cnblogs.com/xuesu/p/4419387.html
Copyright © 2020-2023  润新知