2023年多校联训NOIP层测试5
没兴趣打这场模拟赛,随随便便打了 \(10\) 分钟,就去干别的了(事确实挺多的)。
集训期间模拟赛多,就我来说,还是要多总结,没必要一味的打(纯属我个人观点)。
T1 糖果(水了 \(10\) 分)
题目
思路
可以发现,如果答案是 YES
,那么一定有一种方案只分为两段或三段(更多的段可以采用合并的方式消
除),于是分别判断。
两段只需判断所有数异或和是否为 \(0\),三段只要枚举一个前缀,判断有没有异或和与这个前缀相等的后
缀,在判断一下这个异或和是否等于所有数的异或和(目的是确保中间的一段也相等)。
T2 魔法仪式(没做)
题目
思路
考虑经典的分治解决区间数数题的做法,对于一个区间,取中点,计算左端点在中点左边且右端点在中
点右边的方案数,之后递归分治,即可求得答案。
考虑枚举中点后怎么计算,分开考虑最大值在左边和在右边的情况,以在左边的情况为例,从中点向左
枚举左端点,不断维护右端点的可选范围(只需要保证最大值在左边),同时维护数组 \(num[k]\) 表示当前
从中点到右边余数为 \(k\) 的方案数,这样对于每个左端点,只要在 \(num\) 中查询对应的值。
T3 独特的数组(没做)
题目
思路
首先十进制和十六进制本质上是相同的,经过妥善处理后可以同时实现。
对于 \(0\) 操作,用 \(ans[r]-ans[l-1]\) 求得。考虑数位状压dp,\(f[i][j]\) 表示考虑到前i位,当前选择数字的状态是 \(j\) 的
方案数。对于前面的值小于限制的情况,后面的数字可以随便选,是一个组合数,对于恰好等于限制的
情况,枚举这一位填什么递归下去,使用一种记忆化搜索的方式实现。另外还要注意不能有前导0。
对于1操作,只要在 \(0\) 操作上加一个二分就可以啦。
T4 约会(水了 \(5\) 分)
题目
思路
求出每个点到起点和终点的距离,二分答案 \(w\),\(将到起点+终点距离 \le a+w\) 的点标记为好的。
如果一条边 \((u,v)\) 中 \(u\) 是好的,且 \(这条边长度+v到终点距离 \le w\),将v和这条边标记成好的,然后考虑所有好的
边,如果这个图有环则合法,否则如果 \(在图中停留时间长度 \ge b\) 合法,否则不合法。
求图中停留时间长度:\(latest[i]\) 表示在 \(i\) 点时的最长停留时间长度,初始时 \(latest[i]=a+w-到终点距离\),然
后在新图中dp即可,\(latest[v]=max(latest[v],latest[u]+len)\)。 处理在家停留情况,需要在原图中加一条
从 \(1\) 到 \(1\) 长度为 \(0\) 的边。
结语
失败不是什么丢人的事情,失败的一沓糊涂才是。 ————波波