E. Sergey and Subway(思维)

雪球股票数据接口 周期(day-日,week-周,…表示获取前8个周期(日)数据):类型(before-历史)表示深圳证券交易所,表示上海证券交易所):开始时间戳(一定要。 阅读详情
题意:

给出一颗树,对他进行加边,如果三个顶点u,v,w,u连到v,v连到w,那么u和w之间加一条边。问最后每对点的距离之和。每条边权值为1

思路:
  1. 先求出不加边之前每对点之间的距离和,一条边u到v,被用到的次数就是以v为根节点的树的大小sz[v](n-sz[v])次。所以求出每个点,以当前点为根节点的树的大小sz[i].对sz[i](n-sz[i])进行求和,就是不加边前的距离和。
  2. 加边的话,距离为偶数的点对,距离会变成原来的一半,奇数的变成原来的一半+1,不加边前的距离和(ans)=偶数层到偶数层的点对距离和(X)+奇数层到奇数层的点对距离和(Y)+奇数到偶数的点对距离和(Z) 。X和Y必然为偶数,缩小一半,Z的奇数距离点对中的1,节省的步数就是(ANS-奇数到偶数的点对个数)/2
    ans=ans-(ans-num*(n-num))/2;

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll>pii;
typedef vector<int>vi;

#define rep(i,a,b) for(int i=(a);i<(b);++i)
#define per(i,a,b) for(int i=(a);i>(b);--i)
#define de(x) cout<<#x<<"="<<x<<endl
#define dd(x) cout<<#x<<"="<<x<<" "
const int N=2e5+5;
ll sz[N];
ll num=0;
vector<int>G[N];
bool vis[N];
void dfs(int u,int deep){
    if(deep&1)num++;
    sz[u]=1;
    rep(i,0,G[u].size()){
        int v=G[u][i];
        if(!vis[v]){
            vis[v]=true;
            dfs(v,deep+1);
            sz[u]+=sz[v];
        }
    }
}
int main(){
    int n;
    cin>>n;
    int u,v;
    rep(i,1,n){
        cin>>u>>v;
        G[u].push_back(v);
        G[v].push_back(u);
    }
    memset(vis,false,sizeof(vis));
    vis[1]=true;
    dfs(1,1);
    ll ans=0;
    rep(i,1,n+1){
        ans+=sz[i]*(n-sz[i]);
    }
    ans=ans-(ans-num*(n-num))/2;
    cout<<ans<<endl;
}

超声波 vs 红外 vs 激光雷达:扫地机器人避障传感器选型指南(实测对比) 本文深入对比了扫地机器人三种主流避障传感器——超声波、红外与激光雷达的核心原理与实测表现。文章基于成本、精度、环境适应性等关键指标,提供了清晰的选型决策树和典型场景配置方案,旨在帮助开发者与爱好者根据项目需求与预算,构建高效可靠的机器人避障系统。 阅读详情

相关推荐

pe卸载win10更新补丁_禁用Win10系统更新

众所周知,最近WIN10的强制更新导致了很多问题。如:(部分专业软件系统更新后无法使用,硬件中键盘、鼠标、指纹之类的硬件,更新补丁后失灵等问题)。而之前的禁用WindowsUpdate的方法已经失效。下面我们另辟蹊径,利用系统权限的方法使Win10无法更新,达到禁用更新的目的。1.计算机管理-服务中禁用Windows Update服务。2.打开C:\Windows\softwareDistribu...

weixin_39702479的博客 1万+

codeforces E. Sergey and Subway(边权和变形||dfs)

http://codeforces.com/contest/1060/problem/E 题意: 给出一棵树,现对一个节点相连的两个节点再连一条边,问所有点对的距离和 自己做的时候还一直想着树上dp瞎搞,搞了半天弄不出来,发现这道题思路还是比较巧妙 思路: 先把问题转化一下,求树上所有点对的边距离和,那么针对每一条边他的贡献就是 一端点数*另一端点数 这是所有的要使用她的点对。 那么问题就被...

- 回忆゛ 266

Trae CN 使用入门指南

【代码】Trae CN 使用入门指南。

weixin_42551921的博客 8769

CodeForces - 1060E Sergey and Subway(树上任意两点之间的距离和)

Sergey and Subway Sergey Semyonovich is a mayor of a county city N and he used to spend his days and nights in thoughts of further improvements of Nkers' lives. Unfortunately for him, anything and eve...

nka_kun的博客 1083

MacOS蓝牙连接疑难杂症:从基础排查到高级修复全攻略

本文提供了一份全面的MacOS蓝牙故障排查与修复指南。从基础的菜单栏检查、终端命令诊断,到软/硬重启蓝牙服务、删除配置文件,再到使用blueutil工具、重置NVRAM等高级方法,系统性地解决了蓝牙无法连接、连接不稳定等常见问题。最后还分享了环境干扰排查、预防措施及硬件故障自检方法,帮助用户彻底解决Mac蓝牙连接难题。

weixin_29271263的博客 450

Qualcomm AI Engine Direct SDK(QNN)的使用介绍

Qualcomm AI Engine Direct SDK,高通新的AI模型推理框架,又名QNN,为AI开发提供统一API的底层框架。通过这个SDK,可以在高通的 CPU/GPU和HTP上对AI模型进行性能加速。2.Qualcomm AI Engine Direct SDK的公开英文文档。1.Qualcomm AI Engine Direct SDK的下载和安装。

u013250861的博客 6974

Sergey and Subway树形dp + 思维

传送门 题意 给出一颗树,对他进行加边,如果三个顶点u,v,w,u连到v,v连到w,那么u和w之间加一条边。问最后每对点的距离之和。每条边权值为1 分析 这道题的做法挺巧妙的 首先我们先来计算如果不需要加边的情况下,距离和是多少,这个状态转移方程我记得我在以前的博客里面写过,这里稍微提一下 我们首先dfs遍历整棵树,记录每个节点的子树大小,然后,我们去循环每一个点,因为是一个树形结构,所以他的入边,最多只有一条。我们去枚举每一个点,也就是去枚举他的入边,也就是枚举每一条边。那么他的贡献如和进行计算呢?这条边

tlyzxc的博客 230

如何跑通SuperPoint+LightGlue的训练代码使用gluefactory进行训练和评估?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 1786

E. Sergey and Subway

比赛时候写复杂了…… 我写的是 计算每个节点树内所有点到某个点的距离和。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 2e5 + 50; vector<int> g[maxn]; int son[maxn]; ll d[max...

weixin_30663391的博客 220

GPU硬件架构与微架构深度解析34-GPU安全架构深度解析

现代GPU不仅是图形处理器,更是高性能计算平台,安全架构设计至关重要。内存加密- 保护数据在传输和存储时的安全安全启动- 确保固件和软件的完整性隔离机制- 防止不同应用间的数据泄露密钥管理- 安全存储和处理加密密钥。

2301_79143213的博客 100

【2025国赛C题】高教社杯全国大学生数学建模竞赛C题思路+代码+论文

【2025国赛C题】高教社杯全国大学生数学建模竞赛C题思路+代码+论文

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 2904

Sergey and Subway(CodeForces-1060E#513)(DFS计数,数学)

文章目录前言题目思路代码 前言 本题思路极为简单和巧妙! 题目 CF传送门 题目大意: 给你一个有n个节点的树,如果有原树有两点距离为2则加一条边,求修改后所有点对的距离和. 数据范围: 2&amp;lt;=n&amp;lt;=2000002&amp;lt;=n&amp;lt;=2000002&lt;=n&lt;=200000 样例: input1input1input1 4 1 2 1 3 1 ...

Mouse_liang的博客 800

STM32 stack_size和heap_size大小设置的意义

在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。如下图所示的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。 1、若工程中使用的局部变量较多,定义的数据长度较大时,若不调整栈的空间大小,则会导致程序出现栈溢出,程序运行结果与预期的不符或程序跑飞。这时我们就需要手动的调整栈的大小。 2、当工程中使用了malloc动态分配内存空间时,这时分配.......

zxm8513优快云博客 3万+

【Codeforces 1060E】Sergey and Subway | 思维、树形dp

题目链接:https://codeforces.com/contest/1060/problem/E 题目大意: 给出一棵树,如果x连接y,y连接z,那么x连接z 注意:这个连接没有传递性 询问所有点对的最短路的和 题目思路: 看懂题目以后,自然是 传统A题点到为止,假设x与y之间长度是z 那么 如果z为奇数,答案就是(z+1)/2 如果z为偶数,答案就是(z+1)/2 有点废话,但是就是个上取整的关系 所以对于偶数的答案,我们只需要维护一个所有偶数的链的长度之和/2即可 对于奇.

一只酷酷光儿的博客 495

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

E. Sergey and Subway(思维 + dp)

特别地,他连接了原来没有直接隧道相连但有共同邻居的任意两个站点 u 和 v,也就是说,存在一个站点 w,使得原来的地图中 u 和 w 之间存在一条隧道,w 和 v 之间存在一条隧道。接下来 n−1 行,每行包含两个整数 ui 和 vi (1≤ui,vi≤n,ui≠vi),表示这两个索引号的站点通过直接隧道相连。输出格式 输出一个整数,表示 Sergey Semyonovich 在原始地图上为所有具有共同邻居但没有直接连接的站点之间添加新的隧道后,所有站点对之间距离的总和。

m0_64158084的博客 718

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

1060E Sergey and Subway(思维题,dfs)

题意:给出一颗树,现在,给哪些距离为2的点对,加上一条边,问所有点对的距离和 题解:如果没有加入新的边,距离和就会等于每条边的贡献,由于是树,我们用点来代表点上面的边,对于每条边,它的贡献将是(子树大小)*(n-子树大小) 而这题加上了新边,我们依然这样算贡献,跨越旧边的次数,依然是(子树大小)*(n-子树大小),只不过都是两个两个的走,那么虽然跨越了这条边,但是它可能走的是新边,也...

diandu7489的博客 167

CF1060E Sergey and Subway 思维

分两种情况讨论 一种为奇数长为$L$的路径,在经过变化后,我们需要走$\frac{L}{2} + 1$步 一种为偶数长为$L$的路径,在变化后,我们需要走$\frac{L}{2}$步 那么,我们只需要讨论出所有奇数长的路径的个数,再加上原本的路径和,除以2就是答案了 对于奇数长的路径的个数,一定是从奇点走到偶点 对于路径和,考虑每条边的经过次数即可 #include <m...

weixin_30436891的博客 150

【CodeForces】【思维】【DP】1060E-Sergey and Subway

CodeForces 1060E Sergey and Subway ◇题目传送门◆ 前言 感谢Tiw_Air_OAO dalao对我的提示,使我从迷茫走向AC。 题目大意 给定一张有NNN个节点的树形图GGG,若图上存在三个点u,vu,vu,v,且满足u,vu,vu,v之间相距距离为222,则可以在u,vu,vu,v之间连一条边。问此时所有点对间最短距离和。 思路 若我们按照暴力模拟的方式,则必...

IDDFS 692

思维+dfs+二染色,CF 1060E - Sergey and Subway

每个边的贡献为上方点的数目乘下方点的数目,这个我们将权值下放到点上,dfs求子树大小即可。我们对树进行二染色,显然颜色不同的点对间路径权值就是奇数。直接求太慢了,考虑求每个边的贡献,和奇数路径点对的贡献。考虑修改后的图,任意两点间的距离有何变化?时间复杂度: O(N)空间复杂度:O(N)那么我们要求的就是Σ[d / 2]那么奇数路径点的数目如何求呢?那么问题就迎刃而解了。

EQUINOX1的博客 407

【树形DP】Codeforces Round #513 E. Sergey and Subway 所有简单路径和(新增边)

http://codeforces.com/contest/1060/problem/E E. Sergey and Subway Sergey Semyonovich is a mayor of a county city N and he used to spend his days and nights in thoughts of further improvements of Nke...

qq_41037114的博客 259

CF1060E Sergey and Subway

考虑原图:对于原图中一条长度为偶数len的路径,新图长度为len/2;对于原图中一条长度为奇数len的路径,新图长度为(len+1)/2。 设原图长度为偶数的路径总长为A,长度为奇数的路径总长为B,长度为奇数路径有C条,那么新图路径总长即为:(A+B+C)/2。 A+B即为原图的所有路径总长,算每一条边的贡献可得。 C为原图奇数路径条数,可以发现,一条奇数路径的两顶点的深度,一定是一奇一偶。 #include <bits/stdc++.h> #define int long long using

Love_xyh的博客 235

题解 CF1060E 【Sergey and Subway】

题目大意: 给出一棵树,每条边的长度为111,对于原图中每一对距离为222的点,连一条长度为111的边。 求出ans=∑i=1n∑j=indist(i,j)ans=\sum_{i=1}^n\sum_{j=i}^n\texttt{dist}(i,j)ans=∑i=1n​∑j=in​dist(i,j)的值。 考虑对于每一组的点对,其最短路一定是尽量走新增的边(即加边之前距离为222的点对之间的边),...

fz_zsl的博客 350

CF 1060E. Sergey and Subway

题目链接 题意:给你一棵树,然后连接两个有公共邻居的点,问你连完后,任意两点的距离之和。 一开始看这种题,还不怎么会做,借鉴了这位大佬的博客,get到了新技能,当我们求树上任意俩点的距离之时,可以转化问题,不看点,而看边,每条边的使用次数是固定的,每条边使用的次数为:这条边左边的顶点数*右边的顶点数,而由于我们可以将相隔一个点的两个点连起来,所以,如果是偶数的距离,我们可以2个2个跳,就是距离的一...

pubgoso的博客 247

Codeforces - Sergey and Subway

题目链接:Codeforces - Sergey and Subway 答案就是每一条路径的长度+1然后除以2的值。 显然,点分治即可。 考虑另一种做法,答案其实可以转化为:每一条路径之和除以2,最后加上长度为奇数的路径条数。 每一条路径之和,很好计算,直接算每条边的贡献即可。奇数的路径数量呢? 看每一条路径怎么计算:dep[x]+dep[y]-2*dep[lca(x,y)] 显然LCA不影响奇...

青烟绕指柔的博客 395

CF1060E Sergey and Subway 题解

题目链接 两百年前看题解做过的一道题,自己还写了个题解,现在回来感觉当时的做法极其不严谨。 设 dis⁡(i,j)\operatorname{dis}(i,j)dis(i,j) 表示 i,ji,ji,j 的距离。 我们可以发现,对于每一个点对 (i,j)(i,j)(i,j): 如果原来 dis⁡(i,j)\operatorname{dis}(i,j)dis(i,j) 为偶数,那么加上新边后就变成了 dis⁡(i,j)2\frac{\operatorname{dis}(i,j)}{2}2dis(i,j)​。

Brian_Pan_的博客 383

「CF1060E」Sergey and Subway【树形dp好题】

Sergey and Subway time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Sergey Semyonovich is a mayor of a county city NNN and he used to spend...

wzw 374

[CF1060E]Sergey and Subway[树dp]

题意 给出 \(n\) 个点的树,求 \(\sum_{i=1}^n{\sum_{j=i}^n{\lceil \frac{dis(i,j)}{2} \rceil}}\) . \(n\leq 2 \times 10^5\) . 分析 点分治SBT.考虑更快速的做法。 如果直接统计总的贡献唯一的问题在于奇数路径统计时上取整的问题。 实际答案加上奇数长路径条数就可以解决问题。 一条路径可以写成...

aqw145212的专栏 209
上一篇: F. Coprime Subsequences(容斥+莫比乌斯)
下一篇: nginx 修改配置之后 reload也没有成功加载配置
PinappleMi
博客等级 码龄9年 10粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值