NOIP2019(提高组)正式赛.docx

上传人:王** 文档编号:894999 上传时间:2024-02-22 格式:DOCX 页数:18 大小:39.56KB
下载 相关 举报
NOIP2019(提高组)正式赛.docx_第1页
第1页 / 共18页
NOIP2019(提高组)正式赛.docx_第2页
第2页 / 共18页
NOIP2019(提高组)正式赛.docx_第3页
第3页 / 共18页
NOIP2019(提高组)正式赛.docx_第4页
第4页 / 共18页
NOIP2019(提高组)正式赛.docx_第5页
第5页 / 共18页
NOIP2019(提高组)正式赛.docx_第6页
第6页 / 共18页
NOIP2019(提高组)正式赛.docx_第7页
第7页 / 共18页
NOIP2019(提高组)正式赛.docx_第8页
第8页 / 共18页
NOIP2019(提高组)正式赛.docx_第9页
第9页 / 共18页
NOIP2019(提高组)正式赛.docx_第10页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《NOIP2019(提高组)正式赛.docx》由会员分享,可在线阅读,更多相关《NOIP2019(提高组)正式赛.docx(18页珍藏版)》请在优知文库上搜索。

1、NOIP2019提高组正式赛dayl【题目背景】本题中合法括号串的定义如下:1 .()是合法括号串。2 .如果A是合法括号串,则(八)是合法括号串。3 .如果A,B是合法括号串,则AB是合法括号串。本题中于串与不同的子串的定义如下:1 .字符串S的子串是S中连续的任意个字符组成的字符串。S的子串可用起始位置,与终止位置厂来表示,记为S(,r)(lrS,ISI表示S的长度)。2 .S的两个子串视作不同当且仅当它们在S中的位置不同,即,不同或r不同。Description【题目描述】一个大小为n的树包含个结点和/1-1条边,每条边连接两个结点,且任意两个结点间有且仅有条简单路径互相可达。小Q是一个

2、充满好奇心的小朋友,有一天他在上学的路上碰见了一个大小为“的树,树上结点从编号,1号结点为树的根。除1号结点外,每个结点有一个父亲结点,u(2u/1)号结点的父亲为4(lLu)号结点小Q发现这个树的每个结点上修有一个括号,可能是或小Q定义Si为:将根结点到i号结点的简单路径上的括号,按结点经过顺序依次排列组成的字符串。显然Si是个括号串,但不一定是合法括号串,因此现在小Q想对所有的/(ln)求出,舟中有多少个互不相同的子串是合法括号串。这个问题难倒了小Q,他只好向你求助。设Sj共有自个不同子串是合法括号串,你只需要告诉小Q所有iX将的异或和,即:(IXA)xor(26)xor(323)xorx

3、or(nXkn)Input从文件brackets.in中读入数据。第一行一个整数,表示树的大小。第二行一个长为的由(与T组成的括号串,第i个括号表示i号结点上的括号。第三行包含n-l个整数,第i(1iV)个整数表示i+1号结点的父亲编号工+10Output输出到文件brackets.out中。仅一行一个整数表示答案。SampleInputSampleOutputDataConstraint测试点编号n特殊性质128fi=i-l34200572000810无1114IO5fi=i-l15-16无17-205IO5参考答案#include#include#include#defineIint#de

4、fineIllonglong#defineF(i,a,b)for(Ii=a;i=b;i)#definemem(afb)memset(afb,sizeof(a)#defineN1000010usingnamespacestd;InrxftN*2fnxN*2flNfaNftot;IsN20ffN20fdN*2fbzN;Ilans,gN;charch;voidadd(Ix,Iy)t+tot=y;nxtot=lxJx=tot;voidrd(I&x)x=0;ch=getchar();while(ch,9)ch=getchar();while(ch=,08tch=,9,)x=x*10+ch-,0ch=ge

5、tchar();)voiddfs(Ix,Iy)mem(bzf0);Ii=l,j=l;dl=l;bzl=l;while(i=j)x=di+;for(Ik=lx;k;k=nxk)if(!bztk)bztk=l;d+j=tk;ftkO=x;stkO=ax;atk+=ax;)voiddg(IxfIy)mem(bzf0);Ihe=l,ta=l;d1=l;bzl=1;while(heax)z=fzi;)if(afz0=ax)g+=gfz-gffz00+1;)for(Ik=lx;k;k=nxk)if(!bztk)bztk=l;d+ta=tk;gtk+=gx;)Imain()freopen(ubrackets

6、.in,f,r,fstdin);freopen(,brackets.out,f,w,istdout);rd(n);F(irlfn)ch=getchar();while(ch!=,),84ch!=,(,)ch=getchar();if(ch=1(,)ai=l;elseai=-l;)F(i,2,n)rd(x);add(xri);add(irx);)dfs(lfO);F(j,F,19)F(iflfn)fij=ffij-lj-l;sij=min(sij-lfsfij-lj-l);)dg(lfO);F(i,l,n)ansA=(i*gi);printf(,%lldn,fans);returnO;)Code

7、2#include#include#include#defineIint#defineIllonglong#defineF(i,a,b)for(Ii=a;i=b;i)#definemem(arb)memset(afb,sizeof(a)#defineN1000010usingnamespacestd;InfxN*2fnxN*2JNraNfsNftotffNfpJaN;Ilans,gN;charch;voidadd(Ix,Iy)t+tot=y;nxtot=lxJx=tot;voidrd(I&x)x=0;ch=getchar();while(ch,9)ch=getchar();while(ch=,

8、084ch=,9,)x=x*10+ch-,0,jch=getchar();)voiddg(IxfIy)sx=ax+sy;gx+=gy;if(ax=l)fx=x;elseP=fy;if(P)gx+=gfap-gfafap+1;fx=ffap;)ansA=(x*gx);for(Ik=lx;k;k=nxk)f(tk!=y)dg(tkfx);)Imain()freopen(,brackets.in,r,fstdin);freopen(,brackets.out,f,w,fstdout);rd(n);F(irlfn)ch=getchar();while(ch!=)8ich!=,(,)ch=getchar

9、();ai=ch=,(,71:-1;)F(if2fn)rd(x);fai=x;add(xri);add(i,x);dg(lfO);printf(,%lldn,fans);return0;2019提高组正式赛day2树的重心(centroid)Description小简单正在学习离散数学,今天的内容是图论基础,在课上他做了如下两条笔记:1 .一个大小为的树由个结点与-1条无向边构成,且满足任意两个结点间有且仅有一条简单路径。在树中删去一个结点及与它关联的边,树将分裂为若干个子树:而在树中删去一条边(保留关联结点,下同),树将分裂为恰好两个子树。2 .对于一个大小为的树与任意一个树中结点c,称C是

10、该树的重心当且仅当在树中删去C及与它关联的边后,分裂出的所有子树的大小均不超过玲(其中W是下取整函数)。对于包含至少一个结点的树,它的重心只可能有1或2个。课后老师给出了一个大小为的树S,树中结点从1编号。小简单的课后作业是求出S单独删去每条边后,分裂出的两个子树的重心编号和之和。即:Input从文件centroid.in中读入数据。本题输入包含多组测试数据。第一行一个整数T表示数据组数。接下来依次给出每组输入数据,对于每组数据:第一行一个整数表示树S的大小。接下来行,每行两个以空格分隔的整数%,片,表示树中的一条边(出,咽。Output输出到文件centroid.out中。共T行,每行一个整

11、数,第i行的整数表示:第i组数据给出的树单独删去每条边后,分裂出的两个子树的重心编号和之和。SampleInput1225312423524635778129131014113512361367SampleOutput132256DataConstraint【样例i解释】对于第一组数据:删去边(1,2), 删去边(2,3), 删去边(2,4), 删去边(3,5),1号点所在子树重心编号为1,2号点所在子树重心编号为2,3o2号点所在子树重心编号为2,3号点所在子树重心编号为3,5)o2号点所在子树重心编号为2,3,4号点所在子树重心编号为4)o3号点所在子树重心编号为2),5号点所在子树重心编

12、号为5o因此答案为l2+32+35+2+34+25=32oSolution测试点编号n=特殊性质1-27无3-51996819999-1149991A12-15262143B1699995无17-1819999519-20299995表中特殊性质一栏,两个变量的含义为存在一个1的排列A(ln),使得:z树的形态是一条链。即Vlivzn存在一条边(R,pi+)8:树的形态是一个完美二叉树。即Vl/吟,存在两条边(php2i)与(A,P2,+)o对于所有测试点:1T5,1%,y,zu保证给出的图是一个树。参考答案#include#include#include#include#include/#include/#include/#include/#include/#include/#include#defineopenjn(x)freopen(*x.in,f,r,rstdin)#defineopen_out(x)freopen(#x,.out,f,wfstdout)#defineopen_(x)freopen(x,.in,w,f

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 活动策划

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!