NOIP 模拟赛:2024-11-18

福利场。

T1:

题意:n×n 棋盘放 k 个主教。问多少个格子被攻击了。

对每个从对角线维护 dp[i] 表示这条对角线有多少个不被攻击。可以从两边往递推。

T2:

题意:两人博弈。给定矩阵,先手每次挑一行删掉,后手每次挑一列删掉。先手想最大化最后的数,后手想最小化最后的数。问最后的数是多少。

行最小值的最大值。

T3:

n105

因为 n<217=131072,所以我们可以使用 131072,262144 保证不重复。

显然度数为偶数的没用,然后令 now= 剩余被固定的与 n 的异或值。记剩余未被固定的数个数为 cnt

当前目标:构造 cnt 个数是它们异或为 now

  1. cnt=0,若 now0 无解,否则直接输出。

  2. cnt=1,若 now 被用过了误解,否则让这个未被固定的等于 now,输出。

  3. cnt=2,若 now=0 无解,否则让一个的 20216 部分 =now,输出。

  4. cnt>2。若 cnt 为偶数,每个未固定的都先加上 131072;若 cnt 为奇数,第一个加上 131072+262144,第二个加上 262144,之后都加上 131072

然后使第二个到最后一个的低位部分随便选(例如选 1sz)。记这堆随便选的数的异或和为 sum。然后让第一个的低位部分等于 sumnow 即可。

坑点:正整数。

T4:

注意到修改的位置只可能是某类数的第一个,且只会改成已有的数。

分类:若改成前面已有的数,可以用 set 简单维护最大贡献;若改成后面已有的数,用两颗线段树维护 a[i],>a[i] 的两种贡献,和 a[i] 无关的贡献都丢到线段树上统计,在两颗线段树上区间查询即可。

posted @   FLY_lai  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示