L2-017 人以群分(贪心)

Posted MangataTS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了L2-017 人以群分(贪心)相关的知识,希望对你有一定的参考价值。

题目连接

https://pintia.cn/problem-sets/994805046380707840/problems/994805061056577536

思路

贪心地去想,我们如果将这些人先按照从小到大排序,再分成两部分的话,那么一定是极端地两部分,又由于两堆人数要经可能接近,于是当 n n n 为偶数的时候那么直接拆分成相同的人数的两堆即,否则我们应该让outgoing那一堆的人数多一点,便于我们提高差距

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define endl "\\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3f

int n;

int main()

	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	vector<int> V(n);
	for(int i = 0;i < n; ++i) cin>>V[i];
	sort(V.begin(),V.end());
	int l = n/2,r = n - l;
	cout<<"Outgoing #: "<<r<<endl;
	cout<<"Introverted #: "<<l<<endl;
	int ans = 0;
	for(int i = 0;i < n; ++i) 
		if(i < l) ans -= V[i];
		else ans += V[i];
	
	cout<<"Diff = "<<ans<<endl;
	return 0;

以上是关于L2-017 人以群分(贪心)的主要内容,如果未能解决你的问题,请参考以下文章

L2-017 人以群分

天梯赛练习

车辆问题(贪心)

POJ 1700

Codeforces839B-贪心

hdu 5360 Hiking(优先队列+贪心)