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相关推荐

  1. The North American Invitational Programming Contest 2016 - Tourists ( LCA )

    题意 给出一棵n个点,n-1条边的树.现在计算所有标号为x到y的距离之和(满足y>x且y是x的倍数) 思路 关于树上任意两点距离之和,一开始想到树形dp,可树形dp,是对每条边,求所有可能的路径 ...

  2. 2021-2022 ACM-ICPC Latin American Regional Programming Contest

    2021-2022 ACM-ICPC Latin American Regional Programming Contest J. Joining Pairs 思路: 本题显然答案为NNN的情况为两条 ...

  3. 2011 Michigan Invitational Programming Contest

    Crossings Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463 Description ...

  4. Benelux Algorithm Programming Contest 2016 Preliminary 题解

    A. Block Game B. Chess Tournament C. Completing the Square D. Hamming Ellipses E. Lost In The Woods ...

  5. Nordic Collegiate Programming Contest 2016

    A Artwork 输入: n,m表示原图为n*m个白色方格,输入x1,y1,x2,y2表示将x1,y1,x2,y2涂为黑色. 输出: 对于每个x1,y1,x2,y2输入当前图案白色联通块的数目. 思 ...

  6. UCF Local Programming Contest 2016 计蒜客解(补)题报告

    A - Majestic 10(签到) 题目链接 #include <iostream> using namespace std;int main() {int t,x,y,z;scanf ...

  7. 2021-2022 ACM-ICPC Latin American Regional Programming Contest 题解

    B 先两边贪心,然后中间部分卷积 #pragma GCC optimize("O3")#include<iostream> #include<string.h&g ...

  8. 2016 China Collegiate Programming Contest Final

    2016 China Collegiate Programming Contest Final Table of Contents 2016 China Collegiate Programming ...

  9. 2016, IX Samara Regional Intercollegiate Programming Contest I. Deadline

    2016, IX Samara Regional Intercollegiate Programming Contest I. Deadline 题目看这里 Alex works as a devel ...

  10. 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次 ...

最新文章

  1. 华为推CPU Turbo,荣耀Note10突破3000档
  2. 引发热议的AI翻译歧视,是理所应当的事么?
  3. IT十八掌作业_java基础第六天_接口与适配器模式、多态、内部类
  4. 使用 laravel 命令安装 Laravel
  5. 用ORACHK自己主动化检查数据库系统的健壮性
  6. Queue:poll、offer、element、peek的区别
  7. centos下mysql多实例安装3306、3307实例(2014-10-15)
  8. visual studio运行时库MT、MTd、MD、MDd 的区别
  9. 用Typescript如火如荼地进行angular.js
  10. 《从问题到程序:用Python学编程和计算》——2.4 字符串
  11. [BZOJ2282]消防
  12. C# Microsoft.Office.Interop.Word 将多个word合成一个并插入图片 转换成pdf
  13. win10 MAC地址绑定及解绑
  14. Java JUC包的学习文章整理以及整体结构功能概述
  15. 工作站 显卡 测试软件,【戴尔Precision 3530移动图形工作站笔记本使用总结】配置|硬盘|显卡|屏幕|续航_摘要频道_什么值得买...
  16. Samsara v2.0 MIS数据流脚本编程 Demo
  17. PPT设计Tips总结
  18. EasyNVR显示级联成功,EasyNVS平台上并无通道是什么原因?
  19. RTX3070+windows11cuda配置教程
  20. 15个前端(html+css)在线网站检测工具

热门文章

  1. unity黄金矿工游戏
  2. R语言报错 变数的长度不一样,需要改成元素自变量对应的名称
  3. 网络工程师考试内容纲要
  4. 使用matplotlib修改字体之Times New Roman
  5. 基于4G路由器的救护车联网方案:生命,刻不容缓
  6. 总有些中文情歌,让我莫明的感动了
  7. 苹果刷机未知错误75_徐州苹果售后维修中心
  8. 怎么把图片格式转换成PDF呢?
  9. C语言编程练习题_02兰州烧饼
  10. 微信 及支付宝 支付接口 功能