前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【CodeForces 730H】Car Repair Shop

【CodeForces 730H】Car Repair Shop

作者头像
饶文津
发布2020-06-02 15:54:49
3570
发布2020-06-02 15:54:49
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏

BUPT 2017 summer training (for 16) #1F

题意

题解

模拟,先看从s[i]时刻开始修理,和之前i-1个是否冲突。如果冲突,就枚举每个s[j]+d[j]时刻开始,看是否冲突,再从中选择最小的时刻。

代码

代码语言:javascript
复制
#include <cstdio>
#include <algorithm>
#define N 201
#define inf 0x3f3f3f3f
using namespace std;
int n;
int s[N],d[N];
bool ck(int i,int j){
    return s[j]>s[i]+d[i]-1 || s[i]>s[j]+d[j]-1;
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
        scanf("%d%d",&s[i],&d[i]);
    for(int i=1;i<=n;++i){
        bool fromS=true;
        
        for(int j=1;j<i;++j)
            if(!ck(i,j))
                fromS=false;
        
        if(!fromS){
            int ss=inf;
            for(int j=0;j<i;++j){
                s[i]=s[j]+d[j]+(j==0);
                bool valid=true;
                for(int k=1;k<i;++k)
                    valid&=ck(i,k);
                if(valid) ss=min(s[i],ss);
            }
            s[i]=ss;
        }
        printf("%d %d\n",s[i],s[i]+d[i]-1);
    }
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题意
  • 题解
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档