Problem B. Infinite House of Pancakes

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


Mean:

有无限多个盘子,其中有n个盘子里面放有饼,每分钟你可以选择两种操作中的一种:

1.n个盘子里面的饼同时减少1;

2.选择一个盘子里面的饼,分到其他盘子里面去;

目标是让盘子里的饼在最少的分钟数内吃完,问最少的分钟数。

analyse:

可以分析出,先分再吃不会比先吃再分差,所以我们选择先分再吃。

首先用dp预处理,dp[i][j]表示:初始时为i个饼的盘子经过分以后最大值为j需要多少步。

然后我们就可以暴力+贪心了,枚举吃的次数(1~MAX),对于每一个吃的次数,我们需要把每个饼都分到小于或等于这个次数。详见代码。

Time complexity: 小于 O(n^3)

Source code: 

#include<iostream>
#include<cstdio>
#include<cmath>
#include<climits>
using namespace std;const int MAXN=1002;
int dp[MAXN][MAXN],a[MAXN];
void pre()
{for(int i=0;i<=MAXN;++i){for(int j=1;j<i;++j){dp[i][j]=MAXN;for(int k=1;k<i;++k){dp[i][j]=min(dp[i][j],dp[i-k][j]+dp[k][j]+1);}}}
}
int main()
{pre();int t;scanf("%d",&t);for(int Cas=1;Cas<=t;++Cas){int n;scanf("%d",&n);int maxx=INT_MIN;for(int i=1;i<=n;++i){scanf("%d",&a[i]);maxx=max(maxx,a[i]);}int ans=INT_MAX;for(int eat=1;eat<=maxx;++eat){int tmp=0;for(int i=1;i<=n;++i){tmp+=dp[a[i]][eat];}tmp+=eat;ans=min(ans,tmp);}printf("Case #%d: %d\n",Cas,ans);}return 0;
}

View Code

转载于:https://www.cnblogs.com/crazyacking/p/4419154.html

dp - Google Code jam Qualification Round 2015 --- Problem B. Infinite House of Pancakes相关推荐

  1. Google Code jam Qualification Round 2015 --- Problem A. Standing Ovation

    Problem A. Standing Ovation Problem's Link:   https://code.google.com/codejam/contest/6224486/dashbo ...

  2. 2015 Google code jam Qualification Round A 水

    题意:给你一个序列 从 0-n  初始位置为0 ,只能从 i 走到 i+1  你必要有的人数 >= i+1  ,每个位置有a[i]个人,问你走到 n 还需要多少个人. 解题思路:暴力 解题代码: ...

  3. 【Google Code Jam】Millionaire

    题目描述 Google Code Jam 2008APAC local onsites C 最开始你有X元钱,要进行M轮赌博.每一轮赢的概率为P,你可以选择赌与不赌,如果赌也可以将所持的任意一部分钱作 ...

  4. Google Code Jam程序设计大赛中国人获冠亚军

    来自 Google的官方消息,今年的Google Code Jam程序设计大赛,冠亚军都被中国人获得. 冠军是楼天城(Tiancheng Lou,来自清华大学计算机系),奖金$10,000.亚军朱泽园 ...

  5. 入职顶级互联网公司,竞争性编程是必须的吗?Google code jam King赛前采访(附有视频)

    主持人:你能告诉我一些关于你自己的事吗 受访者:就像我决定从事的竞争性编程一样,竞争性编程我不仅参加了那些比赛,高中时我在美国参加Google Code Jam,因为我进入了决赛,这是我生命中的一部分 ...

  6. Google Code Jam 2017 资格赛

    https://code.google.com/codejam/contest/3264486/dashboard#s=p3 Oversized Pancake Flipper (1)问题描述: Pr ...

  7. Google Code Jam 2015 Qualification Round: Problem A. Standing Ovation

    昨天被虐的太惨,剩下的题过几天慢慢看.>< 我开始以为只要把每个是0的地方换成1就行了,后来发现之前的level如果人数多的话,后面的level是可以出现0的.== 用pre[]记录之前出 ...

  8. [C++]Standing Ovation——Google Code Jam 2015 Qualification Round

    Problem It's opening night at the opera, and your friend is the prima donna (the lead female singer) ...

  9. Google Code Jam Round 1A 2015 解题报告

    题目链接:https://code.google.com/codejam/contest/4224486/ Problem A. Mushroom Monster 这题题意就是,有N个时间点,每个时间 ...

最新文章

  1. QT的QImage类的使用
  2. OverFeat4.2的安装和使用
  3. 如何修改来自ERP 系统的product category
  4. 会移动的文字(Marquee)
  5. 2怎么开机_MacBook如何取消开盖自动开机
  6. python filter函数 字符串_Python实现filter函数实现字符串切分
  7. 分布式定时任务之3:elasticjob状态一直是分片待调整
  8. deeping 系统连接外接显示器无法无法设置双屏(有可能是不同接口在不同显卡上)...
  9. 干货!国外关于高速PCB设计的技术书籍和资料介绍
  10. VirtualBox虚拟机安装Win10企业版
  11. 自动量化炒股软件是什么?
  12. Laravel文档阅读笔记-Adding a Markdown editor to Laravel
  13. signature=c31ee9b23a444aeb59534b250024e5ac,Assembling unit for tube components
  14. 获奖!CACTER邮件安全网关荣获电子邮件安全优秀产品奖项
  15. Error launching IDEA
  16. 2022年煤矿探放水题库及模拟考试
  17. malloc()动态分配内存
  18. 对未来计算机的期盼,表达怀念过去期待未来的句子
  19. Python程序员看见一个好看的手机壁纸网站,开撸!
  20. Linux的firewalld防火墙学习笔记220929

热门文章

  1. 马斯克一说特斯拉“全自动驾驶”,大家就想笑
  2. 看不懂旷视升级,是因为不知道中国AI正在经历的变革
  3. 致命车祸进展:Uber无人车检测到了行人,但选择了忽略
  4. 何恺明!再斩ICCV 2017最佳论文
  5. Oracle/MySQL decimal/int/number 转字符串
  6. 实现京东金融-悬浮框效果
  7. AngularJS中$timeout和$interval的用法详解
  8. 使用MATLAB贝叶斯工具箱(BNT),进行吉布斯采样(Gibbs Sampling)之前需要做的编译工作...
  9. MFC避免窗口闪烁的方法(OnEraseBkgnd) .
  10. 2007年下半年网工考试试题+分析+标准答案