[洛谷] - P2077 红绿灯

题目描述

在一个城市,有一条笔直的公路,在这条公路上有N个十字路口,每个路口都设有一个红绿灯,已知相邻的两个路口距离为Ai千米(1≤i<N),每个路口的红灯时间为Ri,绿灯时间为Gi,没有黄灯,现在有一辆车从距离1号十字路口M千米的位置出发,且此时所有路口的红绿灯刚好从红灯跳到绿灯,问这辆车通过每个路口的时间(不能闯红灯,这辆车的速度为1千米每分钟)。

输入输出格式

输入格式:

 

第一行两个正整数N和M

第二行N-1个正整数Ai

第三行N个正整数Ri,为红灯时间(分钟)

第四行N个正整数Gi,为绿灯时间(分钟)

思路 : 因为是一道纯模拟的题, 思路我就以后有时间再写吧.题太简单...代码写的不够简洁以后再优化吧.

          另一点,输入,输出可以使用scanf和printf进行常数优化.

#include <iostream>
using  namespace std;
int dis[100005];
int green[100005];
int red[100005];
int main() {
    int n, m;
    cin >> n >> m;
    dis[0] = m;

    int time  = 0;
    for(int i = 1; i < n ; i++) {
        cin >> dis[i];
    }
    for(int i = 0; i < n ; i++) {
        cin >> red[i];
    }

    for (int i = 0; i < n; ++i) {
        cin >> green[i];
    }

    for(int i = 0; i < n ; i++) {
        time += dis[i];
        int tmp = time % (red[i] + green[i]);
        if( tmp > green[i] ) time += red[i] - (tmp - green[i]);
        cout << time << endl;
    }


    return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值