SSL-OI夏日合宿 2020.08.23 A组
今天的题略水, 可能是因为最后一天了, AJ让我么轻松一点. 前三道题是AJ直接拿的中山市选2012, 第四题是北爷挑的附加题. 但我没写 C打挂了, 最后100+80+0+0=180 然后下午发动了学长限定技能: 快速讲评快速下班. A 这是一棵树吗? 题意 给出一张图个点的度数, 问是否可能是一棵树. 故事 超级大水题, 显然一棵树上有条边, 每加入一条边会使整张图的度数和增加. 判断度数和是否为, 特
今天的题略水, 可能是因为最后一天了, AJ让我么轻松一点. 前三道题是AJ直接拿的中山市选2012, 第四题是北爷挑的附加题. (但我没写) C打挂了, 最后100+80+0+0=180 然后下午发动了学长限定技能: 快速讲评快速下班.
A 这是一棵树吗?
题意
给出一张图个点的度数, 问是否可能是一棵树.
故事
超级大水题, 显然一棵树上有条边, 每加入一条边会使整张图的度数和增加. 判断度数和是否为, 特判如果, 任一点的读书不能为0.
#include <stdio.h>
long long n, s;
bool pos = true;
signed main() {
#ifndef ONLINE_JUDGE
freopen("A.in", "r", stdin);
#endif
scanf("%lld", &n);
for (long long i = 0, a; i < n; ++i)
scanf("%lld", &a), pos &= (a > 0), s += a;
if (s == (n - 1) * 2 && (n == 1 || pos))
printf("Possible");
else
printf("Impossible");
return 0;
}
B 选数排列
题意
给出个数, 从中选出组, 每组个. 每组的贡献是其中的最大值减最小值, 问这组的最大值最小是多少.
故事
还是那句话: 不贪心的人在比赛中也不会贪心.
为什么我一直对贪心的正确性那么怀疑呢? 还是因为对没能证明的东西总会有莫名的恐惧?
最后我打了的暴力, 因为数据年代久远所以拿了80? (这次我没在暴力外面套数据范围判断)
一个显然的结论: 每次选的数比是排完序后数组内的一段数. 如果有两组数所属的区间相交, 肯定可以通过交换元素使两者的最大值/最小值变优.
设为选了组, 选到了第个数, 每组贡献的最大值的最小值. 转移如下:
#define MXN (500020)
#include <stdio.h>
#include <string.h>
#include <algorithm>
int N, R, C;
int P[MXN];
// Sub1
int a[MXN], f[1024][1024], min, ans = 1e9;
signed main() {
#ifndef ONLINE_JUDGE
freopen("B.in", "r", stdin);
#endif
scanf("%d%d%d", &N, &R, &C);
for (int i = 0; i < N; ++i)
scanf("%d", &P[i]);
std::sort(P, P + N);
for (int i = C - 1; i < N; ++i)
a[i] = P[i] - P[i - C + 1];
memset(f, 0x3f, sizeof(f));
for (int i = 0; i <= N; ++i)
f[0][i] = 0;
for (int i = 1, j; i <= R; ++i)
for (min = 1e9, j = C - 1; j < N; ++j)
f[i][j] = std::max(min = std::min(min, f[i - 1][j - C]), a[j]);
for (int i = 0; i < N; ++i)
ans = std::min(ans, f[R][i]);
printf("%d", ans);
return 0;
}
题解
二分答案+贪心判断 跟前几天那个B......组题几乎一样, 我也几乎一样的不会.
我们二分出每组的最大和, 然后贪心地选出尽量多组数.
C 捡金子
考场没想清楚, 挂了.
题意
题意没说Trie, 但是很明显是Trie.
给出个字符串, 每个串在Trie上的节点权值++. 在Trie上选出条不相交的链, 问最大权值和是多少.
,
题解
故事就是正解打挂了, 所以标题倔强地写成了题解.
对于每个点, 设为在它的子树内选了条链的最大权值和. 考虑将一棵子树并入父亲: 我们从大到小枚举父亲被更新的, 然后再枚的, 尝试用更新父亲的. 最后将父亲节点接入链中, 将权值直接加入中即可. ()
D 魔术 (附加题)
开场1h后, 比赛描述中出现了这句话:
由于今天的题目过于简单,现为AK或即将AK的同学准备一道附加题。建议在完成前面所有题目之后再来做。不算很难,请同学们放心食用。
Z爷不屑于AB题, 直接切爆CD题QwQ. 而我只苟了ABC, 最后卑微Rank10.
口胡
题意没仔细看, 大概就是会用一种特殊的方法生成边权, 求单源最短路.
评论
0还没有评论。