码蹄杯 三合一 题型:模拟

73 阅读1分钟

码题集OJ-三合一 (matiji.net)

按照题意模拟即可。

画图解析

image.png

比如刚开始a1,a2,a3合并比如刚开始a1,a2,a3合并,那么相加和SUM更新为a1的位置: image.png 然后我们需要把a4,a5的值往前挪(把a2,a3去掉,因为合并为a1了):

image.png

然后我们需要继续判断前3个数是否可以合并:

image.png

可以合并的话继续合并一个新的sum然后重复之前的步骤,直到此时数组元素个数少于3个,此时无法再合并了。

退出循环,输出操作步数。

#include<bits/stdc++.h>
using namespace std;
int n;
const int N=10010;
int a[N];
int ans; 
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i]; 
	
	while(n>=3)
	{
		ans++;   //轮次 
	    int cnt=0;
	    
	    for(int i=1;i+2<=n;i++)
	    {
	    	int sum=a[i]+a[i+1]+a[i+2];
	    	
	       if(sum<=ans*3)
	       {
	       	a[i]=sum;
	       	for(int j=i+1;j<=n;j++)
	       		a[j]=a[j+2];
			n-=2;
		   }
		   
		}
	}
	
	cout<<ans<<endl;
	return 0;
}

image.png