CF540 B 贪心

Posted ( m Lweleth)

tags:

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

坑在B题是常态,弱智的日常。

是找中位数不是平均值。

慌了,乱写了

出了一塌糊涂的ZZ代码

特记一下

 

/** @Date    : 2017-08-27 17:25:11
  * @FileName: B.cpp
  * @Platform: Windows
  * @Author  : Lweleth ([email protected])
  * @Link    : https://github.com/
  * @Version : $Id$
  */
#include <bits/stdc++.h>
#define LL long long
#define PII pair<int ,int>
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std;

const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8;

vector<int>q;
int main()
{
	int n, k, p, x, y;
	while(cin >> n >> k >> p >> x >> y)
	{
		q.clear();
		int rec = 0;
		int ma = 0;
		int mi = 0;
		int cnt1 = 0;
		int cnt2 = 0;
		int flag = 0;
		for(int i = 0; i < k; i++)
		{
			int t;
			scanf("%d", &t);
			if(t >= y)
			{
				if(cnt2 == (n+1)/2)
					cnt1++;
				else cnt2++;
			}
			else 
			{
				if(cnt1 == n/2)
					cnt2++, flag = 1;
				else cnt1++;
			}
			rec += t;
		}

		if(rec + n/2 - cnt1 + ((n + 1) / 2 - cnt2)*y > x || flag)
		{
			printf("-1\n");
			continue;
		}
		for(int i = 0; i < (n/2) - cnt1; i++)
			rec+=1, q.PB(1);
		for(int i = 0; i < (n + 1) / 2 - cnt2; i++)
			rec+=y, q.PB(y);
		if(rec > x)
		{
			printf("-1\n");
			continue;
		}
		for(auto i:q)
			printf("%d ", i);
		printf("\n");
	}

    return 0;
}

以上是关于CF540 B 贪心的主要内容,如果未能解决你的问题,请参考以下文章

CF 540D Bad Luck Island

[贪心] aw3774. 亮灯时长(思维+后缀和+代码细节+CF1000B)

CF540D Bad Luck Island(期望dp)

CF839 B 贪心

代码源 Div1 - 109#454. Minimum Or Spanning Tree(最小生成树,边权按位或,贪心,并查集) CF1624G

代码源 Div1 - 109#454. Minimum Or Spanning Tree(最小生成树,边权按位或,贪心,并查集) CF1624G