hdu5246 超级赛亚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.
第一行一个整数T,表示T组数据
对于每组数据,第一行包含三个整数n,m,k(1≤n≤104,1≤m,k≤108)
第二行包含n个正整数,表示彪形大汉的战斗力(战斗力为不超过1012的正整数)
假设百小度能打败全部的ACMer,再输出"why am I so diao?"
否则再输出"madan!"
2
5 11 3
15 13 10 9 8
5 11 3
8 9 10 13 16
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的更多相关文章
- hdu5246超级赛亚ACMer
题意(中文题意直接粘吧) 超级赛亚ACMer Problem Description 百小度是一个ACMer,也是一个超级赛亚人,每个ACM ...
- 2015年百度之星初赛(1) --- A 超级赛亚ACMer
超级赛亚ACMer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem D ...
- 2015 百度之星 1001 超级赛亚ACMer 贪心
超级赛亚ACMer Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1750 Descrip ...
- 二分查找 2015百度之星初赛1 HDOJ 5246 超级赛亚ACMer
题目传送门 /* 二分找到不大于m的最大的数,记做p,只要a[p] + k <= a[p+1]就继续 注意:特判一下当没有比m小的数的情况:) */ #include <cstdio> ...
- 【HDU-5246】超级赛亚ACMer(贪心)
之前用了个nlogn的算法超时了.仅仅能改成n的算法了 大题贪心思路就是 对每一个人的能力值从小到大进行排序,当前能力值为now,那么我们找到一个人的能力使得这个能力值 <= now.now + ...
- 5w 字 | 172 图 | 超级赛亚级 Spring Cloud 实战
一.PassJava 项目简介 PassJava-Learning 项目是 PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. PassJava 是一款 Java 面试刷题 的 ...
- UITableViewCell单元格的删除、插入、移动
UITableViewDelegate的方法 设置编辑模式中得cell的编辑样式(删除或插入) - (UITableViewCellEditingStyle)tableView:( ...
- 【CityHunter】通过Unity3D来制作游戏中AR部分的内容
嗯,最近再考虑,CityHunter中,玩家攻略藏宝图时,为了增加可玩性,应该增强在AR部分的游戏性.最近特别火的游戏<Pokemon Go>在打开摄像头以后,可以看到小精灵,实际上,如果 ...
- C_C++圣战(摘录)
我的回忆和有趣的故事 --- C/C++圣战篇 李维 (声明以下的这篇文章内容是我个人的回忆以及看法,没有任何特别的偏见,许多的事情是根据我的记忆以及从许多人的诉说中得知的,也许内容不是百分之百的正确 ...
随机推荐
- centos7 通过kvm+vnc 实现远程桌面虚拟化和创建windows、Linux虚拟机
感谢朋友支持本博客.欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- 查找(二)简单清晰的B树、Trie树具体解释
查找(二) 散列表 散列表是普通数组概念的推广.因为对普通数组能够直接寻址,使得能在O(1)时间内訪问数组中的任何位置.在散列表中,不是直接把keyword作为数组的下标,而是依据keyword计算出 ...
- 漫谈js自定义事件、DOM/伪DOM自定义事件
一.说明.引言 我JS还是比较薄弱的,本文的内容属于边学边想边折腾的碎碎念,可能没什么条理,可能有表述不准确的地方,可能内容比较拗口生僻.如果您时间紧迫,或者JS造诣已深,至此您就可以点击右侧广告(木 ...
- jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类
jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类 本例有另外2个关联案例,演示地址分别为2.php,3.php 演示 XML/HTML Code <div class="ar ...
- arcgis新版本增加的功能
1.导出拓扑错误 2.应用图层的符号设置 3.创建 SQLite 数据库 4.最小包围体 5.图形缓冲 6.按属性分割
- 关于DirectShow SDK 和Windows SDK,及DirectX SDK
关于DirectShow SDK 和Windows SDK,及DirectX SDK 本文描述了DirectShow SDK ,Windows SDK,DirectX SDK ,VS200?之间的 ...
- Additive属性动画
Additive属性动画 参考 http://ronnqvi.st/multiple-animations/ 效果 源码 https://github.com/YouXianMing/Animatio ...
- openshift 添加cron定时任务
一般linux添加cron任务是在/etc/crontab,但是由于openshift的权限木有这么开放,所以如果需要设置定时任务的话,需要在如下的文件夹下添加你的sh文件,因为我需要的是每天运行一次 ...
- Android之与当前连接的wifi进行文件夹的浏览与传输
先上传jar文件:ConnectWifi.jar.zip 上传源文件:org.zip 使用实例及相应的注释: import java.io.File; import java.net.InetAddr ...
- JAVA常见算法题(三十四)---计算加密之后的电话号码
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的, 加密规则如下: 每位数字都加上5,然后用和除以10的余数代替该数字, 再将第一位和第四位交换,第二位和第三位交换. 求加密之后的 ...