P2077 红绿灯

P2077 红绿灯

提交10.15k

通过4.43k

时间限制1.00s

内存限制125.00MB

提交答案加入题单复制题目

做题计划(首页)

个人题单

团队题单

保存

选择团队

保存

题目提供者ahwhGQY

难度入门

历史分数100

 提交记录  查看题解

标签

 查看算法标签

进入讨论版

相关讨论

 查看讨论

推荐题目

 查看推荐

正在上传…重新上传取消 洛谷推荐关闭

 复制Markdown  展开

题目描述

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

输入格式

第一行两个正整数 NN 和 MM

第二行 N-1N−1 个正整数 A_iAi​

第三行 NN 个正整数 R_iRi​,为红灯时间(分钟)

第四行 NN 个正整数 G_iGi​,为绿灯时间(分钟)

输出格式

共 NN 行,每行一个正整数,为这辆车通过每个十字路口的最早时间。

输入输出样例

输入 #1复制

5 3
2 4 3 2
3 4 3 4 3
2 3 2 3 1

输出 #1复制

5
7
11
14
16

说明/提示

对于 50\%50% 的数据 N\le 1000N≤1000; 

对于 100\%100% 的数据 N\le 10^5N≤105,M,A_i\le 10M,Ai​≤10,R_i,G_i\le 5Ri​,Gi​≤5。

【AC代码】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
inline int fread()
{
	char ch=getchar();
	int n=0,m=1;
	while(ch<'0' or ch>'9')
	{
		if(ch=='-')m=-1;
		ch=getchar();
	}
	while(ch>='0' and ch<='9')n=(n<<3)+(n<<1)+ch-48,ch=getchar();
	return n*m;
}
int n,m,a[N],r[N],g[N],b[N],x;
signed main(int argc,char **argv)
{
	n=fread(),m=fread();
	for(int i=1;i<n;i++)a[i]=fread();
	for(int i=1;i<=n;i++)r[i]=fread();
	for(int i=1;i<=n;i++)g[i]=fread(),b[i]=r[i]+g[i];
	for(int i=1;i<=n;i++)
	{
		m+=a[i-1],x=m%b[i];
		if(x>g[i])m+=b[i]-x;
		cout<<m<<"\n";
	}
	return 0;
}
给个关注吧

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值