2 条题解

  • 0
    @ 2024-3-24 20:05:09
    #include<bits/stdc++.h>
    using namespace std;
    const int N = 1e6 + 10;
    const int INF = 0x3f3f3f3f;
    int n,a[N],sum = 0;
    int main(){
    	cin >> n;
    	for(int i = 1;i <= n;i++)
    	{
    	    cin >> a[i];
    	    sum += a[i];
        }
        int k = sum / n;
    	int ans = 0;
    	for(int i = 1;i < n;i++){
    		if(a[i] == k)continue;
    		else{
    			a[i + 1] += a[i] - k;
    			ans++;
    		}
    	}
    	cout << ans << endl; 
    	return 0;
    }
    
    • 0
      #include <iostream>
      using namespace std;
      const int maxn=1e6+10;
      int a[maxn],n;
      //贪心策略:
      //如果当前位置不满足平均值,(直接变为平均值)将差值交给下一位 
      int main(){
      	cin>>n;
      	int sum=0;
      	for(int i=1;i<=n;i++){
      		cin>>a[i];
      		sum+=a[i];
      	}
      	int ava=sum/n;
      	int ans=0;
      	for(int i=1;i<n;i++){
      		if(a[i]==ava)continue;
      		else{
      			a[i+1]+=a[i]-ava;
      			ans++;
      		}
      	}
      	cout<<ans<<endl;
      } 
      
      • 1

      信息

      ID
      660
      时间
      1000ms
      内存
      512MiB
      难度
      4
      标签
      递交数
      138
      已通过
      65
      上传者