NOIP2017模拟赛总结(2017.11.6-2017.11.7)

本文精选了算法竞赛中的经典题目,包括回文图涂色方案、树形DP分割方法及最短路径问题,涵盖递归、贪心、树形DP、LCA等多种算法技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2017.11.6 Problem A
题目大意:nnn个人围成一个环,编号为111 ~ nnn,从111号开始从111报数,每次报到mmm时,报111 ~ m−1m-1m1的人出列,下一个人继续报111,问最后留下的人的编号。保证m−1∣n−1m-1|n-1m1n1
做法: 本题需要用到递归。
nnn个人进行这个游戏的话,如果就这样顺着报下去,那么剩下的就只有编号为mmm的倍数的人和最后n%mn\%mn%m个人,相当于把后n%mn\%mn%m个人移到前面,然后做一个⌊n/m⌋+n%m\lfloor n/m\rfloor+n\%mn/m+n%m个人的子问题,递归求解即可,时间复杂度约为O(log⁡mn)O(\log_m n)O(logmn)

2017.11.6 Problem B
题目大意: 对一个111~nnn的排列AAA进行一种排序,步骤是每次枚举数对(i,i+X)(i,i+X)(i,i+X),如果Ai>Ai+XA_i>A_{i+X}Ai>Ai+X则交换这两个数,直到没有满足要求的数对为止。问有多少种XXX能使这个排列最后能排成升序,并求出这些XXXn≤500000n\le 500000n500000
做法: 本题需要用到问题转化+gcd。
注意到,AiA_iAi能排到原来位置的充要条件是i≡Ai(mod  X)i\equiv A_i(\mod X)iAi(modX),这意味着XXX∣i−Ai∣|i-A_i|iAi的因数,因为要满足所有这样的条件,那么我们求所有∣i−Ai∣|i-A_i|iAi的最大公因数,那么可行的XXX就是这个最大公因数的所有因数。时间复杂度为O(nlog⁡n)O(n\log n)O(nlogn)

2017.11.6 Problem C
题目大意: 一个国家有若干个城市坐落在数轴的非负整数点上,首都为000,每个城市有一个车站,有nnn列火车从首都开出,并到达一个目标城市SiS_iSi,中间任意车站都可以停靠,而每列火车都有一个能容纳乘客的量CiC_iCi。有mmm个乘客要乘车,第iii个乘客要在LiL_iLi站上车,在RiR_iRi站下车,问在不超过火车容量限制的情况下,最多能满足多少名乘客的乘车需求。
做法: 本题需要用到贪心,然而我并不太会,原题应该是CQOI2016的。

2017.11.7 Problem A
题目大意: 在一个n×nn\times nn×n的透明玻璃片上的每一个1×11\times 11×1的小格涂上颜色,如果一个涂色方案使得这个玻璃片无论如何旋转、翻转,看起来都和原来一样,那么这个图被称作回文图,而现在有mmm个小格已经被涂上了颜色,颜色共有kkk种,问有多少种涂成回文图的涂色方案。
做法: 本题需要用到置换映射+组合计数+快速幂。
仔细分析一下,一个格子(x,y)(x,y)(x,y)(坐标值均为000~n−1n-1n1之间的数),无论经过多少次旋转、翻转操作,最后转移到的点的坐标只有888个:(x,y)(x,y)(x,y),(n−1−x,y)(n-1-x,y)(n1x,y),(x,n−1−y)(x,n-1-y)(x,n1y),(n−1−x,n−1−y)(n-1-x,n-1-y)(n1x,n1y),(y,x)(y,x)(y,x),(n−1−y,x)(n-1-y,x)(n1y,x),(y,n−1−x)(y,n-1-x)(y,n1x),(n−1−y,n−1−x)(n-1-y,n-1-x)(n1y,n1x)。可以证明这888个坐标经过旋转、翻转之后仍然在这888个坐标之内,那么我们把这样的888个坐标的集合体叫做等价类,根据回文图的定义可知,同一个等价类内的格子只能涂同一种颜色。那么问题转化为求有多少个等价类可以随便涂色,因为已经有mmm个格子已经被涂上颜色了,那么这些格子所属的等价类也相当于被涂上颜色了,O(m2)O(m^2)O(m2)判定一下这mmm个格子的限制使得多少等价类受到限制即可。n×nn\times nn×n方阵中总的等价类数应该为⌊n+12⌋(⌊n+12⌋+1)2\frac{\lfloor \frac{n+1}{2}\rfloor(\lfloor \frac{n+1}{2}\rfloor+1)}{2}22n+1(2n+1+1)(这个自己想想应该就能明白了吧),用这个数减去受限制的等价类数就是能任意涂色的等价类数了,令这个数为ppp,那么答案显然为kpk^pkp,用快速幂求出即可,时间复杂度为O(m2+log⁡n2)O(m^2+\log n^2)O(m2+logn2)

2017.11.7 Problem B
题目大意: 一棵树有nnn个点,每个点可能是白色或黑色,问有多少种分割方法,使得分割后的每个连通块内有且仅有一个黑色点。
做法: 本题需要用到树形DP。
f(i)f(i)f(i)为在以iii为根的子树中切割,使得iii所在的连通块内不含黑色点,其余连通块都含一个黑色点的切割方案数,g(i)g(i)g(i)为在以iii为根的子树中切割,使得每个连通块内都含且仅含一个黑色点的切割方案数,那么有状态转移方程(下列jjj表示iii的所有儿子):
如果点iii为黑色点:
f(i)=0f(i)=0f(i)=0
g(i)=∏j(f(j)+g(j))g(i)=\prod_j(f(j)+g(j))g(i)=j(f(j)+g(j))
其中g(i)g(i)g(i)的式子可理解为,对于iii的每一个儿子,要么选择连接iii与这个儿子的边,这样的话方案数为f(j)f(j)f(j),要么选择断开iii与这个儿子的边,这样的话方案数为g(j)g(j)g(j)
如果点iii为白色点:
f(i)=∏j(f(j)+g(j))f(i)=\prod_j(f(j)+g(j))f(i)=j(f(j)+g(j))
g(i)=∑jg(j)∏son≠j(f(k)+g(k))g(i)=\sum_jg(j)\prod_{son\ne j}(f(k)+g(k))g(i)=jg(j)son=j(f(k)+g(k))
其中g(i)g(i)g(i)的式子也可写成g(i)=∑jf(i)f(j)+g(j)g(j)g(i)=\sum_j\frac{f(i)}{f(j)+g(j)}g(j)g(i)=jf(j)+g(j)f(i)g(j),用逆元算出,然而也可以直接算上面的式子,具体计算方法见代码。
那么最后的答案显然为g(root)g(root)g(root),总的时间复杂度为O(n)O(n)O(n)(用逆元的话会退化到O(nlog⁡n)O(n\log n)O(nlogn))。

2017.11.7 Problem C
题目大意: 一个nnn个点mmm条边带边权的无向连通图,qqq个询问,每次询问两点之间的最短路径长度。有444类数据:1.n≤1000,n−1≤m≤1200n\le 1000,n-1\le m\le 1200n1000,n1m1200。2.m=n−1m=n-1m=n1。3.m=nm=nm=n。4.m>nm>nm>n,每条边最多在一个环上。
做法: 本题主要用到LCA。
对于第一类数据,暴力跑nnn遍SPFA即可,时间复杂度约为O(nm)O(nm)O(nm)
对于第二类数据,所给图为一棵树,根据dis(a,b)=dis(root,a)+dis(root,b)−2dis(root,lca(a,b))dis(a,b)=dis(root,a)+dis(root,b)-2dis(root,lca(a,b))dis(a,b)=dis(root,a)+dis(root,b)2dis(root,lca(a,b)),在线倍增或离线Tarjan求出LCA即可,时间复杂度为O((n+q)log⁡n)O((n+q)\log n)O((n+q)logn)O(n+q)O(n+q)O(n+q)
对于第三类数据,所给图为一棵环套树,那么我们可以先找环,然后如果a,ba,ba,b在同一棵外向树中,直接按照第二类求即可,否则找到它们所在外向树的根,它们之间路径的最短路就是它们各自到外向树根的距离之和+这两个根在环上的最短路。时间复杂度为O((n+q)log⁡n)O((n+q)\log n)O((n+q)logn)O(n+q)O(n+q)O(n+q)
对于第四类数据,所给图为一个仙人掌,然而我不会圆方树之类的奇妙数据结构,故不会做,原题应为BZOJ2125。

内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制题,特别是在存在输入约束和系统动力学的情况下;②解决带有参不确定性的线性和非线性系统的跟踪控制题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值