240101 咋提全碳

发布时间 2024-01-01 16:08:12作者: XSC062

整理一下我都整了些啥。

有实际用途的是萨卡班甲鱼的勾勾(?)、巨型萨卡班甲鱼,亚克力小盒子,百万英镑的周边(迫真),东北大米草稿纸。

只有观赏价值的是青蛙、章鱼哥挂件、又一个章鱼哥挂件、章鱼哥超级挂件、莱伊拉和芙莉莲的立牌,abd 的风花节周边和散的透卡。


A. 加法游戏

http://222.180.160.110:1024/contest/4626/problem/1

很厉害的一道 XSC 题,所以我 xsc062 不会做是理所当然的。

好吧开个玩笑。注意到限制次数特别小,但这个其实没起到什么提示作用。

还是有一点的。比如我们假设 \(a_{i+1}\ge 0\),两边同时加 \(a_i\),有 \(a_{i+1}+a_i\ge a_i\)

我们再假设 \(a_i\le 0\),两边同时加 \(a_{i+1}\),有 \(a_i+a_{i+1}\le a_{i+1}\)

我们有了一个思路,把整个序列的正负变成一样的,然后按照上面两种方式的任意一种从前往后 / 从后往前执行操作。

任意挑选一个正数使其 \(>20\),只需要自增就可以在 \(5\) 次操作内解决。

然后将这个正数加到所有数上面,所有数就都是正的了(花费 \(n=20\) 次操作)。做操作一得到前缀和(花费 \(n=20\) 次操作)即为答案。

如果一个正数都没有怎么办呢?那就是一个全部为非正的序列,直接做操作二得到后缀和即可。

namespace XSC062 {
using namespace fastIO;
const int maxn = 25;
int n, p, x;
int main() {
	read(n);
	for (int i = 1; i <= n; ++i) {
		read(x);
		if (x > 0) p = i;
	}
	if (p) {
		print(2 * n + 4, '\n');
		for (int i = 1; i <= 5; ++i)
			print(p, ' '), print(p, '\n');
		for (int i = 1; i <= n; ++i)
			print(i, ' '), print(p, '\n');
		for (int i = 2; i <= n; ++i)
			print(i, ' '), print(i - 1, '\n');
	}
	else {
		print(n - 1, '\n');
		for (int i = n - 1; i; --i)
			print(i, ' '), print(i + 1, '\n');
	}
	return 0;
}
} // namespace XSC062

B. 目标和

http://222.180.160.110:1024/contest/4626/problem/2