The North American Invitational Programming Contest 2016 I-Tourists
I-Tourists
LCA裸题
#include<bits/stdc++.h> using namespace std; #define ll long long #define ls rt<<1,l,m #define rs rt<<1|1,m+1,r #define pb push_back const int INF=0x3f3f3f3f; const int N=2e5+10; vector<int>g[N]; vector<ll>edge[N]; int anc[20][N]; int deep[N]; ll h[N]; bool vis[N]= {false}; int s; void dfs(int o,int u,ll w) {if(o!=u)deep[u]=deep[o]+1,h[u]=h[o]+w;for(int j=0; j<g[u].size(); j++){if(g[u][j]!=o){anc[0][g[u][j]]=u;for(int i=1; i<20; i++)anc[i][g[u][j]]=anc[i-1][anc[i-1][g[u][j]]];dfs(u,g[u][j],edge[u][j]);}} } int lca(int u,int v)//公共祖先 {if(deep[u]<deep[v])swap(u,v);for(int i=19; i>=0; i--)if(deep[anc[i][u]]>=deep[v])u=anc[i][u];if(u==v)return u;for(int i=19; i>=0; i--)if(anc[i][u]!=anc[i][v])u=anc[i][u],v=anc[i][v];return anc[0][u]; } ll dis(int u,int v)//距离 {return h[u]+h[v]-2*h[lca(u,v)]; } void init() {for(int i=0; i<20; i++)anc[i][1]=1;dfs(0,1,1); } int main() {freopen("in.txt","r",stdin);ios::sync_with_stdio(false);cin.tie(0);int n,m,a,b;cin>>n;for(int i=0; i<n; ++i){cin>>a>>b;g[a].pb(b);g[b].pb(a);edge[a].pb(1);edge[b].pb(1);}init();ll ans=0;for(int i=1; i<=n; ++i)for(int j=i*2; j<=n; j+=i){if(j%i==0)ans+=(dis(i,j)+1);}cout<<ans<<endl;return 0; }
转载于:https://www.cnblogs.com/kuroko-ghh/p/9737606.html
The North American Invitational Programming Contest 2016 I-Tourists相关推荐
- The North American Invitational Programming Contest 2016 - Tourists ( LCA )
题意 给出一棵n个点,n-1条边的树.现在计算所有标号为x到y的距离之和(满足y>x且y是x的倍数) 思路 关于树上任意两点距离之和,一开始想到树形dp,可树形dp,是对每条边,求所有可能的路径 ...
- 2021-2022 ACM-ICPC Latin American Regional Programming Contest
2021-2022 ACM-ICPC Latin American Regional Programming Contest J. Joining Pairs 思路: 本题显然答案为NNN的情况为两条 ...
- 2011 Michigan Invitational Programming Contest
Crossings Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463 Description ...
- Benelux Algorithm Programming Contest 2016 Preliminary 题解
A. Block Game B. Chess Tournament C. Completing the Square D. Hamming Ellipses E. Lost In The Woods ...
- Nordic Collegiate Programming Contest 2016
A Artwork 输入: n,m表示原图为n*m个白色方格,输入x1,y1,x2,y2表示将x1,y1,x2,y2涂为黑色. 输出: 对于每个x1,y1,x2,y2输入当前图案白色联通块的数目. 思 ...
- UCF Local Programming Contest 2016 计蒜客解(补)题报告
A - Majestic 10(签到) 题目链接 #include <iostream> using namespace std;int main() {int t,x,y,z;scanf ...
- 2021-2022 ACM-ICPC Latin American Regional Programming Contest 题解
B 先两边贪心,然后中间部分卷积 #pragma GCC optimize("O3")#include<iostream> #include<string.h&g ...
- 2016 China Collegiate Programming Contest Final
2016 China Collegiate Programming Contest Final Table of Contents 2016 China Collegiate Programming ...
- 2016, IX Samara Regional Intercollegiate Programming Contest I. Deadline
2016, IX Samara Regional Intercollegiate Programming Contest I. Deadline 题目看这里 Alex works as a devel ...
- 2016-2017 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2016)题解
2016-2017 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2016) A - Artwork 题目描述: 给定N*M的网格,给出Q次 ...
最新文章
- 华为推CPU Turbo,荣耀Note10突破3000档
- 引发热议的AI翻译歧视,是理所应当的事么?
- IT十八掌作业_java基础第六天_接口与适配器模式、多态、内部类
- 使用 laravel 命令安装 Laravel
- 用ORACHK自己主动化检查数据库系统的健壮性
- Queue:poll、offer、element、peek的区别
- centos下mysql多实例安装3306、3307实例(2014-10-15)
- visual studio运行时库MT、MTd、MD、MDd 的区别
- 用Typescript如火如荼地进行angular.js
- 《从问题到程序:用Python学编程和计算》——2.4 字符串
- [BZOJ2282]消防
- C# Microsoft.Office.Interop.Word 将多个word合成一个并插入图片 转换成pdf
- win10 MAC地址绑定及解绑
- Java JUC包的学习文章整理以及整体结构功能概述
- 工作站 显卡 测试软件,【戴尔Precision 3530移动图形工作站笔记本使用总结】配置|硬盘|显卡|屏幕|续航_摘要频道_什么值得买...
- Samsara v2.0 MIS数据流脚本编程 Demo
- PPT设计Tips总结
- EasyNVR显示级联成功,EasyNVS平台上并无通道是什么原因?
- RTX3070+windows11cuda配置教程
- 15个前端(html+css)在线网站检测工具