为何死循环!!!(帮助必关)
  • 板块灌水区
  • 楼主luogu_fkx
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/11/24 20:03
  • 上次更新2024/11/24 21:17:22
查看原帖
为何死循环!!!(帮助必关)
1229527
luogu_fkx楼主2024/11/24 20:03

愤怒的奶牛1

题目描述

奶牛贝里斯最近设计了款名叫“愤怒的奶牛”的游戏,在游戏中,可

以用一只愤怒的奶牛去引爆某个干草堆。当一个干草堆发生爆炸的时

候,会引爆一定范围内其他的干草堆爆炸,这样就会产生一系列的连 锁爆炸(假设干草堆里放了易燃易爆物品,小朋友们不要乱玩(⊙o⊙) 哦)。

有n个干草堆依次从左到右放在一条直线上,每个干草堆的位置(每个 位置保证不同)依次是x1,x2,x3...xn,如果奶牛把一个在位置x的 干草堆引爆了,那么这个干草堆的爆炸半径就是1,也就是说在距离这 个干草堆小于等于1范围内的其他干草堆都会引爆,这些被引爆的干草 堆的半径为2,然后被这些干草堆引爆的干草堆的爆炸半径是3,依次 增大,通俗的讲,就是如果某个干草堆是在时间t的时候被引爆的,那 么其爆炸半径就是t。

现在,请你来计算出最多可以引爆多少干草堆。

输入

第一行输入一个正整数n,表示干草堆的数量。

接下来n行,每行一个非负整数,表示每个干草堆的位置。

输出

输出只有一行一个整数,表示最多可以引爆的干草堆的数量

样例输入 复制

6

8

5

6

13

3

4

样例输出 复制

5

提示

样例中,最多只能引爆5个干草堆,愤怒的奶牛先把位于位置5的干草 堆引爆,导致位置6和位置4上的干草堆都引爆,然后导致位置3和位置 8上的干草堆都引爆,位置13上的干草堆由于距离太远,一直未能引爆 。

【数据说明】

1<=n<=100,所有干草堆的位置0<=xi<=1000000000。

#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,i,a[110],r,j,ma,t;
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(i=1;i<=n;i++)cin>>a[i];
	sort(a+1,a+n+1);
	for(t=1;t<=n;t++){
		i=t;r=1;
		while(1){
			for(j=1;j<=n;j++)
				if(a[j]>a[i]+r)
					break;
			if(j!=i-1)r++,i=j-1;
			else break;
		}
		i=t;r=1;
		while(1){
			for(j=1;j<=n;j++)
				if(a[j]<a[i]-r)
					break;
			if(j!=i+1)r++,i=j+1;
			else break;
		}
		ma=max(ma,i-t+1);
	}
	cout<<ma;
	return 0;
}

2024/11/24 20:03
加载中...