/*
模拟
实例:
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. 清北考前刷题day5早安

    /* C(n,k) */ #include<iostream> #include<cstdio> #include<cstring> #define ll long ...

  2. [App Store Connect帮助]五、管理构建版本(2)查看构建版本和文件大小

    您可以查看您为某个 App 上传的所有构建版本,和由 App Store 创建的变体版本的大小.一些构建版本在该 App 发布到 App Store 上后可能不会显示. 必要职能:“帐户持有人”职能. ...

  3. (博弈论)51NOD 1072 威佐夫游戏

    有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取.拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出2堆石子的数量, ...

  4. c++ gets函数

    函数名称:gets函数 函数结构:gets() 所需头文件:#include<cstdio> 函数作用:持续读入,直到遇到换行停止输出.

  5. thinkphp 5 常用的助手函数

    load_trait:快速导入Traits,PHP5.5以上无需调用 /**     * 快速导入Traits PHP5.5以上无需调用     * @param string    $class t ...

  6. Tornado引入静态css、js文件

    一.静态路径 template_path=os.path.join(os.path.dirname(__file__), "templates") 这里是设置了模板的路径,放置模板 ...

  7. Fiddler——抓包工具的使用

    fiddler安装 pc端安装fiddler,自行从百度下载即可 Fiddler是强大且好用的Web调试工具之一,它能记录客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输 ...

  8. git 分支处理

    git 创建常用(多)分支(如:Master 主分支.Develop 分.Feature 功能分支.Release 预发布分支.Hotfix(或者Fixbug) 分支)步骤1.mkdir 项目名    ...

  9. Error parsing D:\sdkforas\android-sdk-windows\system-images\android-22\android-wear\x86\devices.xml

    今天在工作过程中向Android Studio中导入一个项目,最后运行出现如下错误: Cannot reload AVD list: cvc-enumeration-valid: Value '280 ...

  10. Linux下如何从mysql数据库里导出导入数据

    https://blog.csdn.net/u012884402/article/details/47337701 一. 表的导入 1.进入数据库 mysql 数据库名 2.​查看表 show tab ...