hdu 5037 模拟网选1006
/*
模拟
实例:
33
1 10 5
5
2 10 3
3
6 1 3 2
1 1 4 2
1 1 5 2
1 1 6 2
1 1 7 2
1 5 20 8
1 2 3 4 5 1 20 8
5 0 20 8 2
4
2
3
3
4
5
4
4
5
*/
#include<stdio.h>
#include<stdlib.h>
#define N 2100000
int a[N];
int num;
int cmp(const void *a,const void *b) {
return *(int *)a-*(int *)b;
}
int ff(int pre,int now,int k,int c) {
int x,y,z,zz,ee;
x=pre+k+1;//前一个可以达不到的地方
y=x-now;//当前的和前一个的差值
z=(c-x)/(k+1);//有多少个k+1
zz=x+z*(k+1);//前一个最终可以达到的<=c的位置
num=num+z*2;//数目
ee=zz-y;//当前点可以达到的小于前一个点的位置
if(ee+k>=c){//如果可以到达c
return ee;//返回当前点的位置
}
else{
num++;//加上差值的那部分,数目要增1
return zz;//返回当前点的位置
}
}
int main() {
int n,m,i,j,k,t,d,f=0,pre,now;
scanf("%d",&t);
while(t--) {
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
a[0]=0;a[n+1]=m;
if(k==1) {
printf("Case #%d: %d\n",++f,m);
continue;
}
n++;
qsort(a,n,sizeof(a[0]),cmp);//排序
i=0;pre=-k;//必须以-k开始,对于0 20 8这个例子就需要
now=0;num=0;
while(i!=n) {
j=i+1;
while(a[j]-now<=k&&j<=n)//当前点可以到达的位置
j++;
if(j==n+1) {//如果从当前点可以一次到达
num++;
break;
}
j--;
if(j==i) {//如果前方没有可以到达的石头
d=ff(pre,now,k,a[i+1]);;//可以到的的小与等于a[i+1]的极限位置
pre=now;
now=d;
}
else {//如果前方有可以挑的石头
pre=now;//
now=a[j];
num++;
}
i=j;//定位当前位置
}
printf("Case #%d: %d\n",++f,num);
}
return 0;}
hdu 5037 模拟网选1006的更多相关文章
- HDU  2022 海选女主角
		http://acm.hdu.edu.cn/showproblem.php?pid=2022 Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业 ... 
- hdu 5037 周期优化
		http://acm.hdu.edu.cn/showproblem.php?pid=5037 有只青蛙踩石子过河,河宽m,有n个石子坐标已知.青蛙每次最多跳L.现在可以在河中再放一些石子,使得青蛙过河 ... 
- hdu 5037 Frog(贪心)
		题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5037 题解:为了让放的石头有意义肯定是没l+1的距离放2个也就是说假设现在位置为pos那么 ... 
- hdu 5037 Frog 贪心 dp
		哎,注意细节啊,,,,,,,思维的严密性..... 11699193 2014-09-22 08:46:42 Accepted 5037 796MS 1864K 2204 B G++ czy Frog ... 
- HDU 5037 Frog(贪心)
		题意比较难懂,一只青蛙过河,它最多一次跳L米,现在河中有石头,距离不等,上帝可以往里加石头,青蛙非常聪明,它一定会选择跳的次数最少的路径.问怎么添加石头能让青蛙最多的次数.输出青蛙跳的最多的次数. 考 ... 
- HDU 5037 FROG (贪婪)
		Problem Description Once upon a time, there is a little frog called Matt. One day, he came to a rive ... 
- HDU 5037 Frog(2014年北京网络赛 F 贪心)
		开始就觉得有思路,结果越敲越麻烦... 题意很简单,就是说一个青蛙从0点跳到m点,最多可以跳l的长度,原有石头n个(都仅表示一个点).但是可能跳不过去,所以你是上帝,可以随便在哪儿添加石头,你的策略 ... 
- HDU 6211 卡常数取模 预处理 数论
		求所有不超过1e9的 primitive Pythagorean triple中第2大的数取模$2^k$作为下标,对应a[i]数组的和. 先上WIKI:https://en.wikipedia.org ... 
- 【数学,方差运用,暴力求解】hdu-5037 Galaxy (2014鞍山现场)
		话说这题读起来真费劲啊,估计很多人做不出来就是因为题读不懂...... 从题目中提取的几点关键点: 题目背景就是银河系(Rho Galaxy)中的星球都是绕着他们的质心(center of mass) ... 
随机推荐
- bzoj 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列【hash】
			我%&&--&()&%????? 双模hashWA,unsigned long longAC,而且必须判断hash出来的数不能为0???? 我可能学了假的hash 这个 ... 
- 士兵杀敌 三   ---    O( 1 ) 的时间复杂度 .
			一看就是 十分简单的 题 , 然后上去开始无脑程序 超时~~~ 感觉时间复杂度 , 已经很低了 , 但是并没有什么卵用 . #include<stdio.h> #in ... 
- DHTML_____document对象的方法
			<html> <head> <meta charset="utf-8"> <title>document对象的方法</titl ... 
- 292 Nim Game Nim游戏
			您和您的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 到 3 块石头. 拿掉最后一块石头的人就是胜利者.由您来开局.你们两个都是聪明人,相信都有最佳的游戏策略. 请编写一个函 ... 
- 中国移动Lumia机强制升级Windows10手机开发者预览版的方法
			[最新消息4-9]微软已经确定将于PST太平洋标准时间周五上午十点也就是北京时间本周六(4-11)凌晨一点推送更新Windows10手机预览版 但是推送更新的机型不包括Lumia Icon 和930 ... 
- 计算给定数组 arr 中所有元素的总和的几种方法
			1.forEach遍历: function sum(arr) { var result = 0; arr.forEach(function(item,index) { ... 
- python实现qq机器人qqbot
			title: python实现qq机器人qqbot tags: python date: 2018-6-1 10:19:00 --- 以下内容为转载 一.介绍 qqbot 是一个用 python 实现 ... 
- 在Resource中使用x:Bind
			Build2015上,MS热情高涨的演示了x:Bind,一种新的Binding方式,新的方式有如下优点: 1更好的性能(内存占用,CPU占用) 2BuildTime的Binding 具体在Channe ... 
- ASP MVC
			V-view 显示层 C-controller 控制层 M-model 模型 D-database 数据库 S-Service 服务 D-Database/Dao 数据库/访问数据库的方法 View即 ... 
- mysql 性能优化索引、缓存、分表、分布式实现方式。
			系统针对5000台终端测试结果 索引 目标:优化查询速度3秒以内 需要优化.尽量避免使用select * 来查询对象.使用到哪些属性值就查询出哪些使用即可 首页页面: 设备-组织查询 优化 避免使用s ... 
