【题解】P1031 均分纸牌

题面

题目传送门

前言

考古 ing,提高组 T1

正文

题意给出了极好的性质——可以被均分

换言之,我们可以求出一个平均值(即目标值)

那么自然在这序列中会出现一些不同于平均值的元素

依照题意,让元素抹平与平均值的差距只能由相邻两个元素转移过来

特殊地,\(a_1\)\(a_n\) 只能从一个方向转移过来

从一个方向?

设这个平均值为 \(v\)

  1. \(a_1 \neq v\),显然 \(a_2\) 需要给出 \(|v-a_1|\) 的纸牌

  2. \(a_1 = v\),说明 \(a_1\) 已经符合要求,那就不必考虑它,删去即可;则 \(a_2\) 变成新的 \(a_1\),继续循环 1. 或 2.

好像就无了~

代码

#include<iostream>
using namespace std;
const int maxn=1e5+10;
int n,ans,v,a[maxn];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		v+=a[i];
	}
	v/=n;
	for(int i=1;i<n;i++){
		if(a[i]!=v){
			a[i+1]-=v-a[i];
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

后记

简单贪心题目捏

完结撒花!

posted @ 2024-12-31 21:49  sunxuhetai  阅读(10)  评论(0)    收藏  举报