洛谷-P3919-可持久化数组
2024-10-08 19:58:58
题目传送门
sol:在洛谷上看到一种dfs + 离线的方法,可以解决大部分可持久化问题。把依赖关系看成边,然后建树。这样本来要解决的多个版本只要在一个版本上进行修改就好了。
- 离线 + dfs
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MAXN = 1e6 + ;
vector<int> edge[MAXN];
int a[MAXN], b[MAXN], c[MAXN], d[MAXN];
int ans[MAXN];
void dfs(int u) {
int tmp = a[c[u]];
if (b[u] == ) a[c[u]] = d[u];
else ans[u] = tmp;
for (auto v : edge[u]) dfs(v);
a[c[u]] = tmp;
}
int main() {
int n, m;
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++) scanf("%d", &a[i]);
for (int i = ; i <= m; i++) {
int fa; scanf("%d", &fa);
edge[fa].push_back(i);
scanf("%d%d", &b[i], &c[i]);
if (b[i] == ) scanf("%d", &d[i]);
}
dfs();
for (int i = ; i <= m; i++) {
if (b[i] == )
printf("%d\n", ans[i]);
}
return ;
}
最新文章
- Docker compose学习笔记
- java保留两位小数
- Collection与Map
- ASP。net treeview xml
- MS CRM 2011的自定义和开发(11)——插件(plugin)开发(一)
- h5-5 canvas
- forever start Error: Cannot find module &#39;./daemon.v0.10.26&#39;
- codeforces 342D Xenia and Dominoes(状压dp+容斥)
- 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)
- 实验用rootkit
- 机器学习之十一问支持向量机(SVM)
- C# ReaderWriterLockSlim 实现
- VTK使用矢量数据弯曲几何体
- Linux(5.5版为主)的基本操作命令
- unity 获取网络时间
- linux和普通文本的换行问题
- 通过IP来判断所在城市
- Java——使用File类递归遍历指定路劲下的所有文件
- 用Lucene对文档进行索引搜索
- android remoteView