The 2021 Sichuan Provincial 四川省赛M.True Story(模拟)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了The 2021 Sichuan Provincial 四川省赛M.True Story(模拟)相关的知识,希望对你有一定的参考价值。

LINK

题意

现在是时刻 0 0 0,航班在 p 0 p_0 p0时刻起飞

n n n个人,第 i i i个人速度为 s i / h s_i/h si/h,每个人距离机场距离 x x x

显然有 k k k次公告,第 i i i次表示在时刻 t i t_i ti开始时,告诉所有人航班延迟到 p i p_i pi起飞

同时设一个人在时刻 f f f,此时航班在 P P P时刻起飞,距离机场 X X X

只有当 ( P − f + 1 ) ∗ s i > = X (P-f+1)*s_i>=X (Pf+1)si>=X时,这个人才会向机场出发,否则不动.

问有几个人能到机场


显然如果在 p p p时刻某个人开始跑动,那么他一定会持续的跑下去直到到达终点

因为这段时间航班只会推迟不会提前,所以一定能跑下去

所以只需要看每个人是否能起跑就行了

也就是找到 m x = m a x ( p i − t i ) \\rm mx=max(p_i-t_i) mx=max(piti)

此时这个人能跑 m x mx mx秒,能跑到他就能开跑

#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5+10;
int s[maxn],t[maxn],p[maxn],n,m,x,p0;
int main()
{
	cin >> n >> m >> x >> p0;
	for(int i=1;i<=n;i++)	scanf("%d",&s[i] );
	for(int i=1;i<=m;i++)	scanf("%d",&t[i] );
	for(int i=1;i<=m;i++)	scanf("%d",&p[i] );
	int mx = p0, ans = 0;
	for(int i=0;i<=m;i++)	mx = max( mx,p[i]-t[i] );
	for(int i=1;i<=n;i++)	ans += (1ll*mx*s[i]>=x);
	cout << ans;
}

以上是关于The 2021 Sichuan Provincial 四川省赛M.True Story(模拟)的主要内容,如果未能解决你的问题,请参考以下文章

The 2021 Sichuan Provincial 四川省赛 J - Ants(模拟+技巧)

The 2021 Sichuan Provincial 四川省赛 F.Direction Setting(最小费用流)

The 2021 Sichuan Provincial 四川省赛 E.Don‘t Really Like How The Story Ends(贪心dfs)

ArcPy批量计算Mean Center的两个实例

Vue2.0 的漫长学习ing-2-7

2018年第十届ACM四川省省赛题解(10 / 11)