Codeforces 637D Running with Obstacles (贪心)

原创 2016年05月31日 15:55:19

解析:查看每对相邻的障碍,如果距离大于s,那么可以落地并在下一个障碍前起跳。对每次落地和起跳加以判断即可。

[code]:

#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
typedef pair<int,int> P;
const int maxn = 2e5+5;

int n,m,s,d,a[maxn],top;
P ans[4*maxn];

void sol(){
    int i,j,run,jump,len;
    run = -1;jump = -1;
    for(i = 1;i <= n;i++){
        if(s+2<=a[i]-a[i-1]){
            if(jump!=-1){
                if(a[i-1]+1-jump<=d&&(top>0&&ans[top-1].first==0&&ans[top-1].second>=s))ans[top++] = P(1,a[i-1]+1-jump);
                else{
                    puts("IMPOSSIBLE");
                    return;
                }
            }
            ans[top++] = P(0,a[i]-a[i-1]-2);
            jump = a[i]-1;
        }
    }
    if(a[n]+1-jump<=d&&(top>0&&ans[top-1].first==0&&ans[top-1].second>=s)) ans[top++] = P(1,a[n]+1-jump);
    else{
        puts("IMPOSSIBLE");
        return;
    }
    if(m!=a[n]+1){
        ans[top++] = P(0,m-a[n]-1);
    }
    for(i = 0;i < top;i++){
        if(ans[i].first) printf("JUMP %d\n",ans[i].second);
        else printf("RUN %d\n",ans[i].second);
    }
}

int main(){
    int i,j;
    scanf("%d%d%d%d",&n,&m,&s,&d);
    for(i = 1;i <= n;i++) scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    a[0] = -1;
    a[n+1] = m+1;
    sol();

    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

codeforces 158B Taxi(贪心小水题)

B. Taxi 点击打开题目 time limit per test 3 seconds memory limit per test 256 megabytes input...
  • u012860428
  • u012860428
  • 2014年05月26日 18:57
  • 1605

贪心算法(二)——一般背包问题

题目 有一个背包,最多放M kg的物体(物体大小不限); 有n个物体,每个物体的重量为Wi,每个物体完全放入背包后可获得收益Pi。问:如何放置能获得最大的收益? 注:背包问题分为两种,若每个...
  • u010425776
  • u010425776
  • 2017年04月05日 21:19
  • 1756

【贪心算法】区间调度问题总结

1. 单区间调度问题问题定义:存在单一资源,有一组以时间区间形式表示的资源请求reqs={req-1, req-2, …, req-n},第i个请求希望占用资源一段时间来完成某些任务,这段时间开始于b...
  • hongchh
  • hongchh
  • 2016年08月11日 16:07
  • 1872

Error running app: This version of Android Studio is incompatible with the Gradle Plugin used. Try d

在开发中从代码仓库导入项目时,突然遇到个问题, 就是cline 和 Rebuile 都没有问题 ,但是一运行就报Error running app: This version of Android ...
  • q9104422999
  • q9104422999
  • 2016年09月06日 16:39
  • 781

【codeforces 724D】【贪心】 Dense Subsequence 【一个字符串,按照一定的区间要求从中选出一些字符,使得这串字符的sort后字典序最小】

传送门:D. Dense Subsequence 描述: D. Dense Subsequence time limit per test 2 second...
  • guhaiteng
  • guhaiteng
  • 2016年10月09日 20:29
  • 941

Codeforces 798D Mike and distribution【思维+贪心】好题!好题!感觉智商受到了一万点伤害= =

D. Mike and distribution time limit per test 2 seconds memory limit per test 256 megabytes ...
  • mengxiang000000
  • mengxiang000000
  • 2017年05月03日 21:19
  • 399

【Codeforces Round 328 (Div 2)D】【树的直径 树的重心 贪心 两次dfs都找最小编号最远点】Super M 经过树上所有重要点的最小距离

#include #include #include #include #include #include #include #include #include #include #include #...
  • snowy_smile
  • snowy_smile
  • 2015年11月07日 21:34
  • 390

CodeForces 363D 【二分+贪心】

思路: 一开始是没有办法贪心的,但是大致的思路就是我最好就是买价格便宜的车,这样肯定是能买到最多的车,而且花的少。 所以直接二分答案。 然后人的总花费=最有钱的那些人去买最便宜的那些车的情况; #in...
  • KEYboarderQQ
  • KEYboarderQQ
  • 2016年12月04日 13:52
  • 143

CodeForces-732D-Exams(二分 模拟 贪心)

D. Exams time limit per test1 second memory limit per test256 megabytes inputstandard input outp...
  • qq_32680617
  • qq_32680617
  • 2016年11月23日 13:06
  • 179

【Codeforces Round 169 (Div 2) D】【简单数位贪心】Little Girl and Maximum XOR 区间选两数使得异或值尽可能大

D. Little Girl and Maximum XOR time limit per test 2 seconds memory limit per test 256 m...
  • snowy_smile
  • snowy_smile
  • 2017年07月02日 20:44
  • 223
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Codeforces 637D Running with Obstacles (贪心)
举报原因:
原因补充:

(最多只允许输入30个字)