[ABC160] 题解

Posted ljb00131

tags:

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

由于是ABC, 所以ABC题过于简单就咕咕咕了

D Line++

枚举一下所有组判断一下即可

#include<bits/stdc++.h>

using namespace std;

int n, x, y, ans[10005];

int main()
{
	cin >> n >> x >> y;
	for(int i = 1; i <= n; i++)
	{
		for(int j = i + 1; j <= n; j++)
		{
			int t = min(min(j - i, abs(x - i) + abs(j - x)), min(abs(y - i) + abs(j - y), abs(x - i) + 1 + abs(j - y)));
			ans[t]++;
		}
	}
	for(int i = 1; i <= n - 1; i++)
		printf("%d
", ans[i]);
	return 0;
}

E Red and Green Apples

显然从小到大排好序后最优,无色的苹果不用管它,因为只要你取到个数且不超过限制一定可以通过分配使他满足。(所以代码特别好写)

#include<bits/stdc++.h>

using namespace std;

#define N 500005

int a, b, c, n, X, Y;

long long ans = 0;

struct point
{
	int v, id;

	bool operator < (const point &o) const
	{
		return v > o.v;
	}
}p[N];

int main()
{
	ios::sync_with_stdio(false);
	cin >> X >> Y >> a >> b >> c;
	n = a + b + c;
	for(int i = 1; i <= n; i++)
	{
		cin >> p[i].v;
		if(i <= a) p[i].id = 1;
		else if(i <= a + b) p[i].id = 2;
		else p[i].id = 3; 
	}
	sort(p + 1, p + n + 1);
	int x = 0, y = 0, cnt = 0;
	for(int i = 1; i <= n; i++)
	{
		if(p[i].id == 1)
		{
			if(x == X) continue;
			else x++;
		}
		else if(p[i].id == 2)
		{
			if(y == Y) continue;
			else y++;
		}
		ans += 1ll * p[i].v;
		cnt++;
		if(cnt == X + Y) break;
	}
	cout << ans << endl;
	return 0;
}

F Distributing Integers

暂时咕咕咕

以上是关于[ABC160] 题解的主要内容,如果未能解决你的问题,请参考以下文章

[linux][c/c++]代码片段01

Shader2.0的顶点着色器和片段着色器

2C++ 的升级

题解 AT5228 [ABC162A] Lucky 7

AtCoder abc256全题解(区间合并模板矩阵快速幂优化dp线段树……)

AtCoder abc256全题解(区间合并模板矩阵快速幂优化dp线段树……)