【Codeforces Round #445 (Div. 2) C】 Petya and Catacombs

【链接】 我是链接,点我呀:)
【题意】

在这里输入题意

【题解】

看看时间戳为i的点有哪些。 每次优先用已经访问过的点。 如果不行就新创一个点。 注意新创点的时间戳也是i.

【代码】

#include <bits/stdc++.h>
using namespace std;

const int N = 2e5;

int n;
int now = 1, tot = 1;
vector <int> have[N + 10];
int before[N + 10];


int main() {
	//freopen("F:\\c++source\\rush_in.txt", "r", stdin);
	int n;
	scanf("%d", &n);
	int x;
	scanf("%d", &x);
	have[1].push_back(tot);
	before[tot] = 1;

	for (int i = 2; i <= n; i++) {
		scanf("%d", &x);
		if (!have[x].empty()) {
			now = have[x].back();
			have[x].pop_back();
			before[now] = i;
			have[i].push_back(now);
		}
		else {
			tot++;
			have[i].push_back(tot);
			before[tot] = i;
		}
	}
	printf("%d\n", tot);

	return 0;
}
posted @   AWCXV  阅读(182)  评论(0编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
点击右上角即可分享
微信分享提示