/*
模拟
实例:
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的更多相关文章

  1. HDU 2022 海选女主角

    http://acm.hdu.edu.cn/showproblem.php?pid=2022 Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业 ...

  2. hdu 5037 周期优化

    http://acm.hdu.edu.cn/showproblem.php?pid=5037 有只青蛙踩石子过河,河宽m,有n个石子坐标已知.青蛙每次最多跳L.现在可以在河中再放一些石子,使得青蛙过河 ...

  3. hdu 5037 Frog(贪心)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5037 题解:为了让放的石头有意义肯定是没l+1的距离放2个也就是说假设现在位置为pos那么 ...

  4. hdu 5037 Frog 贪心 dp

    哎,注意细节啊,,,,,,,思维的严密性..... 11699193 2014-09-22 08:46:42 Accepted 5037 796MS 1864K 2204 B G++ czy Frog ...

  5. HDU 5037 Frog(贪心)

    题意比较难懂,一只青蛙过河,它最多一次跳L米,现在河中有石头,距离不等,上帝可以往里加石头,青蛙非常聪明,它一定会选择跳的次数最少的路径.问怎么添加石头能让青蛙最多的次数.输出青蛙跳的最多的次数. 考 ...

  6. HDU 5037 FROG (贪婪)

    Problem Description Once upon a time, there is a little frog called Matt. One day, he came to a rive ...

  7. HDU 5037 Frog(2014年北京网络赛 F 贪心)

    开始就觉得有思路,结果越敲越麻烦...  题意很简单,就是说一个青蛙从0点跳到m点,最多可以跳l的长度,原有石头n个(都仅表示一个点).但是可能跳不过去,所以你是上帝,可以随便在哪儿添加石头,你的策略 ...

  8. HDU 6211 卡常数取模 预处理 数论

    求所有不超过1e9的 primitive Pythagorean triple中第2大的数取模$2^k$作为下标,对应a[i]数组的和. 先上WIKI:https://en.wikipedia.org ...

  9. 【数学,方差运用,暴力求解】hdu-5037 Galaxy (2014鞍山现场)

    话说这题读起来真费劲啊,估计很多人做不出来就是因为题读不懂...... 从题目中提取的几点关键点: 题目背景就是银河系(Rho Galaxy)中的星球都是绕着他们的质心(center of mass) ...

随机推荐

  1. 洛谷P3383 【模板】线性筛素数 (埃拉托斯特尼筛法)

    题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行 ...

  2. 1.2Hello, World!的大小

    描述 还记得在上一章里,我们曾经输出过的“Hello, World!”吗? 它虽然不是本章所涉及的基本数据类型的数据,但我们同样可以用sizeof函数获得它所占用的空间大小. 请编程求出它的大小,看看 ...

  3. CDH搭建Hadoop分布式服务器集群(java新手小白)

    1首先对于一个java还白的小白,先理解CDH与Hadoop的关系 一.Hadoop版本选择. Hadoop大致可分为Apache Hadoop和第三方发行第三方发行版Hadoop,考虑到Hadoop ...

  4. 专题七:UDP编程补充——UDP广播程序的实现

    一.程序实现 UDP广播程序的实现代码: using System; using System.Net; using System.Net.Sockets; using System.Text; us ...

  5. C++中图片重命名

    非常简单的小程序,满足自己的需求. #include <iostream> #include <fstream> #include<sstream> using n ...

  6. [ CodeForces 1059 D ] Nature Reserve

    \(\\\) \(Description\) 你现在有\(N\)个分布在二维平面上的整点\((x_i,y_i)\),现在需要你找到一个圆,满足: 能够覆盖所有的给出点 与\(x\)轴相切 现在需要你确 ...

  7. PAT甲级考前整理(2019年3月备考)之一

       转载请注明出处:https://www.cnblogs.com/jlyg/p/7525244.html 终于在考前,刷完PAT甲级131道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种 ...

  8. Context Switches msdn

    Context Switches  https://msdn.microsoft.com/en-us/library/ms682105(VS.85).aspx The scheduler mainta ...

  9. 网络编程基础_4.1TCP_服务端

    TCP_服务端 #include <stdio.h> // 1. 包含必要的头文件和库, 必须位于 windows之前 #include <WinSock2.h> #pragm ...

  10. arx刷新图形界面

    actrTransactionManager->flushGraphics(); acedUpdateDisplay();