Bootstrap

[ABC385C] Illuminate Buildings题解

题目传送:洛谷 /AtCoder

题目翻译:{题目翻译}

解题思路:

这题可以用暴力解,用一维数组把楼的高度存起来.

楼的高度( H i H_i Hi)057577577 H N H_N HN
下标( i _i i)012345678 N N N

然后从输入就开始寻找:从 i _i i项开始,向前找 i _i i轮,每一轮的间隔从 1 _1 1 − _- i _i i递增(设为j),如果 H i H_i Hi不等于 H i H_i Hi − _- j _j j,就跳出这一轮。如果这一轮顺利结束,就记录这一轮被经过的点数m,与之前的记录ma(初始为0)进行 m a = m a x ( m , m a ) ma=max(m,ma) ma=max(m,ma),保留最大值。当最后第 N N N项寻找完,最大值ma即为答案。

限制因素: 1 ≤ N ≤ 3000 1 \leq N \leq 3000 1N3000, 1 ≤ H i ≤ 3000 1 \leq Hi \leq 3000 1Hi3000,所有输入值均为整数。

                 ↑数据量不大,不会超时。

AC代码:

#include<bits/stdc++.h>
using namespace std;
int a[3005];
int main()
{
    int n,m,ma=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    	cin>>a[i];
    	for(int j=1;j<=i;j++)
    	{
    		m=0;
    		for(int k=i;k>=1;k-=j)
    		{
    			if(a[k]==a[i])
    			{
    				m+=1;
    				ma=max(m,ma);
				}
				else
				{
					break;
				}
			}
		}
	}
	cout<<ma;
	return 0;
}
;