比赛 AtCoder Beginner Contest 171

Posted poi-bolg-poi

tags:

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

题意/题解

A αlphabet

  • 题意:输入一个字母,如果是大写输出 (A) 小写输出 (a)
  • 题解:按题目说的做

B Mix Juice

  • 题意:给你 (n) 个数,输出前 (k) 大的数的和
  • 题解:排序。

C One Quadrillion and One Dalmatians

  • 题意:给你一个数,类似转换成 (26) 进制。
  • 题解:进制转换。

D Replacing

  • 题意:给你 (n) 个数, 有 (q) 次操作,第 (i) 次操作是把 (n) 个数中全部的 (b_i) 换成 (c_i) 并输出操作完后的 (n) 个数的和
  • 题解:暴力。记录每个数出现的次数,把 (b) 全换成 (c) 的时候就暴力。

E Red Scarf

  • 题意:有一个序列 (A),现在给你一个序列 (B)(b_i) 表示序列 (A) 中除去 (a_i) 的异或和,求出序列 (A)
  • 题解:把序列 (B) 中的第 (i) 个数与第 (j) 个数异或得到 (a_i oplus a_j),然后把 ((a_1 oplus a_2) oplus (a_1 oplus a_3) oplus dots oplus (a_1 oplus a_n)) 得到 (a_1 oplus a_2 oplus dots oplus a_n) 然后用 (a_1 oplus a_2 oplus dots oplus a_n) 与序列 (B) 中的第 (i) 个元素异或得到 (a_i)

F Pond Skater

  • 题意:咕咕咕
  • 题解:咕咕咕

代码

A αlphabet

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>

int main() {
	char ch;
	scanf("%c", &ch);
	if (ch >= ‘a‘ && ch <= ‘z‘) puts("a");
	else puts("A");
	return 0;
}

B Mix Juice

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
#define MAXN 1001

int n ,k, ans, a[MAXN];

int main() {
	scanf("%d %d", &n, &k);
	for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
	std::sort(a + 1, a + n + 1);
	for (int i = 1; i <= k; ++i) {
		ans += a[i];
	}
	printf("%d
", ans);
	return 0;
}

C One Quadrillion and One Dalmatians

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>

long long n;

void solve(long long x) {
	if (x != 0) {
		int d = x % 26;
		if (d == 0) solve (x / 26 - 1);
		else solve(x / 26);
		if(d == 0) putchar(‘z‘);
		else putchar(d+‘a‘-1);
	}
}

int main() {
	scanf("%lld", &n);
	solve(n);
	return 0;
}

D Replacing

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
#define MAXN 100001

int n, q, times[MAXN];
long long ans;

int main() {
	scanf("%d", &n);
	for (int i = 1, x; i <= n; ++i) {
		scanf("%d", &x);
		ans += x;
		++times[x];
	}
	scanf("%d", &q);
	for (int i = 1, b, c; i <= q; ++i) {
		scanf("%d %d", &b, &c);
		ans -= 1ll * times[b] * b;
		ans += 1ll * times[b] * c;
		printf("%lld
", ans);
		times[c] += times[b];
		times[b] = 0;
	}
	return 0;
}

E Red Scarf

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
#define MAXN 200001

typedef long long ll;
ll n, a[MAXN], ans;

int main() {
	scanf("%lld", &n);
	for (int i = 1; i <= n; ++i) scanf("%lld", &a[i]);
	for (int i = 2; i <= n; ++i) {
		ans ^= a[i] ^ a[1];
	}
	for (int i = 1; i <= n; ++i) {
		printf("%lld ", ans ^ a[i]);
	}
	return 0;
}

反思:

  • 太菜了。

以上是关于比赛 AtCoder Beginner Contest 171的主要内容,如果未能解决你的问题,请参考以下文章

Atcoder Beginner Contest 124 解题报告

AtCoder Beginner Contest 154 题解

AtCoder Beginner Contest151参赛感悟

AtCoder Beginner Contest 157

AtCoder Beginner Contest 170

AtCoder Beginner Contest 167