站外题喵~
  • 板块灌水区
  • 楼主Wendy_Hello_qwq
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/6/23 22:06
  • 上次更新2024/6/24 12:41:46
查看原帖
站外题喵~
1039211
Wendy_Hello_qwq楼主2024/6/23 22:06

1539.糖果共享(share)

题目描述

Jimmy 要和其他同学们一起分享老师带来的糖果了!可是,老师不想让同学们这么快就领到糖果,于是决定跟大家玩一个分享糖果的游戏。

老师让 n 个同学们围成一圈坐在一起。接下来,对于第 i 个同学,老师会在第 tit_i 秒发给 TA 一份糖果;每次得到糖果之后,第 i 个同学会固定等待 pip_i秒,然后把糖果分给身旁的第 i+1 个同学(特殊的情况是,第 n 个同学会把糖果分给第 1 个同学)。注意每个同学既可以从老师那里得到糖果,也可以从旁边的同学那里得到糖果,而且老师发的糖果足够多,同学们只要收到了糖果,就一定能将糖果分出去。同学们的分糖果动作非常快,可以认为是不占用时间的。

在参与游戏的同时,Jimmy 很想知道他的几个好朋友们最快什么时候能得到糖果。你能帮帮他吗?

输入 第一行一个整数 n,表示同学们的数量。

第二行 n 个整数 t1,t2,⋯,tnt_1,t_2,⋯,t_n,表示每个同学收到老师给的糖果的时刻。

第三行 n 个整数 p1,p2,⋯,pnp_1,p_2,⋯,p_n,表示每个同学收到糖果之后、将糖果分出去之前等待的时间。第四行一个整数 q,表示 Jimmy 的询问数量。

接下来 q 行,每行一个整数 xix_i,表示 Jimmy 想问第 xi个同学最快什么时候能得到糖果。

输出 输出共 q 行,每行一个整数,表示每个询问对应的答案。

样例数据
输入 #1 复制
3
3 10 100
4 1 5
2
2
3
输出 #1 复制
7
8

数据范围限制

对于 30% 的数据,保证 1≤n,q≤50001≤n,q≤5000。

对于100%的数据,保证1≤n,q≤2∗105≤ti,pi≤109,1≤xi≤n1≤n,q≤2*10^5≤t_i,p_i≤10^9,1≤x i≤n。

代码:

#include <bits/stdc++.h>
using namespace std;
int n, q, t[5007], p[5007], x[5007], m[5007];
int main()
{
	scanf ("%d", &n);
	for (int i = 1; i <= n; i++)
		scanf ("%d", &t[i]);
	for (int i = 1; i <= n; i++)
		scanf ("%d", &p[i]);
	scanf ("%d", &q);
	for (int i = 1; i <= q; i++)
		scanf ("%d", &x[i]);
	for (int i = 1; i <= n; i++)
		m[i + 1] = min (t[i + 1], t[i] + p[i]);
	for (int i = 1; i <= n; i++)
		m[i + 1] = min (t[i + 1], t[i] + p[i]);
	for (int i = 1; i <= q; i++)
		printf ("%d\n", m[x[i]]);
	return 0;
}
2024/6/23 22:06
加载中...