题目传送门

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 ;
    }

最新文章

  1. Docker compose学习笔记
  2. java保留两位小数
  3. Collection与Map
  4. ASP。net treeview xml
  5. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(一)
  6. h5-5 canvas
  7. forever start Error: Cannot find module &#39;./daemon.v0.10.26&#39;
  8. codeforces 342D Xenia and Dominoes(状压dp+容斥)
  9. 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)
  10. 实验用rootkit
  11. 机器学习之十一问支持向量机(SVM)
  12. C# ReaderWriterLockSlim 实现
  13. VTK使用矢量数据弯曲几何体
  14. Linux(5.5版为主)的基本操作命令
  15. unity 获取网络时间
  16. linux和普通文本的换行问题
  17. 通过IP来判断所在城市
  18. Java——使用File类递归遍历指定路劲下的所有文件
  19. 用Lucene对文档进行索引搜索
  20. android remoteView

热门文章

  1. if case for while
  2. GitHub练习——如何将本地已有项目添加到github
  3. Q2:Add Two Numbers
  4. 远程过程调用——RPC
  5. php中const和define的区别
  6. this 深度面试题3
  7. Springboot注解--@Controller和@RestController的区别
  8. 吴裕雄--天生自然深度学习TensorBoard可视化:改造后的mnist_train
  9. (最全最灵活地)利用Jxl工具包实现Excel表的内容读取 、写入(可向已有表中追加数据)
  10. ZJNU 1205 - 侦探推理——高级