CF1060E Sergey and Subways 假的点分治
#include<bits/stdc++.h> #define MAXN 200010 #define int long long using namespace std; struct Edge{ int end , upEd; }Ed[MAXN << ]; long long head[MAXN] , size[MAXN] , N , minSize , minDir , nowSize , cntEd; long long ans; bool vis[MAXN]; inline void addEd(int a , int b){ Ed[++cntEd].end = b; Ed[cntEd].upEd = head[a]; head[a] = cntEd; } //求当前子树大小 void getNowSize(int dir){ vis[dir] = ; nowSize++; for(int i = head[dir] ; i ; i = Ed[i].upEd) if(!vis[Ed[i].end]) getNowSize(Ed[i].end); vis[dir] = ; } //求重心 void getZX(int dir){ vis[dir] = size[dir] = ; ; for(int i = head[dir] ; i ; i = Ed[i].upEd) if(!vis[Ed[i].end]){ getZX(Ed[i].end); size[dir] += size[Ed[i].end]; maxSize = max(maxSize , size[Ed[i].end]); } maxSize = max(maxSize , nowSize - size[dir]); if(maxSize < minSize){ minSize = maxSize; minDir = dir; } vis[dir] = ; } //算答案 pair < long long , long long > calAns(int dir , int dep){ vis[dir] = ; ans += dep + >> ; nowSize++; pair < ); for(int i = head[dir] ; i ; i = Ed[i].upEd) if(!vis[Ed[i].end]){ pair < ); q.first += t.first; q.second += t.second; } vis[dir] = ; return q; } void work(int dir){ nowSize = ; getNowSize(dir); minSize = nowSize; getZX(dir); , culJi = , culOu = ; vis[t] = ; nowSize = ; for(int i = head[t] ; i ; i = Ed[i].upEd) if(!vis[Ed[i].end]){ int k = nowSize; //注意答案统计! pair < ); ans += (sum * (nowSize - k) + t.first * k + t.second * culOu + culJi * (nowSize - k - t.second)) >> ; sum += t.first; culJi += t.second; culOu += nowSize - k - t.second; } for(int i = head[t] ; i ; i = Ed[i].upEd) if(!vis[Ed[i].end]) work(Ed[i].end); } signed main(){ ios::sync_with_stdio(); cin >> N; ; i < N ; i++){ int a , b; cin >> a >> b; addEd(a , b); addEd(b , a); } work(); cout << ans; ; }
CF1060E Sergey and Subways 假的点分治的更多相关文章
- CF1060E Sergey and Subway(点分治)
给出一颗$N$个节点的树,现在我们**在原图中**每个不直接连边但是中间只间隔一个点的两个点之间连一条边. 比如**在原图中**$u$与$v$连边,$v$与$w$连边,但是$u$与$w$不连边,这时候 ...
- [CF1060E]Sergey and Subway[树dp]
题意 给出 \(n\) 个点的树,求 \(\sum_{i=1}^n{\sum_{j=i}^n{\lceil \frac{dis(i,j)}{2} \rceil}}\) . \(n\leq 2 \tim ...
- CF1060E Sergey and Subway 思维
分两种情况讨论 一种为奇数长为$L$的路径,在经过变化后,我们需要走$\frac{L}{2} + 1$步 一种为偶数长为$L$的路径,在变化后,我们需要走$\frac{L}{2}$步 那么,我们只需要 ...
- cf1060E. Sergey and Subway(树形dp)
题意 题目链接 Sol 很套路的题 直接考虑每个边的贡献,最后再把奇数点的贡献算上 #include<bits/stdc++.h> #define Pair pair<int, in ...
- 【BZOJ3697】采药人的路径 点分治
[BZOJ3697]采药人的路径 Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材.采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是 ...
- BZOJ3697:采药人的路径(点分治)
Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材. 采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是阳性的. 采药人每天都要进行采药 ...
- 【BZOJ3451】Tyvj1953 Normal - 点分治+FFT
题目来源:NOI2019模拟测试赛(七) 非原题面,题意有略微区别 题意: 吐槽: 心态崩了. 好不容易场上想出一题正解,写了三个小时结果写了个假的点分治,卡成$O(n^2)$ 我退役吧. 题解: 原 ...
- 【luogu3733】【HAOI2017】 八纵八横 (线段树分治+线性基)
Descroption 原题链接 给你一个\(n\)个点的图,有重边有自环保证连通,最开始有\(m\)条固定的边,要求你支持加边删边改边(均不涉及最初的\(m\)条边),每一次操作都求出图中经过\(1 ...
- BZOJ4182 Shopping(点分治+树形dp)
点分治,每次考虑包含根的连通块,做树形多重背包即可,dfs序优化.注意题面给的di范围是假的,坑了我0.5h,心态炸了. #include<iostream> #include<cs ...
随机推荐
- npm install权限问题,报错:permission denied。
1.部署gulp项目时,nodeJs和gulp都已经正确安装,在项目内部执行npm install命令时,有些gulp的插件一直下载不成功,报错几种以下错误: “gulp-imagemin: Coul ...
- Ansible--原理
什么是Ansible Ansible是一种IT自动化运维工具,它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署或者是零停机滚动更新Ansible是新出现的自动化运维工具,基于Python ...
- Sql Server 增加字段、修改字段、修改类型、修改默认值
1.修改字段名: alter table 表名 rename column A to B 2.修改字段类型: alter table 表名 alter column 字段名 type not null ...
- C#语言————第四章 深入C#的String类
*********类型转换**************** Convert与Parse的区别: Convert可以将任何内置类型转换为其他任何内置类型 XX.Parse:只能将字符串转换为XX类型例如 ...
- 安全之路 —— 无DLL文件实现远程线程注入
简介 在之前的章节中,笔者曾介绍过有关于远程线程注入的知识,将后门.dll文件注入explorer.exe中实现绕过防火墙反弹后门.但一个.exe文件总要在注入时捎上一个.dll文件着 ...
- 点击eclipse包报错
每次只要新建一个package包,或者鼠标选择某个package包,系统就会提示:An error has occurred. See error log for more details. org/ ...
- Linux 小知识翻译 - 「端口限制」
上次说了端口号相关的内容,这次聊聊「端口限制」的事. 经常看到关于安全的书籍上会说「不要开放多余的端口」,那么,如何限制端口才好呢? 实际,端口限制的方法大体上分的话有2种. 其一,「通过应用程序来处 ...
- beta版本汇总
deta版本五天汇总 day1 day2 day3 day4 day5 GitHub地址 前端代码github地址 后端代码github地址 这里说明一下我们队伍的安排风格: 第一天:明确安排前后端的 ...
- swift语言混编--语言交互的接口
FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the ...
- 路由器不重启,是否ip就永远不变
今天发现公司的公网ip突然变了,没有人去动过路由器怎么会这样呢?经查原因如下:1.不一定,IP变化是每一次拨号重新获取的.2.路由器重启了,会自动拨号,获得IP3.但如果说因各种原因,掉线,路由器也会 ...