社区讨论

为啥TLE啊

P9571「NnOI R2-T3」Horizon Blue参与者 4已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo1rwvgl
此快照首次捕获于
2023/10/23 01:59
2 年前
此快照最后确认于
2023/11/03 02:37
2 年前
查看原帖
优化了好几次代码总有三个TLE,dalao看看
CPP
#include <bits/stdc++.h>
using namespace std;

// 线段
struct Line {
	int k,b;
	bool exist;
};

int n; // 见题目
Line lines[100001];
int line_num,line_l;
int com,k,b;  // com是指令,其他见题目
int ks[200002];  // ks[k]=有多少线段等于k

int main() {
	scanf("%d",&n);
	for (int i=0;i<n;i++) {
		scanf("%d %d %d",&com,&k,&b);
		if (k < 0) k += 200001;
		if (b < 0) b += 200001;
		if (com == 1) {
			lines[line_l].k = k;
			lines[line_l].b = b;
			lines[line_l++].exist = true;
			ks[k]++;
			line_num++;
		}
		else if (com == 2) {
			printf("%d\n",line_num-ks[k]);
		}
		else if (com == 3) {
			for (int j=0;j<line_l;j++) {
				if (lines[j].exist && (k != lines[j].k || b == lines[j].b)) {
					lines[j].exist = false;
					ks[lines[j].k]--;
					line_num--;
				}
			}
		}
	}

	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...