超级赛亚ACMer

Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
Problem Description
百小度是一个ACMer,也是一个超级赛亚人,每个ACMer都有一个战斗力,包括百小度。
所谓超级赛亚人的定义,是说如果在对抗中刚好接近极限状态,那就会激发斗志,实力提升。
 具体来说,就是百小度现在要接受一些ACMer的挑战了,这些ACMer有n个人,第i个人的战斗力是a[i]。 
百小度接下来可以自主安排与这n个ACMer的PK顺序,他要想在PK赛中赢过另外一个ACMer,就必须使得自己的战斗力不小于对方(平局情况他会按照百小度字典上的规则把自己排在第一)。
 如果百小度的战斗力大于对方,那么百小度就会轻易获胜,得不到锻炼并且骄傲起来,他以后的战斗力将保持在这个值,再也不会发生改变。
如果百小度的战斗力等于对方,那么百小度在获胜的同时也会感到很吃力,但是这会激发百小度的斗志,使得他刻苦刷题,在下场PK赛之前,战斗力最多提升k点(即可以提升0~k点任意值)。

 k是百小度的潜力提升上限,会被给定一个初始值,这个潜力提升上限k在后面的比赛中会下降。
 每战胜一个ACMer,这个潜力上限k将减少1(因为超级赛亚人百小度也会感到累),但k最低只会减少到0,即不会出现战斗力下降的情况
。也就是第一次比赛如果激发了百小度的斗志,他能把战斗力提升0~k的任一值,如果第二次比赛继续被激发斗志,他能在第一次提升后的基础上,把战斗力再提升$0~max(0, k-1)$,依次类推……
 m是百小度的初始战斗力上限,也就是百小度第一次进行PK赛的时候,可以选择0~m的任意一个值作为他的战斗力。

 现在希望你编写程序,判断一下百小度是否战胜所有的ACMer。
Input
输入包含多组数据(数据不超过500组) 第一行一个整数T,表示T组数据
 对于每组数据,第一行包括三个整数$n, m, k(1 \leq n \leq 10^4, 1 \leq m, k \leq 10^8)$
 第二行包括n个正整数,表示彪形大汉的战斗力(战斗力为不超过$10^{12}$的正整数)
Output
对于每组数据,先输出一行Case #i: $(1 \leq i \leq T)$
 如果百小度能打败所有的ACMer,再输出"why am I so diao?"
 否则再输出"madan!"
Sample Input
2
5 11 3
15 13 10 9 8
5 11 3
8 9 10 13 16
Sample Output
Case #1:
why am I so diao?
Case #2:
madan!
Hint

第一组样例解释 5个ACMer,初始战斗力选择范围是[0,11],接下来每场战斗力提升上限是3,2,1,0,0,...,0 百小度首先使得自己的初始战斗力为10,打败战斗力为10的第一个ACMer, 然后选择战斗力提升3,变成13,打败战斗力为13的第二个ACMer, 然后选择战斗力提升2,变成15,打败战斗力为15的第三个ACMer, 之后再以任意顺序打败剩下的ACMer

Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=5246


Mean:

analyse:

贪心,但是要注意策略。把所有人战力排个序,每次贪心的取能取到的最大的能激发潜力的人。

Time complexity: O(n)

Source code: 

/*
* this code is made by crazyacking
* Verdict: Accepted
* Submission Date: 2015-05-30-18.59
* Time: 0MS
* Memory: 137KB
*/
#include <queue>
#include <cstdio>
#include <set>
#include <string>
#include <stack>
#include <cmath>
#include <climits>
#include <map>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#define LL long long
#define ULL unsigned long long
using namespace std;
const int MAXN=;
LL a[MAXN];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie();
int Cas,t;
scanf("%d",&t);
for(int Cas=;Cas<=t;++Cas)
{
LL n,m,k;
scanf("%lld %lld %lld",&n,&m,&k);
for(int i=;i<n;++i) scanf("%lld",&a[i]);
printf("Case #%d:\n",Cas);
sort(a,a+n);
if(a[]>m) puts("madan!");
else if(a[n-]<=m) puts("why am I so diao?");
else
{
int sta=;
for(int i=;i<n;++i)
{
if(a[i]>m)
{
sta=i-;break;
}
}
LL now=a[sta];
LL nextPos=sta+;
while(nextPos<n)
{
if(now+k<a[nextPos])
{
puts("madan!");break;
}
else
{
if(now+k>=a[n-])
{
puts("why am I so diao?");break;
}else{
now=a[nextPos];k--;nextPos++;
}
}
}
}
}
return ;
}
/* */

更容易理解的代码:

/*
* this code is made by crazyacking
* Verdict: Accepted
* Submission Date: 2015-05-31-12.56
* Time: 0MS
* Memory: 137KB
*/
#include <queue>
#include <cstdio>
#include <set>
#include <string>
#include <stack>
#include <cmath>
#include <climits>
#include <map>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#define LL long long
#define ULL unsigned long long
using namespace std;
const int MAXN=;
LL a[MAXN];
int main()
{
// freopen("C:\\Users\\crazyacking\\Desktop\\cin.txt","r",stdin);
// freopen("C:\\Users\\crazyacking\\Desktop\\cout.txt","w",stdout); ios_base::sync_with_stdio(false);
cin.tie();
int t;
scanf("%d",&t);
for(int Cas=;Cas<=t;++Cas)
{
int n,m,k;
scanf("%d %d %d",&n,&m,&k);
for(int i=;i<n;++i)
scanf("%lld",&a[i]);
sort(a,a+n);
printf("Case #%d:\n",Cas);
if(m>=a[n-]) puts("why am I so diao?");
else if(m<a[]) puts("madan!");
else
{
int staPos=;
for(int i=;i<n;++i)
{
if(a[i]>m)
{
staPos=i-;
break;
}
}
LL now=a[staPos];
int nextPos=staPos+;
while(nextPos<n)
{
if(now+k<a[nextPos])
{
puts("madan!");
break;
}
else
{
if(now+k>=a[n-])
{
puts("why am I so diao?");
break;
}
if(now>a[nextPos])
{
nextPos++;
continue;
}
if(now+k>=a[nextPos])
{
now=a[nextPos];
nextPos++;
k--;
}
}
}
}
}
return ;
}
/* */

2015年百度之星初赛(1) --- A 超级赛亚ACMer的更多相关文章

  1. 二分查找 2015百度之星初赛1 HDOJ 5246 超级赛亚ACMer

    题目传送门 /* 二分找到不大于m的最大的数,记做p,只要a[p] + k <= a[p+1]就继续 注意:特判一下当没有比m小的数的情况:) */ #include <cstdio> ...

  2. 2015年百度之星初赛(1) --- F 矩形面积

    矩形面积 Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些矩形包围起来的面积最小的矩形的面积是多少.   Input 第一行一个正整数 T, ...

  3. 2015年百度之星初赛(1) --- D KPI

    KPI Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  4. 2015年百度之星初赛(1) --- C 序列变换

    序列变换 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  5. 2015年百度之星初赛(1) --- B 找连续数

    找连续数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. 2015 百度之星 1001 超级赛亚ACMer 贪心

    超级赛亚ACMer Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1750 Descrip ...

  7. 数学 2015百度之星初赛2 HDOJ 5255 魔法因子

    题目传送门 /* 数学:不会写,学习一下这种解题方式:) 思路:设符合条件的数的最高位是h,最低位是l,中间不变的部分为mid,由题意可得到下面的公式(这里对X乘上1e6用a表示,b表示1e6) (h ...

  8. LIS 2015百度之星初赛2 HDOJ 5256 序列变换

    题目传送门 题意:中文题面 分析:LIS(非严格):首先我想到了LIS,然而总觉得有点不对:每个数先减去它的下标,防止下面的情况发生:(转载)加入序列是1,2,2,2,3,这样求上升子序列是3,也就是 ...

  9. Kruskal 2015百度之星初赛2 HDOJ 5253 连接的管道

    题目传送门 /* 最小生成树(Kruskal):以权值为头,带入两个端点,自然的排序;感觉结构体的并查集很好看 注意:题目老头要的是两个农田的高度差,中文水平不好,题意理解成和平均值的高度差! */ ...

随机推荐

  1. 初始zookeeper与集群搭建实例

    zookeeper是什么 Zookeeper,一种分布式应用的协作服务,是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务,它包含一个简单的原语集,应用于分布式应用的协作服务, ...

  2. 记录一下,如何配置nodejs nginx的反向代理

    本文是在mac下配置nodejs 在nginx下的反向代理 1.安装nodejs,之前就安装了. 2.安装nginx ,我采用的直接源码安装 3.进入 /usr/local/nginx/conf 目录 ...

  3. Android 5.0 Uicc框架分析

    已同步更新至个人blog:   dxjia.cn Uicc框架 UICC框架是Android在4.1引入的,使的对卡的管理控制更加清晰.要了解这个UICC框架,需要从UiccController开始, ...

  4. T 泛型转换

    T为左值 result = (T)Convert.ChangeType(o,typeof(T));

  5. cocos2d-x-3.0 的改变,由于变得太多,一点点累积吧!

    1.cpp  改成  Point 2.setIsRelativeAnchorPoint() 改成  ignoreAnchorPointForPosition() 3.Layer::create   图 ...

  6. 【面经】Epic: 数据库去重

    题目是:有2个10G的数据库,存储了一些string. 2者之间有一些重复的数据.请把它们合并为一个数据库,并且去除重复. 限制:内存是4G 例如: DB1: cmu, ucb, stanford, ...

  7. C#集合 -- Equality和Order插件

    在前面的文章C#相等性比较和C#排序比较中,我已经叙述了类型相等,类型哈希,和类型比较的.NET标准协议.实现了这些协议的类型在一个字典或者列表中也可以正常工作.但是需要注意的是: 只有当类型的Equ ...

  8. Tips for thrift

    Introduction I have designed and developed game servers successfully with thrift (http://thrift.apac ...

  9. IOS Application Security Testing Cheat Sheet

    IOS Application Security Testing Cheat Sheet    [hide]  1 DRAFT CHEAT SHEET - WORK IN PROGRESS 2 Int ...

  10. HBase 在HDFS 上的目录树

         总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 这里只介绍系统级别的目录树. 一.0.94-cdh4.2.1版本 系 ...