8.14NOIP模拟

本文详细解析了四道算法与技术难题:教主的花园、教主泡嫦娥、保镖排队和教主的别墅。通过具体实例,深入探讨了解决策略和优化方法,包括使用二分查找、状态转移方程、树形DP和前缀和等技术手段。文中还分享了做题过程中的常见陷阱和避免方法,旨在提升读者的算法理解和实战能力。

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

首先,我必须承认自己之前犯的一个脑残错误——把8.13达成了10.13还好改过来了

第一题:教主的花园

分析:坐标的绝对值为10^8,询问个数m<100000。这很明显暴力会超时。分析题目发现有三种可能性——1:入口横坐标在两点横坐标中间,这样显然是最优的,我们不需要绕去入口再走回来。2:入口横坐标在两点横坐标之外3、不需要经过入口那么我们明显需要找到相距各点的最近一个入口作为入口进行比较。我们如何在这两个情况最快的寻找到符合的点呢?很明显——二分查找。这样我们就能在每次log n的速度完成查找。

第二题:教主泡嫦娥

分析:这题很明显可以拿到部分分,设f[i,1]为走到i状态上升的最小代价,设f[i,2]为走到i状态为下降的最小代价。枚举开头。n^2由于使用较大的存储类型以及常数,会TLE。这时我们可以将起点看为一次免费的切换状态的机会加多一维,f[i,j,k]k表示是否使用了这次免费的切换机会。这样的就可以不用枚举起点。将o(n^2)装换为o(n)状态转移就是取最小的前一点不同的状态+变换状态的费用+走过消耗的体力。

第三题:保镖排队

分析:根据保镖上司下属关系,我们可以检出一棵树,每一节点都必须在仅有的节点后,我们根据这个关系,可以建出一棵二叉树。用树形dp求出每一个节点可能的全排列情况,左子树有s1个节点右子树有s2个节点,那么排列方式即为组合数(s1+s2,s1)。再乘下各子树的排列方式取mod即为当前节点为根的子树的排列方式。

第四题:教主的别墅

分析:我们可以将男仆当成-1女仆为1 计算前缀和。将整个序列的差平均分配至m组(注意需要向上取整),我们就枚举不断寻找满足当前一组差为平均分配的差,以及后面的数依旧能满足平均分配值相同的这一条件。


做题现场重现一下

第一题第三种情况我忘记在加上纵坐标的差。觉得需要二分的情况更容易错,就多拍了另外两种的情况,第三种情况拍的不较少。。就两组(但都过了。。。。。。)所以拍的时候每种情况都要顾及到

第二题很正常,拿到了相应的分数,其实当时可以卡下时,说不定可以过了。。。这是一种做题策略,与其超时还不如水一水。

第三题的话我没有做。。。第四题水了一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值