Codeforces Round #520 (Div. 2)

Codeforces Round #520 (Div. 2)


D. Fun with Integers

题意:a与b之间有边,当且仅当存在一个\(x\)使得\(a*b = x\)\(a*x = b\),这条边的边权为\(|x|\),保证\(|a|,|b|,|x|<=n\),问一条最长的不走重复边的路径的长度是多少。

做法:对于一个数\(a\),如果存在一个\(b\)与他相连那么,一定存在一个\(-b\)与他相连,可以知道每个点的度数一定是偶数。那么一定存在欧拉回路,因此将所有边去啊即求和即可。

#include <bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
int n;
ll ans;
int main() {scanf("%d",&n);for(int i = 2; i <= n; ++i)for(int j=i+i;j<=n;j+=i) ans += j/i;printf("%lld\n",ans<<2LL);return 0;
}

E. Company

题意:给定一棵树,q次询问,每次询问编号在 [l,r] 区间内的点删除其中哪一个点,使得lca的深度最深。

做法:一个区间的lca,一定时这个区间内dfs序编号最小和最大之间的lca,那么删除的点也一定是这两个点钟的一个。因此,求dfs序之后,st表维护区间最值即可。

#include <bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
int n, q;
vector<int> G[100055];
int id, ind[100055], fid[100055], dep[100055], fa[100055][22];
void dfs(int u,int pre) {ind[u] = ++id; fid[id] = u; fa[u][0] = pre;for(int j=1;j<=20;++j) fa[u][j] = fa[fa[u][j-1]][j-1];for(int i = 0; i < G[u].size(); ++i) {int v = G[u][i];dep[v] = dep[u] + 1; dfs(v,u);}
}
int mx[100055][22], mn[100055][22], Log[100055];
void init_rmq() {Log[1] = 0;for(int i = 2; i <= n; ++i) Log[i] = Log[i>>1] + 1;for(int i = 1; i <= n; ++i) mx[i][0] = mn[i][0] = ind[i];for(int i = 1; i <= 20; ++i) for(int j = 1; j + (1<<(i-1)) <= n; ++j) {mx[j][i] = max(mx[j][i-1], mx[j+(1<<(i-1))][i-1]);mn[j][i] = min(mn[j][i-1], mn[j+(1<<(i-1))][i-1]);}
}
int ask_mn(int l,int r) {int L = Log[r-l+1];return min(mn[l][L], mn[r-(1<<L)+1][L]);
}
int ask_mx(int l,int r) {int L = Log[r-l+1];return max(mx[l][L], mx[r-(1<<L)+1][L]);
}
int lca(int u,int v) {if(dep[u] > dep[v]) swap(u,v);int tx = u, ty = v;for(int d=dep[v]-dep[u],i=0;d;d>>=1,++i) if(d&1) ty = fa[ty][i];if(tx == ty) return tx;for(int i = 20; i >= 0; --i) {if(fa[tx][i] == fa[ty][i]) continue;tx = fa[tx][i], ty = fa[ty][i];}return fa[tx][0];
}
int fd_fa(int x,int l,int r) {int u1, v1;if(x == l) u1 = ask_mn(l+1,r), v1 = ask_mx(l+1,r);else if(x == r) u1 = ask_mn(l,r-1), v1 = ask_mx(l,r-1);else {u1 = min(ask_mn(l,x-1), ask_mn(x+1,r));v1 = max(ask_mx(l,x-1), ask_mx(x+1,r));}return lca(fid[u1],fid[v1]);
}
int main() {scanf("%d%d",&n,&q);for(int p,i = 2; i <= n; ++i) scanf("%d",&p), G[p].pb(i);dfs(1,0); init_rmq();while(q--) {int l, r;scanf("%d%d",&l,&r);if(n == 2) { printf("1 1\n"); continue; }int ld = ask_mn(l,r), rd = ask_mx(l,r);int fa1 = fd_fa(fid[ld],l,r), fa2 = fd_fa(fid[rd],l,r);if(dep[fa1] >= dep[fa2]) printf("%d %d\n",fid[ld],dep[fa1]);else printf("%d %d\n",fid[rd],dep[fa2]);}return 0;
}

转载于:https://www.cnblogs.com/RRRR-wys/p/9969807.html

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

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

相关文章

稳定工作和创业之间的抉择

早上写的文章《回顾4180天在腾讯使用C#的历程&#xff0c;开启新的征途》是我在腾讯写的最后一篇对过往10年在腾讯使用C#语言的总结&#xff0c;今天收到反馈有人在造谣腾讯开始去.net&#xff0c;我被迫辞职了。这非常的不负责任&#xff0c;我必须写这篇文章来辟谣。要说腾讯…

初二模拟赛总结(2019.8.7)

成绩&#xff1a; rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111hkyhkyhky180180180100100100808080000000222lyflyflyf170170170100100100707070000000333tjhtjhtjh160160160100100100404040000202020444fyfyfy160160160606060100100100000000555cyzcy…

牛客2020年愚人节比赛

欢乐的一晚上 题目链接 其实做做也挺好&#xff0c;脑筋急转弯&#xff0c;不需要算法不需要数据结构&#xff0c;纯娱乐 还有不知道是哪位哥的&#xff0c;心疼一下 题解 注&#xff1a;一下题解没必要较劲&#xff0c;欢乐局而已 对不对无所谓&#xff0c;换了最重要奥 A题ra…

P4655-[CEOI2017]Building Bridges【斜率优化dp,CDQ分治】

正题 题目链接:https://www.luogu.com.cn/problem/P4655 题目大意 nnn座桥&#xff0c;删除第iii座会产生wiw_iwi​的代价&#xff0c;相邻的两座桥i,ji,ji,j会产生(hi−hj)2(h_i-h_j)^2(hi​−hj​)2的代价&#xff0c;要求代价最小。 解题思路 设fif_ifi​表示留到第iii座桥…

Codefroces1077F2. Pictures with Kittens (hard version)

Codefroces1077F2. Pictures with Kittens (hard version) 做法&#xff1a;裸的单调队列优化dp #include <bits/stdc.h> #define P pair<ll,ll> #define fr first #define sc second typedef long long ll; using namespace std; int n, m, x; ll dp[5002][5002],…

IdentityServer4 知多少

1. 引言现在的应用开发层出不穷&#xff0c;基于浏览器的网页应用&#xff0c;基于微信的公众号、小程序&#xff0c;基于IOS、Android的App&#xff0c;基于Windows系统的桌面应用和UWP应用等等&#xff0c;这么多种类的应用&#xff0c;就给应用的开发带来的挑战&#xff0c;…

【线段树】矮人排队(jzoj(gz) 3236)

矮人排队 jzoj &#xff08;gz&#xff09;3236 题目大意&#xff1a; 有n个人&#xff0c;高度分别为1,2……n&#xff08;高度按输入来看&#xff09;&#xff0c;现在有两种操作 1&#xff1a;把第x个人和第y个人换一下 2&#xff1a;询问高度为A&#xff0c;A1……B这B-…

牛客网【每日一题】4月2日 月月查华华的手机

牛客网链接 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 题目描述 月月和华华一起去吃饭了。期间华华有事出去了一会儿&#xff0c;没有带手机。月月出于人类最单纯的好奇心&#…

P3466-[POI2008]KLO-Building blocks【Treap】

正题 题目链接:https://www.luogu.com.cn/problem/P3466 题目大意 nnn个数&#xff0c;每次可以让一个111或−1-1−1&#xff0c;要求操作次数最少使得有连续kkk个相同的。 解题思路 枚举是哪kkk个&#xff0c;然后用平衡树&#xff08;或对顶堆&#xff09;维护中位数和比中…

Codeforces1080F. Katya and Segments Sets

Codeforces1080F. Katya and Segments Sets 题意&#xff1a;给定n个集合&#xff0c;每个集合里有一些区间\([l_i,r_i]\)&#xff0c;有m次询问&#xff0c;每次询问区间\([x,y]\)中&#xff0c;是否包含了集合a到集合b中每个集合至少一个区间。 做法&#xff1a;按区间右端点…

【二分】Best Cow Fences(poj 2018)

Best Cow Fences poj 2018 题目大意&#xff1a; 给出一个正整数数列&#xff0c;要你求平均数最大&#xff0c;长度不小于M的字串&#xff0c;结果乘1000取整 输入样例 10 6 6 4 2 10 3 8 5 9 4 1输出样例 6500数据范围 1⩽N⩽100,0001\leqslant N \leqslant 100,0001⩽…

离散哈特莱变换(DHT)及快速哈特莱变换(FHT)学习

离散哈特莱变换(DHT)及快速哈特莱变换(FHT)学习 说在前边 最近复习\(DSP\)的时候&#xff0c;发现了一个号称专门针对离散实序列的变换&#xff0c;经分析总运算量为普通\(FFT\)的几乎一半&#xff0c;而且完全没有复数。这么强的吗&#xff1f;于是花了一个下午&#xff0c;去…

P2495-[SDOI2011]消耗战【虚树,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P2495 题目大意 nnn个点的一棵树&#xff0c;mmm次给出一些点&#xff0c;要求割掉最小权值的边使得这些点不和111号点联通。 解题思路 根据这些给出的点构造一棵虚树&#xff0c;然后直接dpdpdp求解即可。 codecodecode #i…

【贪心】Sunscreen(poj 3614/luogu 2887)

Sunscreen poj 3614 luogu 2887 题目大意&#xff1a; 有n个人&#xff0c;每个人要求选一个价值在minniminn_iminni​到maxximaxx_imaxxi​的物品&#xff0c;现在有m件物品&#xff0c;每件的价值是spfispf_ispfi​&#xff0c;可以选covericover_icoveri​次&#xff0c…

.NET Core 2.1中的分层编译(预览)

如果您是.NET性能的粉丝&#xff0c;最近有很多好消息&#xff0c;例如.NET Core 2.1中的性能改进和宣布.NET Core 2.1&#xff0c;但我们还有更多的好消息。分层编译是一项重要的新特性功能&#xff0c;我们可以作为预览供任何人试用&#xff0c;从.NET Core 2.1开始。在我们测…

Codeforces 刷题记录(已停更)

Codeforces 每日刷题记录 (已停更) 打‘’是一些有启发意义的题目&#xff0c;部分附上一句话题解&#xff0c;每日更新3题&#xff0c;大部分题目较水。 DayIDProblemTutorialNote11CF1073E状压&#xff0c;数位dp&#xff0c;官方题解std骚操作\(~\)2CF1072A\(~\)3CF1072B24C…

牛客练习赛60 ~ 斩杀线计算大师

题目传送 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K Special Judge, 64bit IO Format: %lld 题目描述 算术能力是每个炉石玩家必不可少的&#xff0c;假设现在有三种伤害卡&#xff0c;伤害值分别是a,b…

【贪心】Stall Reservations(luogu 2859/poj 3190)

Stall Reservations luogu 2859 poj 3190 题目大意&#xff1a; 有n头牛&#xff0c;每头牛都有自己的挤奶时间&#xff0c;挤奶时间内每头牛用一个奶棚&#xff0c;现在问最少需要多少个奶棚 输入样例 5 1 10 2 4 3 6 5 8 4 7输出样例 4 1 2 3 2 4数据范围 1⩽N⩽50,00…

选择IT事业,意味着终身学习

八月&#xff0c;炎阳如火。 前几天书记找我交流&#xff0c;问我离职的原因&#xff0c;我跟他仔细的分析了一下我的职业发展规划和我对于未来的预期&#xff0c;书记也向我分析了一下他所认为的原因&#xff0c;他说&#xff0c;无外乎是三个原因&#xff1a;第一个是钱的问…

P4103-[HEOI2014]大工程【虚树,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4103 题目大意 nnn个点的一棵树&#xff0c;mmm次给出一些点&#xff0c;求最近点对&#xff0c;最远点对和所有点对的距离和。 解题思路 先构造一棵虚树&#xff0c;然后在上面dpdpdp统计答案即可。 codecodecode #includ…