题目


分析

首先如果枚举起点\(i\),点\(i\)到点\(j\)(i<j)的距离跳到点\(k\)(k<i)一定不优,所以可以先处理这种情况,

用单调栈维护\(dp\)单调递增,并且如果栈顶不能跳到当前点所能一次跳到的最前方那么就弹出,\(dp\)值就是栈元素个数加1

如果往前跳,按照刚才\(dp\)值由小到大更新往前跳的答案,并用并查集维护每个位置只能被更新一次,总时间复杂度\(O(n^2)\)

严格意义上来说,并查集路径压缩要加上\(logn\)的时间复杂度,但由于常数比较小可以忽略不计


代码

  1. #include <cstdio>
  2. #include <cctype>
  3. #include <vector>
  4. #define rr register
  5. using namespace std;
  6. const int N=6011; vector<int>K[N];
  7. int n,ans,a[N],b[N],st[N],top,dp[N],f[N];
  8. inline signed iut(){
  9. rr int ans=0; rr char c=getchar();
  10. while (!isdigit(c)) c=getchar();
  11. while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
  12. return ans;
  13. }
  14. inline signed getf(int u){return f[u]==u?u:f[u]=getf(f[u]);}
  15. signed main(){
  16. n=iut(),a[1]=b[1]=1;
  17. for (rr int i=2;i<=n;++i) a[i]=iut();
  18. for (rr int i=2;i<=n;++i) b[i]=iut();
  19. for (rr int i=1;i<=n;++i){
  20. for (rr int j=0;j<=n;++j) f[j]=j,K[j].clear(),dp[j]=n+1;
  21. st[top=0]=i,dp[i]=0,K[0].push_back(i);
  22. for (rr int j=i+1;j<=n;++j){
  23. while (top>0&&st[top-1]>=b[j]) --top;
  24. dp[j]=top+1,st[++top]=j,K[dp[j]].push_back(j);
  25. }
  26. for (rr int j=0;j<=n;++j)
  27. for (rr int p=0;p<K[j].size();++p){
  28. rr int x=K[j][p];
  29. for (rr int now=getf(x-1);now>=a[x];now=getf(now-1)){
  30. if (dp[now]>j+1) dp[now]=j+1,K[j+1].push_back(now);
  31. f[now]=now-1;
  32. }
  33. }
  34. for (rr int j=1;j<=n;++j) ans^=(i+j)*dp[j];
  35. }
  36. return !printf("%d",ans);
  37. }

#并查集,单调栈#美团2018年CodeM大赛-决赛 C-Traffic的更多相关文章

  1. 美团2018年CodeM大赛-初赛B轮 B 配送(最短路)

    美团2018年CodeM大赛-初赛B轮 B 配送 题意 题解 对于每个任务,只要从上个任务的终点出发即可. 时间.地点很少,可以算出每个地点-时间的最小花费. 以题目描述的起点终点起始结束时间建图,很 ...

  2. 美团2018年CodeM大赛-初赛B轮 C题低位值

    试题链接:https://www.nowcoder.com/acm/contest/151/C 定义lowbit(x) =x&(-x),即2^(p-1) (其中p为x的二进制表示中,从右向左数 ...

  3. 美团2018年CodeM大赛-资格赛 分数 暴力模拟

    链接:https://www.nowcoder.com/acm/contest/138/D来源:牛客网 小胖参加了人生中最重要的比赛——MedoC资格赛.MedoC的资格赛由m轮构成,使用常见的“加权 ...

  4. 美团2018年CodeM大赛-资格赛

    https://www.nowcoder.com/acm/contest/138#question A.下单 水题…… B.可乐 题意:求期望 代码: #include<iostream> ...

  5. 【离线 撤销并查集 线段树分治】bzoj1018: [SHOI2008]堵塞的交通traffic

    本题可化成更一般的问题:离线动态图询问连通性 当然可以利用它的特殊性质,采用在线线段树维护一些标记的方法 Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常 ...

  6. 美团2017年CodeM大赛-初赛B轮-黑白树

    https://ac.nowcoder.com/acm/problem/13249 链接:https://ac.nowcoder.com/acm/problem/13249来源:牛客网 题目描述 一棵 ...

  7. 美团2017年CodeM大赛-初赛B轮 黑白树 (树形dp)

    大意: 给定树, 初始每个点全为白色, 点$i$有权值$k_i$, 表示选择$i$后, 所有距离$i$小于$k_i$的祖先(包括i)会变为黑色, 求最少选多少个点能使所有点变为黑色. 链上情况的话, ...

  8. 美团2017年CodeM大赛-初赛A轮 C合并回文子串

    区间dp一直写的是递归版本的, 竟然超时了, 学了一下非递归的写法. #include <iostream> #include <sstream> #include <a ...

  9. 并查集(Union Find)的基本实现

    概念 并查集是一种树形的数据结构,用来处理一些不交集的合并及查询问题.主要有两个操作: find:确定元素属于哪一个子集. union:将两个子集合并成同一个集合. 所以并查集能够解决网络中节点的连通 ...

  10. bzoj 4199: [Noi2015]品酒大会【后缀数组+单调栈+并查集】

    用SA求出height数组,然后发现每个height值都有一个贡献区间(因为点对之间要依次取min) 用单调栈处理出区间,第一问就做完了 然后用并查集维护每个点的贡献(?),从大到小枚举height, ...

随机推荐

  1. 以二进制文件安装K8S之部署Node服务

    概述 在Node上需要部署Docker.kubelet.kube-proxy,在成功加入Kubernetes集群后,还需要部署CNI网络插件.DNS插件等管理组件. 本节以将192.168.3.138 ...

  2. OpenCV开发笔记(六十):红胖子8分钟带你深入了解Harris角点检测(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. AI与人类联手,智能排序人类决策:RLHF标注工具打造协同标注新纪元,重塑AI训练体验

    AI与人类联手,智能排序人类决策:RLHF标注工具打造协同标注新纪元,重塑AI训练体验 在大模型训练的 RLHF 阶段,需要人工对模型生成的多份数据进行标注排序,然而目前缺乏开源可用的 RLHF 标注 ...

  4. Linux_Centos_yum报错总结

    ​ 此篇适用于yum报错[尝试其他镜像]并且[curl 外网]不通的情况,此时一般考虑是网络的问题 一,出现的报错信息: 此时测试curl / ping www.baidu.com会发现无法连通 二, ...

  5. Educational Codeforces Round 143 (Rated for Div. 2)C. Tea Tasting(前缀和+二分、贡献枚举)

    C. Tea Tasting 思路 这里枚举有三种思路 然后经过考虑3是最可行的,然后接着考虑如何计算贡献 这里在实现的时候用了一个差分数组,因为我们需要记录第i个茶师它喝了多少个\(b_i\)以及不 ...

  6. XAF新手入门 - XAF设计模式探讨

    前言 刚接触XAF的小伙伴可能会有一个疑惑,XAF中有Model(BusinessObject).View.Controller,感觉明显是一个MVC的设计模式,但当你用MVC的设计模式与其对应时,又 ...

  7. snipaste 截屏工具快捷键 alt + A 还有 Ctrl + Shift + A

    snipaste 截屏工具快捷键 alt + A 还有 Ctrl + Shift + A 因为有时候 alt 会取消右键等菜单

  8. docker 资料整理

    docker 资料整理 基础概念 docker deamon 守护系统:简单理解就是docker的软件系统,管控这容器的开关. docker容器:从镜像启动到内存中形成动态运行,从编程角度,如果镜像是 ...

  9. 恒玄科技BES250解决方案之双耳链接调试总结和源码分析

    一 前言 bes2500芯片在tws耳机应用十分广泛,该芯片有着资源强大,音质好,大厂背书等特色.吸引了不少粉丝跟随. 最近在调试该芯片的tws配对流程,花费了一些时间,踩了一些坑,这里做一个总结和备 ...

  10. MySql注入—DNS注入

    MySql注入-DNS注入 1.DNS注入原理 一.DNS注入原理 DNS注入,是通过查询相应DNS解析产生的记录日志来获取想要的数据 对于sql盲注这样的方法常常用到二分法,非常麻烦而且没有回显,要 ...