CSU-1408: 种植树苗
来源:互联网 发布:女装m码的数据 编辑:程序博客网 时间:2024/04/25 18:31
Description
如下图所示,我们在门前一条笔直的道路上栽了N棵树苗。
但是,最近我们发现,如果两棵树苗的距离小于一个常数D,这两棵树苗的发育都会受到阻碍。因此我们决定移除一些树苗,从而使任意两棵树苗的距离都不小于D,并且我们希望留下的树苗越多越好。
Input
输入的第一行包含一个整数T (T > 0),表示一共有T组测试数据。
对于每组测试数据,第一行包含两个整数N,D (1 ≤N ≤ 105, 1≤ D ≤ 109)。第二行包含N个整数a1,a2, ...,aN (0 <a1 <a2 < ... <aN < 109),其中ai (1 ≤ i ≤N)表示第i棵树苗的位置。
Output
对于每组测试数据,输出我们最多可以留下多少棵树苗,并且任意两棵树苗的距离都不小于D。
Sample Input
51 372 13 42 23 47 21 2 3 5 6 8 97 41 2 3 5 6 8 9
Sample Output
12143
HINT
Source
中南大学第八届大学生程序设计竞赛
贪心题: 以第一个坐标为起始点,如果后续序列的数与之距离小于D,表示需要移除标记为1,否则起始点更新为当前数,最后统计标记为0的数即可。
#include<cstring>#define N 100005int a[N],dp[N];int main(){ int t,n,d,i,j,ans; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&d); for(i=1;i<=n;i++) scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); ans=a[1]; for(i=2;i<=n;i++) { if(a[i]-ans<d) dp[i]=1; else ans=a[i]; } ans=0; for(i=1;i<=n;i++) if(!dp[i]) { //printf("%d",a[i]); ans++; } printf("%d\n",ans); //printf("\n"); }
0 0
- CSU-1408: 种植树苗
- CSU 1408: 种植树苗(贪心啊 )
- 1408: 种植树苗
- 种植树苗
- 种植树苗
- nyoj-1164-种植树苗
- CSU-1408
- 榉树苗批发价格多少钱 榉树苗批发价格
- 搬运树苗(move)
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- bzoj1208(splay tree)
- linux read 用法
- android app 头像上传原理
- Jquery ajax传递数组
- myeclipse 6.5 生成注册码的java代码
- CSU-1408: 种植树苗
- 浮点列类型
- POJ 2828 Buy Tickets (线段树 单点更新 插队问题)
- Gradle脚本对Java项目工程编译,打包,运行和发布具体过程详例
- xamarin.ios 代码中设置启动的 Storyboard
- UML之轻松入门(2)-掌握Junit,让我们的开发更高效
- Java的网络编程解析
- COM学习笔记(四):注册表、内存管理、GUID<->字符串
- dedecms系统TAG标签按栏目调用,只显当前栏目tags标签