CF1060E Sergey and Subway

树上计数dp,考虑每条边的贡献,树上两点距离用深度与LCA表示

长度为2的两点间可以连一条边,所以对于任意两点 i , j i,j i,j, d i s 2 i , j = ⌈ d i s i , j / 2 ⌉ = ( d i s i , j + ( d i s i , j % 2 = = 1 ) ) / 2 dis2_{i,j}=\lceil dis_{i,j}/2 \rceil=(dis_{i,j}+ (dis_{i,j}\%2==1) )/2 dis2i,j​=⌈disi,j​/2⌉=(disi,j​+(disi,j​%2==1))/2
对于前半部分,我们要求原图上所有点对的距离,通过树形dp计算每条边对两端点集的贡献即可
对于后半部分,我们只需另外统计一下在原图中两点距离为奇数的点即可,对于任意两点: d i s i , j = d e p i + d e p j − 2 ∗ L C A i , j dis_{i,j}=dep_i+dep_j-2*LCA_{i,j} disi,j​=depi​+depj​−2∗LCAi,j​ 显然式子中的2*LCA不对奇偶产生影响,所以只需要处理出各点深度即可

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;vector<vector<int>> e(n+1);for (int i=1;i<n;i++){int a,b;cin>>a>>b;e[a].push_back(b);e[b].push_back(a);}vector<int> dep(n+1);vector<ll> sz(n+1);ll ans=0,cnt=0;function<void(int,int)> dfs=[&](int u,int fa){sz[u]=1;for (auto v:e[u]){if (v==fa) continue;dep[v]=dep[u]+1;dfs(v,u);sz[u]+=sz[v];}cnt+=(dep[u]%2==1);ans+=sz[u]*(n-sz[u]);};dep[1]=1;dfs(1,-1);cout<<(ans+cnt*(n-cnt))/2;return 0;
}

CF1060E Sergey and Subway相关推荐

  1. E. Sergey and Subway(思维 + dp)

    Problem - E - Codeforces Sergey Semyonovich 是 N 市县的市长,他一直在思考如何进一步改善 Nkers 的生活.不幸的是,几乎所有可以做的事情都已经完成了, ...

  2. E. Sergey and Subway

    比赛时候写复杂了-- 我写的是 计算每个节点树内所有点到某个点的距离和. #include <bits/stdc++.h> using namespace std; typedef lon ...

  3. 2018.10.04 codeforces1060E. Sergey and Subway(树形dp)

    传送门 一开始把题意读错了. 我们dfs时对于边(p,fa)(p,fa)(p,fa),计算出以ppp为根的子树对子树外连通块的贡献,然后加上漏加的贡献. 这样算出来是答案的两倍. 因为相当于dis(u ...

  4. 杂题记录及简要题解(一)

    一些前几天做过的还不错的但是不是太想专门花一整篇博客的篇幅去写的题就简要地记录在这里. 说是简要题解,其实写得还是挺详细的.之后的杂题记录可能就会写得简略一点. CF1060E Sergey and ...

  5. 谢尔盖.布林的早期思想_谷歌联合创始人谢尔盖·布林(Sergey Brin)谈人工智能与自动化...

    谢尔盖.布林的早期思想 Here are three links worth your time: 这是三个值得您花费时间的链接: Google cofounder Sergey Brin talks ...

  6. L - Subway POJ - 2502

    L - Subway POJ - 2502 题意: 从 家出发步行与坐 subway 交替进行,问最小的时间花费,最终四舍五入答案为 整数 存图难 四舍五入: double b int a = b + ...

  7. PAT甲级1131 Subway Map (30分):[C++题解]堆优化dijkstra、单源最短路、地铁地图、巧妙地建图套dijkstra模板!!

    文章目录 题目分析 题目链接 题目分析 原题: 来源:acwing 分析: 建图:所有能走到的点之间建立一条边,比如下面一条地铁线路有4站,它们是相通的,两两之间建一条边,边权是经过的站点数. 下面考 ...

  8. AtCoder Regular Contest 061 E - Snuke‘s Subway Trip(建图 + dijkstra最短路 / 0/1bfs / 并查集)

    AtCoder Regular Contest 061 E - Snuke's Subway Trip problem 洛谷翻译 my idea 最近一直在做网络流,所以一读这题后,我就想到了最小费用 ...

  9. 结对项目——Subway

    博客链接: 结对项目-Subway 转载于:https://www.cnblogs.com/Dominic-Abraham/p/9117266.html

最新文章

  1. MapReduce基础开发之八HDFS文件CRUD操作
  2. 项目遇到的问题或处理办法
  3. 用公众号获取 任意公众号文章列表 软件还是免费
  4. csstd超出部分用...替换
  5. Android开发相关操作
  6. 用泛型的sort与binarySearch方法
  7. vue +element 导出多级表头(标题)
  8. static_cast 与reinterpret_cast
  9. Hive静态分区和动态分区
  10. HDU1556 color the ball(前缀和)
  11. ubuntu下使用锐捷
  12. 2022-2028年全球与中国木材加工机械行业市场需求预测分析
  13. 成考专升本高等数学公式笔记
  14. 全新三维成像技术:我们离科幻故事里的立体投影又近了一步
  15. 网页上文件的上传和下载
  16. html5_滑条等其他标签
  17. 第一章:计算机的软硬件基本结构_4
  18. linux用c语言模拟抢票系统,C语言可以编写抢票软件吗
  19. 人脸识别之人脸验证(二)--DeepID
  20. 【2017年第3期】“云治理”设想

热门文章

  1. C#/.NET BCL:基础类库
  2. B站:以SLO为核心的可用性观测与质量运营
  3. JavaScript权威指南 第二章 词法结构
  4. 慢的yong-gc怎么排查
  5. 2022CPA财务与成本管理-成本计算专题【完结】
  6. cmd52命令发送 mmc_Linux MMC framework(2)_host controller driver
  7. 玲珑杯Unity开发心得——开始菜单GUI制作
  8. 【wordpress】WordPress加速,取消加载Gravatar头像
  9. 如何遍历组合数?(不是求组合数,含代码)
  10. 若依spring-cloud 接入mybatis-plus