【JZOJ 5887】【NOIP2018模拟9.27】作业

基于FPGA的 SelectIO IP核 的仿真验证-----( LVDS差分高速传输) SelectIO IP核 的仿真验证 阅读详情

Description

小L在完成他的集合论作业时遇到了这样一题:一颗n个节点的树,定义F(u,d)为到u距离不超过d的点组成的集合,求不同的F(u,d)的数量。

Solution

先抛出结论:Ans=∑min(fx+2,gx)Ans=\sum min(f_x+2,g_x)Ans=∑min(fx​+2,gx​)
fxf_xfx​表示当然点子树中,距离最远的点的距离(经过边数)
gxg_xgx​表示当前点往它父亲走,除去当前子树,距离最远的点的距离(经过边数)

证明:
我们当前的统计规则是:对于同一种情况,我们在深度小的地方统计;
显然有结论:

  • 结论1:对于点x,确认d,如果每一条出边所在的子树都没有覆盖满,那么这种情况一定是独一无二的;
  • 结论2:在上述规则下,每个点d的取值一定包括0的连续一段数,也就是说,只要求出了每个点d的上界即可;

我们考虑怎么求上界,
每个点d的取值必须满足以下限制:

  1. 不能把它父亲所在的子树填满;
  2. 当子树填满时,不能往上走超过fx+2f_x+2fx​+2条边;

限制1显然,把父亲填满了肯定会重复,
限制2可以这么理解:当前点x的父亲为y,当y的d=fx+1d=f_x+1d=fx​+1时,子树x会被填满,其他子树与y距离小于等于fx+1f_x+1fx​+1的点会被选中,
当x的d=fx+2d=f_x+2d=fx​+2时,子树x也会被填满,同时往上走到y,同样的,y其他子树与y距离小于等于fx+1f_x+1fx​+1的点也会被选中,
所以这两种情况是等价的,

现在你求出来的每个点必须严格小于一个值设为D,那么d的取值为0~(D-1),
所以直接把D相加即可

复杂度:O(n)O(n)O(n)

Code

#include <cstdio>
#include <algorithm>
#define fo(i,a,b) for(int i=a;i<=b;++i)
#define fod(i,a,b) for(int i=a;i>=b;--i)
#define efo(i,q) for(int i=A[q];i;i=B[i][0])
#define min(q,w) ((q)>(w)?(w):(q))
#define max(q,w) ((q)<(w)?(w):(q))
using namespace std;
typedef long long LL;
const int N=200500;
int read(int &n)
{
	char ch=' ';int q=0,w=1;
	for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
	if(ch=='-')w=-1,ch=getchar();
	for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n;
LL ans;
int a[N];
int B[2*N][2],A[N],B0;
int dp[N];
void link(int q,int w)
{
	B[++B0][0]=A[q],A[q]=B0,B[B0][1]=w;
	B[++B0][0]=A[w],A[w]=B0,B[B0][1]=q;
}
void dfsf(int q,int fa)
{
	dp[q]=0;
	efo(i,q)if(B[i][1]!=fa)dfsf(B[i][1],q),dp[q]=max(dp[q],dp[B[i][1]]+1);
}
void dfs(int q,int fa,int e1)
{
	int mx=0,mx1=0,mx0=-1;
	efo(i,q)if(B[i][1]!=fa)
	{
		if(dp[B[i][1]]+1>=mx)
		{
			mx1=mx,mx=dp[B[i][1]]+1,mx0=B[i][1];
		}
		else mx1=max(mx1,dp[B[i][1]]+1);
	}
	if(fa)ans+=(LL)min(e1,dp[q]+2);
	else ans+=dp[q]+1;
	efo(i,q)if(B[i][1]!=fa)dfs(B[i][1],q,max(e1+1,(mx0==B[i][1]?mx1:mx)+1));
}
int main()
{
	freopen("homework.in","r",stdin);
	freopen("homework.out","w",stdout);
	int q,w,_;
	read(_);
	fo(I_,1,_)
	{
		read(n);
		fo(i,1,n-1)read(q),read(w),link(q,w);
		ans=0;
		dfsf(1,0);
		dfs(1,0,0);

		printf("%lld\n",ans);
		B0=0;
		fo(i,1,n)A[i]=0;
	}
	return 0;
}
【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通 本次实验以芯片为MCU,使用25MHz外部时钟源。以太网PHY层芯片为LAN8720A,由MCU引脚PA8提供时钟。 阅读详情

相关推荐

QCC5125/QCC5144----LDAC 44.1K 48K 96K 192K 输出

QCC5125/QCC5144----LDAC 44.1K 48K 96K 192K 输出。而且还不需要license限制。

Alex_886的博客 1975

jzoj 5887【NOIP2018模拟9.27】作业

不熟悉,有待填坑 转载于:https://www.cnblogs.com/rilisoft/p/11140569.html

weixin_30275415的博客 217

深入解析CRC16查表法:从原理到Modbus协议实践

本文深入解析了CRC16查表法的核心原理与实现,重点阐述了其“空间换时间”的优化思想。通过对比直接计算法,详细说明了查表法如何通过预计算表格将计算速度提升数十倍,并提供了完整的Modbus CRC16查表法代码生成、解析及实战避坑指南,帮助开发者在嵌入式及工业通信场景中高效实现可靠的数据校验。

weixin_29166013的博客 555

NOIP模拟9.27

2013提高D1 A.转圈游戏(快速幂)AC B.火柴人排队(树状数组求逆序对)AC C.货车运输(贪心+并查集+树上倍增)AC

Icefox的博客 426

硅传CC1310二次开发必备:手把手教你用JTAG解锁被锁定的Flash存储器

本文针对硅传CC1310模块二次开发中常见的Flash锁定问题,提供了从原理剖析到实战操作的完整解决方案。详细介绍了如何使用Uniflash和Flash Programmer 2等工具进行Flash解锁和擦除,并强调了硬件连接稳定性与供电质量的关键作用,帮助开发者彻底解决烧录障碍,为后续应用开发铺平道路。

weixin_29189373的博客 254

RSA 2048/4096 签名校验算法

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能...

qq_38769551的博客 9500

IDEA里properties文件总显示\uXXXX?手把手教你设置UTF-8编码和Transparent选项

本文将深入剖析这一问题的根源,并提供一套完整的解决方案,让你从此告别Unicode转义序列的困扰。在实际项目中,我发现最可靠的做法是在项目初始化时就统一配置好所有编码设置,并把这些配置纳入团队onboarding流程。:这种现象不是乱码,而是IDEA对.properties文件的一种保护机制,确保文件内容在不同环境下都能正确解析。提示:这三个设置项之间存在优先级关系,properties文件专用设置的优先级最高。这种层级设计允许开发者为不同类型的文件设置不同的编码策略,提供了极大的灵活性。

weixin_33688840的博客 440

线性代数 --- 置换矩阵 (Permutation matrix)

置换矩阵 - permutation matrix

松下J27录放机 3万+

codeforces 337D D. Book of Evil(树形dp)

题目链接:codeforces 337D题目大意:给出一棵树,给出感染物的感染范围,给出一些已经确定被感染的点,问感染物可能放置的点的个数。题目分析: 定义状态dp[i]代表某个点到达离它最远的确定的感染点的距离。 然后我们首先dfs一遍,求得以1为根的树,每个点到子树中的感染点的最大距离,然后再dfs一遍,求得dp[i]所要求的值,利用一个dd[i]数组表示第i点的父亲,除了自己及以自己为根的子树

llin-黎辰 2097

华为OD机试真题 新系统2026-04-08 Python&JS 实现【配置操作失败数量统计】

模拟一个系统的命令行配置,包含添加、修改、删除三项操作,详情如下: 添加操作命令:add_rulerule_id=1rule_index = 18 修改操作命令: mod_rule rule_id= 1rule_index = 100 删除操作命令:del_rulerule_id=1

MISAYAONE的博客 586

【KingSCADA】如何创建新应用

KingSCADA3.8集成开发环境是基于工程的应用管理模式,实现了对多个应用的集中开发和管理的功能,一个工程可以同时管理多个应用,即在KingSCADA3.8工程设计器中可以同时对多个应用进行开发,应用之间可以实现相互复制、粘贴等功能,大大提高了开发效率。(此处感觉和VS类似)使用KingSCADA3.8开发的系统称为应用,一个完整的应用一般包含以下部分或全部内容:IO设备、IO采集点、图形界面、动画链接、趋势曲线、报警和事件、历史记录、数据库、Web Server等部分。

做有价值的事,积累有价值的笔记! 3108

Codeforces Round #169 (Div. 2) E. Little Girl and Problem on Trees(给出一棵树,对距离某个点d范围之内的所有点+x,查询某个点的值)

E. Little Girl and Problem on Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output A little girl loves pro

_zidaoziyan的博客 1622

2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题5)-网络部分解析-附详细代码

2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题5)-网络部分解析-附详细代码

bfq05234214的博客 416

5882. 【NOIP2018模拟A组9.25】雪人(线段树)

题目大意: 给定一个长度为 N 的序列,每次操作可以选选择一个数,这个数和它右边的数比大小,如 果这个数比较大,就和右边的数交换,然后和右边的数接着比大小直到某一次它右边的数比 他大或者他右边没有数了。求最小的操作次数使得序列变为升序。 思路: 因为交换是不会改变相对顺序的,所以从左往右找,找到一个数右边有比他大的就要答案加一。 程序: #include&lt;cstdio&gt; #includ...

学习成神之路 367

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

EZOI [NOIP模拟赛][莫比乌斯反演]

求∑a1i1=1\sum_{i_1=1}^{a_1}∑a2i2=1\sum_{i_2=1}^{a_2}......∑anin=1gcd(i1,i2,...,in)gcd(i1,i2,...,in)\sum_{i_n=1}^{a_n}{gcd(i_1,i_2,...,i_n)}^{gcd(i_1,i_2,...,i_n)} (2≤n≤1000, 1≤ai≤10510^5)先来考虑n=2n=2的情

Vectorxj的博客 1169

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jzoj 模拟赛总结(2017.07.12)

T1. 蚂蚁: 有N只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,我们知道它距离竿子左端的距离xi,但不知道它当前的朝向。请计算各种情况当中,所有蚂蚁落下竿子所需的最短时间和最长时间。 例: 竿子长10cm,3只蚂蚁位置为2 6 7,最短需要4秒(左、右、右),最长需要8秒(

生如夏花之绚烂 800

廖雪峰Python教程[完整版]

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

5883. 【NOIP2018模拟A组9.25】到不了(启发式合并)

题目大意: 维护一个森林,支持连边操作和查询两点 LCA 操作 思路: 启发式合并,每次把小的树连接到大的树上面就好了,暴力重构lca数组,维护个根,就可以快速得出lca了 还可以离线lct,这个我不是很懂…晚上可以问问dalao们 程序: #include&amp;lt;cstdio&amp;gt; #include&amp;lt;iostream&amp;gt; #include&amp;lt;algorithm&amp;gt; #def

学习成神之路 343

Jzoj5884. 【NOIP2018模拟A组9.25】蒲公英的约定

Description wy 和 wjk 是好朋友。 今天他们在一起聊天,突然聊到了以前一起唱过的《蒲公英的约定》。 “说到蒲公英,我给你讲一个故事吧。” “嗯?” “从前有两朵蒲公英,他们约定一起长大,在 N 天内每一天都长出同样多的种子,可是, 他们不想让其他植物知道他们到底要长出多少种子,于是他们中的哥哥想出了一个办法,最 开始,他会告诉弟弟一个数 P,然后在接下来的若干天里每一天哥哥会告诉...

RainbowCrown_CGH's blog 384

【JZOJ 4694】【HDU 5283】火神的鱼

Description 火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可

1233

【JZOJ 3053】旅行

Description 给定一个n行m列的字符矩阵,’.’代表空地,’X’代表障碍。移动的规则是:每秒钟以上下左右四个方向之一移动一格,不能进入障碍。计算:在空地中随机选择起点和终点(可以重合,此时最短耗时为0),从起点移动到终点最短耗时的平均值。 每一行每一列至多有1个障碍,并且障碍不在对角线方向相邻。以下矩阵是不合法的: Solution 先计算出两两点的曼哈顿距离,这个可以把x,y

1176

【JZOJ 5241】【GDOI2018模拟8.8】苹果和雪梨

Description作为新开的水果连锁店店员,你需要把总部发给你的苹果和雪梨分组出售,从而获得最 大利润。 总部发给你的水果包括: n 个苹果,质量分别为a1,a2…an n 个雪梨,质量分别为b1,b2…bn。 你卖的是盒装水果,一盒水果包括一个苹果和一个雪梨,苹果的质量乘上雪梨的质量就 是这盒水果的价钱。把苹果雪梨配对分成总共n 盒水果后,你要把价格最高的一盒返还给 水果店总部,

1124

【JZOJ 4788】序列

Solution把题目抽象一下,就变成了求序列中,每个点可以上升4,要使下降的总和最小, 首先,每个点可以上升多次!!! 当一个区间整体上升的时候,影响的就只有开头和结尾,如果要使答案减小,就要符合: ai−1−ai>aj+4−aj+1a_{i-1}-a_i>a_j+4-a_{j+1} 于是我们可以贪心的做,用did_i表示不等式后面的值等于i的位置有多少个, 每次直

1119

【51NOD 1622】【51NOD 算法马拉松19】集合对

Description 定义集合xor操作 A xor B=A∪B-A∩B。 问有多少对(P,Q)满足 P∈A Q∈B 使得 (P xor A)xor(Q xor B)=A xor B其中P Q都是集合。 答案对1e9+7取模。例如:A ={1} ,B={1,2},A xor B = {2},枚举所有情况P Q有2种。Solution我们把两个集合想象成0,1的二进制状态, 首先这两个数值不存在

1083

【JZOJ 4939】平均值

DescriptionSolution首先了,除才逆元的情况下显然是可以合并的, 所以,当一个区间的mexmex值没有变化时,就可以吧mex值相同的r−l+1r-l+1一起结算, 设nxinx_i表示下一个与aia_i相同的数的位置,mximx_i表示mex(l,i)mex(l,i),l为枚举的左端点, 我们先枚举一个l为左端点, 那么现在,我需要吧l往右移一位,那么会对ll~(nxl−1)

1012

【JZOJ 4922】环

Description 小A有一个环,环上有n个正整数。他有特殊的能力,能将环切成k段,每段包含一个或者多个数字。对于一个切分方案,小A将以如下方式计算优美程度: 首先对于每一段,求出他们的数字和。然后对于每段的和,求出他们的最大公约数,即为优美程度。 他想通过合理地使用他的特殊能力,使得切分方案的优美程度最大。Solution设:sum=∑aisum=\sum a_i 很显然,最后的每个答案一

997

【BZOJ 2144】【JZOJ 4701】Throw

Description 抽象题意:有3个点在数轴上移动,每次移动可以把a点绕b转到a’,并且符合a~a’中无它点。 Solution 把3个点的位置用一个3元组来表示,(x,y,z) ,满足x<y<zx<y<z, (x,y,z)每轮的旋转有以下几种情况: 设l=y−x,r−z−yl=y-x,r-z-y 从里到外: (x,y,z)~(x−l,y−l,z)(x-l, y-l, z), (x,

967
上一篇: _debug_log
下一篇: 【JZOJ 5894】【NOIP2018模拟10.5】同余方程
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值