CF 637D. Running with Obstacles 贪心
来源:互联网 发布:pic12数据手册 编辑:程序博客网 时间:2024/05/16 05:32
自己A这个题还是花了一些力气,原因还是在于思维上的不足,首先容易想到连续的点可以当作一个区间来处理,
然后幼稚认为跨过一个区间必须从上一个区间后面跨来,结果wa了。
后来发现可以一次性跨过多个区间。
最后得出本题解法:
首先将点排序,两点之间距离太短不够起跳的两点放在一个区间,这样问题转化为跨过若干个区间。
如果能跨过某一个区间,那么一定有办法停在ri+1,就是区间右端点+1的位置,而且这样不会比最优解差。
转化出的区间一个一个顺次跨,这样也不会比最优解差。
#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>using namespace std;typedef long long ll;const int INF =0x3f3f3f3f;const int maxn= 200000 ;int n,ed,runD,jumpD;int a[maxn+20];struct Seg{ int le,ri;}b[maxn+10];void pre(){ int i=1; int cnt=0; while(i<=n) { b[++cnt].le=a[i]; while(i+1<=n&&a[i+1]-(a[i]+1)<=runD) { i++; } b[cnt].ri=a[i]; i++; } n=cnt;}bool work(){ b[0].ri=-1; for(int i=1;i<=n;i++) { if(runD>=b[i].le-(b[i-1].ri+1)|| b[i].ri-b[i].le+2>jumpD ) return false; } return true;}void print(int x,int des){ if(!x) { printf("RUN %d\n",b[1].le-1); return; } print(x-1,b[x].le-1 ); printf("JUMP %d\n",b[x].ri+1-b[x].le+1 ); if(b[x].ri+1!=des) { printf("RUN %d\n",des-b[x].ri-1); }}int main(){ while(~scanf("%d%d%d%d",&n,&ed,&runD,&jumpD)) { for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } sort(a+1,a+1+n); pre(); if(!work()) { puts("IMPOSSIBLE"); continue; } print(n,ed); } return 0;}
首先要简化问题
0 0
- CF 637D. Running with Obstacles 贪心
- Codeforces 637D Running with Obstacles 【贪心】
- Codeforces 637D Running with Obstacles (贪心)
- CodeForces 637D Running with Obstacles(贪心模拟)
- CodeForces 637 D.Running with Obstacles(贪心)
- CF 402-D 贪心
- CF 721D贪心
- CF 738D 贪心
- CF 748D 贪心
- CF 190div2 D(贪心)
- CF 515D 图,贪心
- CF 593D LCA,贪心
- CF-45D. Event Dates(贪心)
- CF D. Population Size(贪心+模拟)
- CF#310 div2 D set+pair+贪心
- cf#310-D. Case of Fugitive-贪心
- cf 721 d(优先队列+贪心)
- CF 754D 贪心 + 优先队列
- chome, firefox浏览器js的jQuery加载.get(),.ajax()
- Android面试准备 第一天 第一例 Handler机制
- 在mac air下的 android studio下 遇到的奇葩错误
- swift与OC混编需要注意的小问题
- 1005. 继续(3n+1)猜想 (25)——做题纪录
- CF 637D. Running with Obstacles 贪心
- Java 环境变量参数
- Android开发一些学习经验
- spring aop表达式详解
- BoneCP数据源配置详解
- TcxgridDbLayoutView使用有感
- 【重要】Bitmap 花式耍法
- x86处理器中的CS与IP寄存器
- linux kernel current宏