1 条题解

  • 1
    @ 2023-8-15 21:22:07

    我来交个题解玩玩。


    #include<bits/stdc++.h>
    using namespace std;
    int a[1000111],s=0;
    int t,n,p;
    int main()
    { 
    	cin>>t;
    	for(int i=1;i<=t;i++)
    	{
    		cin>>n;s=0;//这里的清零很重要
    		for(int j=1;j<=n;j++)
    		{
    			cin>>a[j];
    			s+=a[j];//求所有数之和
    		}
    		for(int j=n;j>=1;j--)//因为要最少步骤,从最大的遍历
    		{
    			if(s%j==0)
    			{
    				int mid=s/j,flag=1,cnm=0,ans=0;
    				for(int k=1;k<=n;k++)//判断是否可行
    				{
    					cnm+=a[k];
    					if(cnm>mid)
    					{
    						flag=0;
    						break;
    					}
    					else if(cnm==mid){
    						cnm=0;
    					}
    				}
    				if(flag==1){cout<<n-j<<endl;break;}
    			}
    		 } 
    	}
    	return 0;//完结撒花🎉️ 
    }
    
    
    

    如果看不懂也没关系,我瞎写的

    信息

    ID
    524
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    4
    已通过
    4
    上传者