20230807 比赛总结

第一题

题目

题目描述

近期,多地推出常态化核酸检测政策,要求市民每隔一段时间都要完成一次核酸检测,反复循环。如果没有,在进入相关场所时,扫场所码会有弹窗提醒,将无法乘坐公共交通工具、无法进入公共场所。

为了响应国家号召,为防疫做贡献,每隔几天排队做一次核酸已经成为市民小王的日常。但并不是每次去他都能顺利检测,因为有时排队人很多,有时又因为有急事要离开,所以每个人因各种原因都有自己的排队忍耐度,假如小王的排队忍耐度为5,说明他最多允许自己前面排5个人,否则他就会离开。

假如你是核酸检测人员,已知现在有n人排队,和n个人的排队忍耐度,按照他们的排队顺序请你计算出今天会检测几个人。

输入格式

从文件 line.in 中读入数据。

第一行输入一个整数n(n<=1000)。

第二行输入n个人的排队忍耐度,数据之间用单个空格隔开(忍耐度<=1000)。

输出格式

输出到文件 line.out 中。

输出一个整数表示你今天检测的人数。

样例输入

10
5 2 2 2 2 3 100 4 6 200

样例输出

7

思路

因为题目要求按顺序, 所以就从前向后遍历一次, 判断第i个人前面是否有\(\le input[i]\)个人.

代码

#include<bits/stdc++.h>
using namespace std;

int main(){
	freopen("line.in","r",stdin);
	freopen("line.out","w",stdout);
	int n;
	cin>>n;
	int cnt=0;
	int input;
	for(int i=0;i<n;i++){
		cin>>input;
		if(cnt<=input){
			cnt+=1;
		}
	}
	cout<<cnt;
	return 0;
}

第二题

题目

Time Limit:
1000ms
Memory Limit:
32768kB
题目描述
如上图所示,每个位置都有一个建筑,每个位置占据的宽度都是一样,可能有不同的高度,现在需要挑选一个位置的上方开始人工降雨,问你最多能淋到雨的位置有几个。如果一个位置能被雨淋到,而且紧挨着的旁边的建筑不高于他,那么旁边的建筑也能被雨淋到,上图中在中间的地方降雨总共有4个位置会被淋到。

输入格式
第一行输入一个整数n
第二行输入n个数,表示n个建筑的高度。

输出格式
输出一个整数

样例
Input 1

5
1 2 1 2 1

Output 1

3

Input 2

8
1 2 1 1 1 3 3 4

Output 2

6

Input 3

10
522 575 426 445 772 81 447 629 497 202

Output 3

5

数据范围
\(1 \le n \le 1000\),建筑的高度都\(\le 1000\)

思路

分别计算每个建筑左边最长的值和右边最长的值, 两个的和再\(+1\) (因为建筑本身也算).

如何计算一个建筑左边or右边最长可灌溉的长度?
以左边为例, 从最左开始遍历, 第一个建筑长度为0 (因为它的左边没有建筑) , 后面的建筑每个判断, 如果比左边的一个建筑高, 那么它可以灌溉到左边的那个建筑, 那么左边的那个建筑能灌溉到的这个建筑也能, 所以是左边那个建筑的长度\(+1\); 如果它比左边那个建筑矮, 那么它所有左边的建筑都无法灌溉, 记为0.

代码

#include<bits/stdc++.h>
using namespace std;

int high[1005];
int leftLength[1005];
int rightLength[1005];
int aMax=-1e9;

int main(){
	freopen("rain.in","r",stdin);
	freopen("rain.out","w",stdout);
	int n;
	cin>>n;
	cin>>high[1];
	for(int i=2;i<=n;i++){
		cin>>high[i];
		if(high[i]>=high[i-1]){
			leftLength[i]=leftLength[i-1]+1;
		}
	}
	for(int i=n-1;i>=1;i--){
		if(high[i]>=high[i+1]){
			rightLength[i]=rightLength[i+1]+1;
		}
		aMax=max(aMax,leftLength[i]+rightLength[i]+1);
	}
	aMax=max(aMax,leftLength[n]+rightLength[n]+1);
	cout<<aMax;
	return 0;
}
posted @ 2023-08-07 15:16  Eutopiax7  阅读(47)  评论(0)    收藏  举报