[POI2008]Sta

[POI2008] STA-Station题解 个节点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。时遍历所有点,然后DP一下就可以得到正确答案。一个结点的深度为该节点到根的简单路径上边的数量。个点中的一个点作为树的根,然后再遍历其它。个点得到所有点的深度,这样的时间复杂度为。号点子树内(包括自身)的点的深度都减少了。所以可以得到一个状态转移方程:假设从。点为根节点时所有点的深度之和,我们可以找到变化的规律:所有在。不难想到暴力方法:每次选取。这样的话,只需要在根节点为。如上图所示,先假设根为。 阅读详情

两遍DFS……

第一遍维护自己儿子到自己的

第二遍维护自己祖先到自己的

用了内嵌汇编……

//Lib
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<ctime>
 
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<queue>
//#include<stack>
#include<set>
#include<map>
using namespace std;
//Macro
#define rep(i,a,b)  for(int i=a,tt=b;i<=tt;++i)
#define drep(i,a,b) for(int i=a,tt=b;i>=tt;--i)
#define erep(i,e,x) for(int i=x;i;i=e[i].next)
#define irep(i,x)   for(__typeof(x.begin()) i=x.begin();i!=x.end();i++)
#define read()  (strtol(ipos,&ipos,10))
#define sqr(x)  ((x)*(x))
#define pb  push_back
#define PS  system("pause");
typedef long long   ll;
typedef pair<int,int> pii;
const int oo=~0U>>1;
const double inf=1e100;
const double eps=1e-6;
string name="", in=".in", out=".out";
//Var
struct E
{
    int node,next;
}e[2000008];
struct N
{
    long long up,down,size; 
}node[1000008];
int stack[20000000],bak;
char file[20000000],*ipos;
int h[1000008],n,tot;
void add(int a,int b){e[++tot].next=h[a];e[tot].node=b;h[a]=tot;}
void DFS1(int fa,int u)
{
    erep(i,e,h[u])
    {
        if(e[i].node!=fa)
        {
            DFS1(u,e[i].node);
            node[u].size+=node[e[i].node].size;
            node[u].down+=node[e[i].node].down;
        }
    }
    node[u].down+=node[u].size;
    node[u].size++;
}
void DFS2(int fa,int u)
{
    if(u!=1)node[u].up=node[fa].up+n-node[u].size+node[fa].down-(node[u].size+node[u].down);
    erep(i,e,h[u])
        if(e[i].node!=fa)DFS2(u,e[i].node); 
}
void CallDFS(void (*p)(int,int))
{
    __asm__ __volatile__
    (
        "mov %%esp,%0\n"
        "mov %1,%%esp\n"
        :"=g"(bak)
        :"g"(stack+20000000-1)
        :
    );
    (*p)(0,1);
    __asm__ __volatile__
    (
        "mov %0,%%esp\n"
        :
        :"g"(bak)
        :
    );  
}
void Work()
{
    fread(ipos=file,20000000,1,stdin);
    n=read();int a,b;
    rep(i,1,n-1)
    {
        a=read();b=read();
        add(a,b),add(b,a);
    }
    void (*p)(int,int)=DFS1;
    CallDFS(p);
    p=DFS2;
    CallDFS(p);
    int pos=1;
    rep(i,1,n)if(node[i].up+node[i].down>node[pos].up+node[pos].down)pos=i;
    cout<<pos<<endl;    
}
int main()
{
//  freopen((name+in).c_str(),"r",stdin);
//  freopen((name+out).c_str(),"w",stdout);
//  Init();
    Work();
    return 0;
}


物理机centos7系统重启后直接进入dracut Warning: /dev/centos/root does not exist Warning: /dev/mapper/centos-root does not exist 在shell命令行执行以下: dracut:/# lvm vgscan dracut:/# lvm vgchange -ay dracut:/# exit 之后可以正常进入系统(测试正常)。 但是重启之后依然会进入dracut模式,永久解决如下: 查看kernel文件 [root@ecs ~]# ls -ltrh /boot 阅读详情

相关推荐

有限差分法地震数据正演模拟(二)

正演模拟,是在地球物理勘探研究中,根据地质体的形状、产状和物性数据,通过构造数学模型计算得到其理论值(数学模拟),或通过构造实体模型来观测模型所产生的地球物理效应的数值(物理模拟)。p(t+1,x,z)即为下一时刻的波长信息,该波动方程的意义就是通过前一时刻(p(t-1,x,z))和现在时刻(p(t,x,z))预测下一时刻波的传播情况。声波波动方程:反应声波的传播规律,描述最简单的波现象的方程,p代表波场信息,v表示速度场信息因为速度只与速度场有关,所以只与x,z有关。其结果也可以作为反演的验证。

weixin_46285501的博客 3937

[POI2008]STA-Station

之前都看过有这个dp,一直不知道是啥意思,本来弱弱树形dp都不太熟悉,不过今天工数课的时候突然想看一下,写个板子题练练吧。 对于我的理解,换根的题目一般是根不确定,而求得答案与根是谁有关,而且通过暴力枚举每个点为根节点即可得到答案。 这时候如果我们发现当该点的信息能够通过父节点的信息递推出来,那么我们可以考虑尝试换根dp,毕竟换根dp的本质还是递推,只不过通过父节点的信息递推本节点。 [POI2008]STA-Station #define IO ios::sync_with_stdio(false);ci

Fighting_Peter的博客 263

FPGA矩阵键盘计算器Verilog实现与Quartus仿真全流程解析

本文详细解析了基于FPGA和Verilog的矩阵键盘计算器实现全流程,包括矩阵键盘扫描、状态机设计、算术运算逻辑及数码管显示驱动。通过Quartus仿真与Testbench测试,确保设计稳定性与准确性,适合数字逻辑设计初学者学习FPGA开发与硬件描述语言应用。

chair的专栏 742

【bzoj1131】 [POI2008]Sta

Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N Output 输出你所找到的点,如果具有多个解,请输出编号最小的那个. Sample Input 8 1 4 5 6 4 5 6 7 6 8 2 4 3 4 Sample Output 7

Timothy023的博客 384

思科模拟器-实验16:三层交换 VLAN 互访配置

【实验内容】 (1)按实验线路连接图进行连接。按照实验线路连接图分别配置各台计算机IP 地 址。 (2) 按照实验线路连接图,在SW1和SW2上分别完成VLAN配置,并在VLAN中添加相应的端口成员,同时配置Trunk端口。同时测试各计算机之间是否可以相互ping 通。 Switch>en Switch#config t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#vlan 10 Switc

weixin_44270194的博客 4729

Calpuff模型实战:从气象数据预处理到污染物扩散模拟全流程指南

本文提供了一份详尽的Calpuff模型实战指南,涵盖从气象数据预处理、地形处理到污染物扩散模拟与结果可视化的全流程。重点解析了Calmet气象场构建、Calpuff核心参数配置,并与AERMOD模型进行对比,帮助环境工程师与科研人员掌握这一强大的三维非稳态拉格朗日扩散模型,以应对复杂地形、海岸熏烟等实际模拟挑战。

s4t5u6v7的博客 459

[BZOJ1131][POI2008]Sta(树形dp+维护)

从那一天开始 没有改变的始终还是没有改变 从来没有拥有过的事物 只能懊悔的让它从指尖中离去

zyf2000 1209

HFSS入门学习笔记——微带一分四功分器的设计与仿真

功率分配器是将输入信号功率分成相等或不相等的几路功率输出的一种多端口无源微波网络,用于功率分配和功率合成。工程上常用的微带功分器有T型功分器和威尔金森功分器。经典的威尔金森功分器有几个缺点:①、多应用于低频段,高频段时,波长会与隔离电阻的尺寸相比拟,此时需要考虑电阻的分布参数效应;②、大功率应用时,隔离电阻的耗散功率要很大,因此隔离电阻的体积也会比较大。

weixin_42126696的博客 2万+

P3478 [POI2008]STA-Station(换根DP模板)

P3478 [POI2008]STA-Station 题解:这题是换根DP模板题。 https://www.luogu.com.cn/blog/sflsrick/note-how-to-change-root //#pragma GCC optimize(2) //#pragma GCC optimize("Ofast","inline","-ffast-math") //#pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<iostream&gt

多一些不为什么的坚持 420

标准论文参考文献添加方法——Zotero入门使用教程

第一篇论文投出去了,写一下最后一步的参考文献修饰润色吧! 论文的参考文献,即References,是论文的最后一步,相信不管是写毕设论文还是期刊论文都遇到过需要修改参考文献的情况,非常之麻烦。而且参考文献中经常会与生僻奇怪气体出现,一个一个修改非常浪费时间,这里介绍一下一个非常好用的软件Zetero。 第一步:软件的下载安装及绑定Word 尽量使用客户端吧,

MISAYAONE的博客 20万+

01-系统技术架构师必备——软件架构设计基础与核心概念

摘要 本文系统阐述了软件架构设计的核心概念与方法论,重点涵盖以下内容:1)软件架构的四大要素(构件、连接件、约束、配置)及其边界划分;2)Garlan & Shaw五大架构风格(数据流、调用/返回、独立构件、虚拟机、仓库)的典型应用场景;3)基于电商库存系统的架构选型实战案例,展示如何根据业务需求(高并发、最终一致性)选择事件驱动架构配合Saga模式;4)介绍ABSD、DSSA等主流架构方法论及ISO/IEEE标准体系。文章融合金融与互联网领域的架构实践经验,为技术架构师提供系统性的知识框架和决策参考。

模界 | AI工程化实践者 182

1131: [POI2008]Sta

1131: [POI2008]Sta Time Limit:10 SecMemory Limit:162 MBSubmit:783Solved:235[Submit][Status] Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=1000000 ...

weixin_33774615的博客 76

机器人常用坐标系详解:原理、获取方法及实战实例

本文系统阐述了机器人四大核心坐标系(世界、基、工具、工件)的原理与标定方法。世界坐标系提供全局参考基准,基坐标系绑定机器人本体,工具坐标系定义末端执行器位置,工件坐标系则锁定作业对象位置。通过齐次变换矩阵实现各坐标系间的关联转换。重点介绍了三类标定技术:手动设定法(世界坐标系)、三点/六点法(工具TCP标定)和视觉识别法(工件标定),并以工业机械臂上下料为例演示了完整应用流程。随着技术发展,自动化标定、动态坐标系等新趋势将进一步提升机器人作业精度与效率。

start_up_go的博客 514

洛谷P3478 [POI2008]STA-Station

P3478 [POI2008]STA-Station 题目描述 The first stage of train system reform (that has been described in the problem Railways of the third stage of 14th Polish OI. However, one needs not ...

weixin_30337251的博客 82

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Bzoj 1131[POI2008]STA-Station (树形DP)

Bzoj 1131[POI2008]STA-Station (树形DP) 状态: 设\(f[i]\)为以\(i\)为根的深度之和,然后考虑从他父亲转移. 发现儿子的深度及其自己的深度\(-1\) 其余的\(+1\),记录一下\(size\)就ok了 转移: \(f[i] = f[fa] + n - 2 * size[i]\) 记忆化搜索即可. Bzoj 可能过不了,原因貌似是栈空间不足,...

dieloupi0136的博客 219

pscad IEEE标准系统搭建说明

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

【Luogu3478】【POI2008】STA-Station(动态规划)

【Luogu3478】【POI2008】STA-Station(动态规划) 题面 题目描述 给出一个\(N(2<=N<=10^6)\)个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 题解 考虑直接对于每个点计算一次 时间复杂度\(O(n^2)\)显然无法接受 所以,考虑只进行一次\(DFS\)在通过递推求解 如果已经知道根节点的答案的话 那么,他的儿子节点很容易的可以...

weixin_30415801的博客 131

P3478 [POI 2008] STA-Station 题解

给定一个 n 个点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。输出一行一个整数表示你选择的结点编号。如果有多个结点符合要求,输出任意一个即可。接下来 (n−1) 行,每行两个整数 u,v,表示存在一条连接 u,v 的边。对于全部的测试点,保证 1≤n≤106,1≤u,v≤n,给出的是一棵树。一个结点的深度之定义为该节点到根的简单路径上边的数量。第一行有一个整数,表示树的结点个数 n。输出 7 和 8 都是正确答案。

xvhao2013的博客 395

洛谷 P3478 [POI 2008] STA-Station

文章摘要: 本文介绍了洛谷P3478题目的解法,采用树形动规中的换根动规(二次扫描)技术。该算法通过两次深度优先搜索解决无根树问题:第一次扫描以固定根节点计算初始解,第二次扫描通过状态转移方程实现根节点转换时的动态更新。具体实现中,维护子树大小和节点深度和数组,利用数学推导优化计算结果。最终代码在O(n)时间内找到使所有节点深度和最大的根节点,适用于大规模树结构问题。

君义NOIP的博客 1047

P3478 [POI 2008] STA-Station

所以先以1为根遍历一遍树,dp[num]代表以num为根的最大深度和,sz[num]代表了以num为根的子树的有多少个节点。所以先用1为根的树初始化dp,初始化的dp代表了以num为子树的最大深度和,并不是我们的最终目标。如果要转化成以num为根的整个树的最大深度和,那就是dp[num]=dp[num]-sz[儿子]+n-sz[儿子];这个式子代表了转化的时候,以num为根的所有结点都减去1个深度,其他的都加1个深度。给定一个 n 个点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。

2601_95312807的博客 41

BZOJ1131 POI2008 Sta 【树形DP】

BZOJ1131 POI2008 Sta Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=1000000 下面N-1条边. Output 输出你所找到的点,如果具有多个解,请输出编号最小的那个. Sample I...

weixin_30570101的博客 95

【bzoj 1131】 Sta 【POI2008】

Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N&lt;=1000000 下面N-1条边. Output 输出你所找到的点,如果具有多个解,请输出编号最小的那个. Sample Input 8 1 4 5 6 4 5 6 7 6 8 2 4 3 4 Sample Output 7 对...

TLECODE的博客 278

【BZOJ1131】[POI2008]Sta【TreeDP】

【题目链接】 经典TreeDP。 /* Pigonometry */ #include #include #include using namespace std; typedef long long LL; const int maxn = 1000005; int n, head[maxn], cnt, ans, size[maxn]; LL sum; struct

BraketBN 432

P3478 [POI2008]STA-Station(sta树 树形dp)

典型的sta树 得出状态方程dp[u]为将u设置为根节点的全部度数和相加,方程dp[v]=dp[u]+n-2*num[v](num[v]指的是以v为根节点的子树的节点数) 代码: #include #include #include #include #include #include using namespace std; const int maxn=2000100; ty

qq_37919863的博客 418
上一篇: 关于内嵌汇编
下一篇: 关于Simpson积分
OrpineX
博客等级 码龄17年 16粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值