为什么把 -1 修改成 1 的构造方案只能得 50 分
查看原帖
为什么把 -1 修改成 1 的构造方案只能得 50 分
142969
GI录像机楼主2022/4/11 10:39

RT,我 A 了,但是用的另一种方案。

下面是代码,注释里有解释。

#include<bits/stdc++.h>
using namespace std;
long long read() {
	long long f = 1, x = 0;
	char c = getchar();
	while (c < '0' || c > '9') {
		if (c == '-')f = -1;
		c = getchar();
	}
	while (c >= '0' && c <= '9') {
		x = x * 10 + c - '0';
		c = getchar();
	}
	return f * x;
}
void write(long long x) {
	if (x < 0) {
		putchar('-');
		x = -x;
	}
	if (x > 9)write(x / 10);
	putchar(x % 10 + '0');
}
const int N = 1e5 + 10;
long long p[N];
int main() {
	long long t = read();
	while (t--) {
		long long n = read();
		for (int i = 1; i <= n; i++)p[i] = read();
		long long now = 0;//当前的前缀和
		for (int i = 1; i <= n; i++) {
			if (p[i] == -1) {
				now++;
				write(1);
				putchar(' ');
			} else {
				write(p[i] - now);
				putchar(' ');
				now = p[i];
			}
		}
		putchar('\n');
	}
	return 0;
}
2022/4/11 10:39
加载中...