2025 云斗

news/2025/10/28 21:03:06/文章来源:https://www.cnblogs.com/2020luke/p/19172736

10/27 Contest 5

A:小分讨+dp

C:发现是所有的数和它的倍数有限制,对于值域 \(n\) 这样的限制也只有 \(\sum\limits_{i=1}^n\frac{n}{i}=n\log n\) 个,考虑如何表示这些限制。

考虑对于限制 u,v,若两点都不是对方的祖先,那么就不能有 u 子树中的点和 v 子树中的点相连;若 u 是 v 的祖先,那么设 w 为 u 的一个儿子,同时也是 v 的祖先,那么所有不在 w 子树中的点不能和在 v 子树中的点相连。我们发现这些性质在 dfn 序上都是一段连续的区间,想到在 dfn 上扫描线;例如不是祖先就是两个区间内中的点不能互联,是祖先就是一个前缀和一个后缀不能和一个区间相连;扫描线直接做即可。

code:

#include <bits/stdc++.h>
using namespace std;
// #define int long long
#define LL long long
#define ULL unsigned long long
#define DB double
#define LD long double
// #define SZ(x) (int)(x.size())
#define PII pair<int,int>
#define PLL pair<long long,long long>
#define fr first
#define sc second
#define popcnt __builtin_popcount
#define inv(x) ksm(x,P-2)
// #define mp make_pair
const int N=1e5+10,K=510;
const LL P=998244353;
int n,a[N],p[N];
vector<int> g[N];
struct mod {int l,r,v;
};
vector<mod> q[N];
int fa[N][25], dep[N],dfn[N],dfncnt=0,siz[N];
void dfs(int u, int f, int d) {fa[u][0] = f;dep[u] = d;dfn[u]=++dfncnt;siz[u]=1;for(auto it : g[u]) {if(it != f) {dfs(it, u, d + 1);siz[u]+=siz[it];}}
}
int LCA(int u, int v) {if(dep[u] < dep[v]) swap(u, v);for(int i = 20; i >= 0; i--) {if(dep[fa[u][i]] >= dep[v]+1) u = fa[u][i];}if(fa[u][0] == v) return u;if (dep[u]>dep[v]) u=fa[u][0];for(int i = 20; i >= 0; i--) {if(fa[u][i] != fa[v][i]) {u = fa[u][i];v = fa[v][i];}}return u;
}
void Add(int u,int l,int r,int v) {q[u].push_back({l,r,v});
}
struct SEG {int t[N<<2],s[N<<2];void push_up(int u,int l,int r) {int ls=u<<1,rs=u<<1|1;if (l==r) s[u]=(t[u]>0);else if (t[u]) s[u]=r-l+1;else s[u]=s[ls]+s[rs];}void add(int u,int l,int r,int x,int y,int k) {if (l>y||r<x) return;if (l>=x&&r<=y) {t[u]+=k; push_up(u,l,r); return;}int mid=(l+r)>>1,ls=u<<1,rs=u<<1|1;add(ls,l,mid,x,y,k); add(rs,mid+1,r,x,y,k);push_up(u,l,r);}
} tr;
int work() {cin >> n;for(int i=1;i<=n;i++) cin>>a[i],p[a[i]]=i;for(int i=1,u,v;i<n;i++) {cin>>u>>v; g[u].push_back(v); g[v].push_back(u);}dfs(1, 0, 1);for(int j = 1; j <= 20; j++) {for(int i = 1; i <= n; i++) {fa[i][j] = fa[fa[i][j - 1]][j - 1];}}for(int i=1;i<=n;i++) {for(int j=i+i;j<=n;j+=i) {int u=p[i],v=p[j];int lca=LCA(u,v);if (dep[u]>dep[v]) swap(u,v);if (fa[lca][0]==u) {Add(dfn[v],1,dfn[lca]-1,1);Add(dfn[v]+siz[v],1,dfn[lca]-1,-1);Add(dfn[v],dfn[lca]+siz[lca],n,1);Add(dfn[v]+siz[v],dfn[lca]+siz[lca],n,-1);Add(1,dfn[v],dfn[v]+siz[v]-1,1);Add(dfn[lca],dfn[v],dfn[v]+siz[v]-1,-1);Add(dfn[lca]+siz[lca],dfn[v],dfn[v]+siz[v]-1,1);Add(n+1,dfn[v],dfn[v]+siz[v]-1,-1);} else {Add(dfn[u],dfn[v],dfn[v]+siz[v]-1,1);Add(dfn[u]+siz[u],dfn[v],dfn[v]+siz[v]-1,-1);Add(dfn[v],dfn[u],dfn[u]+siz[u]-1,1);Add(dfn[v]+siz[v],dfn[u],dfn[u]+siz[u]-1,-1);}}}LL ans=0;// int mxx=2e9;for (int i=1;i<=n;i++) {for (auto it:q[i]) {// mxx=min(mxx,it.r-it.l);tr.add(1,1,n,it.l,it.r,it.v);}ans+=n-tr.s[1];}// cout<<"    "<<mxx<<'\n';cout<<ans;return 0;
}
signed main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);// init();// freopen("test.in", "r", stdin);// freopen("test.out", "w", stdout);int T=1;// cin>>T;while (T--) { work(); }return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ ranges随笔

ranges c++20引入,在<ranges>头文件中 建立在 std::algo 和 iterator基础上,并做了进一步的抽象集成 与之前相比更加的 安全、简洁、方便 // ranges concept template <typename T> concept range = req…

qoj14458. 调色滤镜

qoj14458. 调色滤镜 平面 \([1,10^9]\times[1,10^9]\) 上有 \(n\) 个点,点 \(i\) 位于 \((x,y)\),有颜色 \(c_i\in [0,9]\)。 有 \(q\) 次操作,每次对平面上一个矩形范围内的点的颜色作用映射 \(f:[0,9]\rightarrow…

第8天(中等题 不定长滑动窗口、哈希表)

打卡第八天 3道中等题滑动窗口相当于在维护一个队列。右指针的移动可以视作入队,左指针的移动可以视作出队。 熟练度+++ 可以十几分钟独立写出相似题了^O^/ 耗时≈一小时 明天继续

P10259 [COCI 2023/2024 #5] Piratski kod

题链 题意 首先,题目写的很抽象,模拟赛时读了半个小时才读懂 题意概括一下就是枚举长度为k的所有01串 然后对01串进行划分,每遇到两个1就进行一次划分 然后把每段提取出来单独处理 如果把提出来的01串计为\(s[1...r]\)…

巧用 using 作用域(IDisposable)的生命周期包装特性 实现前后置处理

需求:在多个方法前后输出日志 logger.Info("begin"); method(); logger.Info("end");如果需要在方法后输出日志同时加上时长 logger.Info("begin"); var sw= Stopwatch.StartNew(); me…

2025.10.27训练记录

其实是10.28晚上写的。感觉就这个题要记录一下。 上午noip模拟。喜提一道不会。 B 题外话: 7:45 开始考试,广附集训爷大吼一声我做过!声称A完全不可做,但B他场切了。于是我开场看B。 那就看B,7:50闭了一下眼睛,睁…

软考复习总结

距离软考还有不到十天,主要对学习的知识点进行总结回顾(以下知识点无顺序重点): 1.对于尾数用补码进行表示时,要注意如果机器位8位,已知补码包含一位符号位,则补码真值的范围(-2n-1,2n-1 - 1), 则将其转换为…

实用指南:Eclipse 透视图(Perspective)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

? #6

100 + 0 + 80 + 0 = 180, Rank 2/6.2024暑期CSP-S&NOIP模拟赛第8套题⾯ 链接:link 题解:暂无 时间:4h (2025.10.28 14:00~18:00) 题目数:4 难度:A B C D\(\color{#F39C11} 橙\) \(\color{#FFC116} 黄\)*1000 …

鲜花:不会说明你有抑郁症3

这回是广为人知题了。自然数幂和:给定 \(n,k\),求 \(\sum_{i=1}^{n} i^k\),\(n\le 10^{18},k\le 2000\)。本来以为用扰动法求自然数幂和很猎奇,结果一搜出来十来篇博客。唉我还是太菜了。 尝试扰动法处理。 设: \…

算法竞赛知识点速通手册

1. 基础贪心:邻项交换与证明 贪心算法的精髓在于“局部最优”导向“全局最优”。然而,其正确性并非总是显而易见的,需要严谨的数学证明。邻项交换(Exchange Argument)是证明一类排序相关贪心策略最经典、最强大的…

集训做题杂记1 - -MornStar

[CTS2024] 众生之门 小清新构造题。 观察大样例可以发现答案不大于 \(3\),感性猜测可以在路径长度不超过 \(3\) 的情况下遍历整棵树,事实也确实如此。 进一步考虑答案一般为 \(0\) 和 \(1\),只有 \(n\) 比较小或者图…

CF1909I Short Permutation Problem

CF1909I Short Permutation Problem并非独立切,大量参考题解。 对于排列计数问题,考虑三个方向:容斥、连续段DP、按顺序加数。 发现容斥和连续段DP没前途,考虑按顺序加数。从 \(1\) ~ \(n\) 加数显然是不行的,因为…

ROS1 go2 vlp16 局部避障--3 篇 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

25.10.28随笔NOIP模拟赛总结

考试 开考看题,秒了 T1,感觉 T2 是简单 dp,T3 有点神秘不知道,T4 一眼有一个 \(\mathcal O(n^2)\)。于是顺序开题。T1 很快写了,T2 看了一个小时还是不会有点难崩,当时是很快想到一个 dp,设 \(f_{i,j,0/1}\) 表…

第二十八篇

今天是10月28号,上了铁道技术认知。

P8269 [USACO22OPEN] Visits S

P8269 [USACO22OPEN] Visits S 题解题目传送门 博客传送门 首先,每头牛牛都只有一个拜访对象,所以如果考虑图论建模的话,相当于每个点出度都是 1。这相当于图是个基环树森林(注意不只有一棵基环树),而且每个基环…

Luogu P13925 [POKATT 2024] 联合猫国 / The Paw-litical Game 题解 [ 蓝 ] [ 线性 DP ] [ 种类数观察 ]

联合猫国 去年模拟赛做过一道几乎一模一样的题,于是一眼秒了。 本题的一个结论:最终可合并的区间数为 \(\bm{O(n\log n)}\) 级别。 证明可以考虑构造出可合并区间数最多的序列,显然是所有数都相同时的区间数,可以取…

深入解析:【STM32项目开源】基于STM32的独居老人监护系统

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CSP-S 41多校 9

10.28 (虽然但是下发文件NOIP?)10.28 CSP-S 前倒数第二场模拟赛,直接一道都没切出来。。。 再不放信心赛真要没信心了。 t1 dp题。 显然对于每一次行动都是一个背包dp。 变种在于背包更换,更换后容量重新计算。 所…