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≤n≤104,1≤m,k≤108)



第二行包含n个正整数,表示彪形大汉的战斗力(战斗力为不超过1012的正整数)
 
Output
对于每组数据,先输出一行Case #i: (1≤i≤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 这题是道二分题。先按大小排序,然后每次查找第一个大于当前战斗力的值的位置j,然后把a[j-1]+k变为新的力量值(假设j是1的话就break),当k=0可是当前战斗力还是比最大值小的时候就说明不可能战胜了break; ps:从大神那里学会了假设在int main()函数中用到超过10^9的数,要在#define inf 100000000000后加上LL,即#define inf 100000000000LL
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
#define inf 10000000000000LL
using namespace std;
__int64 a[10006]; int main()
{
int T,m,n,i,j,k,num1=0,flag;
__int64 liqi,minx,maxx;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&k);
num1++;
maxx=0;minx=inf;
for(i=1;i<=n;i++){
scanf("%I64d",&a[i]);
if(a[i]>maxx)maxx=a[i];
if(a[i]<minx)minx=a[i];
}
printf("Case #%d:\n",num1);
if(m>=maxx){
printf("why am I so diao?\n");continue;
}
if(m<minx){
printf("madan!\n");continue;
}
sort(a+1,a+n+1);
flag=0;
liqi=m;
while(1)
{
//printf("%d\n",liqi);
if(liqi>=maxx){
flag=1;break;
}
if(n==1)break;
if(k==0)break;
j=upper_bound(a+1,a+1+n,liqi)-a;
if(j==1)break;
liqi=a[j-1]+k;k--;
for(i=j-1;i<=n-1;i++){
a[i]=a[i+1];
}
n--;
}
if(flag){
printf("why am I so diao? \n");continue;
}
else printf("madan!\n");continue;
}
}

hdu5246 超级赛亚ACMer的更多相关文章

  1. hdu5246超级赛亚ACMer

    题意(中文题意直接粘吧)                             超级赛亚ACMer Problem Description   百小度是一个ACMer,也是一个超级赛亚人,每个ACM ...

  2. 2015年百度之星初赛(1) --- A 超级赛亚ACMer

    超级赛亚ACMer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem D ...

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

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

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

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

  5. 【HDU-5246】超级赛亚ACMer(贪心)

    之前用了个nlogn的算法超时了.仅仅能改成n的算法了 大题贪心思路就是 对每一个人的能力值从小到大进行排序,当前能力值为now,那么我们找到一个人的能力使得这个能力值 <= now.now + ...

  6. 5w 字 | 172 图 | 超级赛亚级 Spring Cloud 实战

    一.PassJava 项目简介 PassJava-Learning 项目是 PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. PassJava 是一款 Java 面试刷题 的 ...

  7. UITableViewCell单元格的删除、插入、移动

    UITableViewDelegate的方法      设置编辑模式中得cell的编辑样式(删除或插入)      - (UITableViewCellEditingStyle)tableView:( ...

  8. 【CityHunter】通过Unity3D来制作游戏中AR部分的内容

    嗯,最近再考虑,CityHunter中,玩家攻略藏宝图时,为了增加可玩性,应该增强在AR部分的游戏性.最近特别火的游戏<Pokemon Go>在打开摄像头以后,可以看到小精灵,实际上,如果 ...

  9. C_C++圣战(摘录)

    我的回忆和有趣的故事 --- C/C++圣战篇 李维 (声明以下的这篇文章内容是我个人的回忆以及看法,没有任何特别的偏见,许多的事情是根据我的记忆以及从许多人的诉说中得知的,也许内容不是百分之百的正确 ...

随机推荐

  1. C++ 模板的编译 以及 类模板内部的实例化

    在C++中.编译器在看到模板的定义的时候.并不马上产生代码,仅仅有在看到用到模板时,比方调用了模板函数 或者 定义了类模板的 对象的时候.编译器才产生特定类型的代码. 一般而言,在调用函数的时候,仅仅 ...

  2. Spring DAO vs Spring ORM vs Spring JDBC

    Pat 的疑惑 最近关注于 Spring 提供的数据访问技术,对于 Spring 相关的这几个项目有何不同我不是太明白: Spring-DAO (http://docs.spring.io/sprin ...

  3. arcgis连接excel出现数据库失败 外部数据库驱动程序意外错误

    微软搞事情,删除以下更新就行:win7 KB4041678 KB4041681SERVER 2008 R2 KB4041678 KB4041681WIN10 KB4041676 KB4041691SE ...

  4. IE中Ext的comboBox跑到页面左上角

    { xtype:'combo', width:100, //id:'exTypeCom', name:'exType', hiddenName:'exType', displayField:'text ...

  5. UITableView的headerView展开缩放动画

    UITableView的headerView展开缩放动画 效果 源码 https://github.com/YouXianMing/Animations // // HeaderViewTapAnim ...

  6. 进程外Session保存和全局文件错误捕获

    Session深入学习,进程外的Session 当用户登入页面跳转时候,我们会将用户登录信息保存在服务端一个键值对的Session(Session池)中.那么Session池又是在哪里呢? 它最终默认 ...

  7. C语言:字符串读取流读取文件中的数据

    #include<stdio.h> int main() { //定义文件指针 FILE *f = NULL; //打开文件 f = fopen("1.txt",&qu ...

  8. 卷积交织/解交织C++程序

    交织基数为M,交织深度为I的卷积交织/解交织程序,延时为I*(I-1)*M. #include <iostream> #include <vector> #include &l ...

  9. go语言基础之同级目录

    1.同级目录 分文件编程(多个源文件),必须放在src目录 同一个目录,包名必须一样 设置GOPATH环境变量 go env 查看go相关环境路径 GO PATH: 在windows系统中,添加go环 ...

  10. magento upsell from cur_category

    <?php /** * Magento * * NOTICE OF LICENSE * * This source file is subject to the Academic Free Li ...