CTT2022 游记
OI 生涯的最后一场比赛。
Day -?
给深中壬讲题,他们好像自闭了。
Day -2
跟 pb 汇合,约了 zzh 和他父母一起吃饭,然后全程就是教练和他父母聊(
晚上到了酒店,开始摸鱼。
Day -1
室友在上预科课,我在摸鱼。
下午又去做了核酸检测,回来的时候跟着 ___ ___ ___ ___ 一起,感觉很厉害(
Day 0
室友在上预科课,我在摸鱼。
下午听 dzd 讲话。
Day 1
rk30,摆大烂了。
D1T1 末日的魔法少女计划
给定正整数 \(n,k\),构造 \((n+1)\times(n+1)\) 的 \(01\) 矩阵 \(A\)(行列编号为 \(0\sim n\)),使得
- \(\forall i\in[0,n]\),\(A_{i,i}=1\);
- \(\forall i\in[0,n-1]\),\(A_{i,i+1}=1\);
- \(\forall i,j\in[0,n]\),\(A_{i,j}=1\implies i\le j\);
- \(\forall i,j\in[0,n]\),\(A_{i,j}=1\land j-i>1\implies\exists i<t<j,A_{i,t}=A_{t,j}=1\);
- \(\forall i,j\in[0,n]\),\(i\le j\implies (A^k)_{i,j}>0\)。
设 \(m=\sum_{i=0}^n\sum_{j=i+2}^nA_{i,j}\),你需要使得 \(m\) 尽量小。
对于所有数据,\(1900\le n\le 2000\),\(2\le k\le 15\)。
本题共 \(14\) 个子任务,分别对应 \(k=2\sim 15\) 的情况,获得 \(s(k)\cdot\max(0,1-\sqrt{\max(0,\frac m{n\cdot f(k)}-1)})\) 分。
\(k\) | \(2\) | \(3\) | \(4\) | \(5\) | \(6\) | \(7\) | \(8\) | \(9\) | \(10\) | \(11\) | \(12\) | \(13\) | \(14\) | \(15\) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
\(s(k)\) | \(22\) | \(14\) | \(11\) | \(9\) | \(7\) | \(6\) | \(5\) | \(5\) | \(4\) | \(4\) | \(4\) | \(3\) | \(3\) | \(3\) |
\(f(k)\) | \(7.9870\) | \(3.8085\) | \(2.3960\) | \(1.9610\) | \(1.6065\) | \(1.4515\) | \(1.2540\) | \(1.1980\) | \(1.0995\) | \(1.0705\) | \(1.0345\) | \(1.0120\) | \(1.0015\) | \(0.9940\) |
D1T2 魔塔OL
魔塔一共有 \(n\) 层,魔塔中每个怪物的等级 \(\le m\),难度 \(\le k\)。
初始时魔塔中没有怪物,接下来进行 \(Q\) 次操作:
- \(1\ x\ y\ z\ a\ b\):表示在魔塔的第 \(x\) 层加入一个等级为 \(y\) 难度为 \(z\) 的怪物,打败该怪物需要耗费 \(a\) 血量,打败后将回复 \(b\) 血量;
- \(2\ x\):表示将第 \(x\) 次 \(1\) 操作加入的怪物从魔塔中永久移除,保证操作合法;
- \(3\ x\ y\ z\):表示玩家要将魔塔前 \(x\) 层中所有等级 \(\le y\) ,难度 \(\le z\) 的怪物按照任意顺序杀死,中途血量不能小于 \(0\),询问在最优击杀顺序下初始血量最少是多少?
对于所有数据,\(n,m,k\le 10^4\),三种操作分别 \(\le 5\cdot 10^4\) 个,\(0\le a,b\le 10^9\)。
- \(\text{Subtask }1\ (5\%)\):\(Q\le 10\);
- \(\text{Subtask }2\ (5\%)\):\(Q\le 5000\),依赖 \(\text{Subtask }1\);
- \(\text{Subtask }3\ (10\%)\):\(k=1\),\(b=0\);
- \(\text{Subtask }4\ (17\%)\):\(n,m,k\le 5\);
- \(\text{Subtask }5\ (30\%)\):\(m=k=1\);
- \(\text{Subtask }6\ (33\%)\):无特殊限制,依赖 \(\text{Subtask }2,3,4,5\)。
D1T3 基因编辑
给定正整数 \(n,L,R,a_1,\cdots,a_n\),在所有满足 \(l<L\),\(R<r\) 且 \(\forall l'<r'\),\(a_{l'}=a_l\land a_{r'}=a_r\implies l'=l\land r'=r\) 的数对 \((l,r)\) 中,求 \(r-l+1\) 的最小值。
对于所有数据,\(L\le R\le n\le 10^6\),\(a_i\le 10^6\)。
- \(\text{Subtask }1\ (5\%)\):\(n,a_i\le 10^3\);
- \(\text{Subtask }2\ (10\%)\):\(n\le 10^3\),依赖 \(\text{Subtask }1\);
- \(\text{Subtask }3\ (25\%)\):\(a_i\le 10^3\),依赖 \(\text{Subtask }1\);
- \(\text{Subtask }4\ (30\%)\):\(a_1,\cdots,a_{L-1}\) 互不相同,\(a_{R+1},\cdots,a_n\) 互不相同;
- \(\text{Subtask }5\ (30\%)\):无特殊限制,依赖 \(\text{Subtask }2,3,4\)。
心路历程
上来对着 T1 自闭了好久,只会个 \(26\) 分。
然后去看 T3,暴力堆着堆着发现做完了。
然后去看 T2,暴力堆着堆着然后弃疗了。
题解
你只要知道 T1 是 lxl 题,就要把它看成区间半群查询(所有区间都是左闭右开的),\(k=2\) 分治,\(k>2\) 分块。
T2 是 Claris 题,bitset + 四毛子,复杂度 \(O(nQ/\log n)\)。
T3 是 sb 题,充要条件是 \(a_l\) 只在 \(l\) 和 \(>r\) 的位置出现,且 \(a_r\) 只在 \(r\) 和 \(<l\) 的位置,我的做法是枚举 \(r\) 然后倍增搞搞。
Day 2
两天 rk33,摆大烂了。
D2T1 简单数据结构
给定长为 \(n\) 的正整数序列 \(\{a_i\}\),\(Q\) 次操作:
- \(1\ v\):\(\forall i\in[1,n]\),\(a_i:=\min(a_i,v)\);
- \(2\):\(\forall i\in[1,n]\),\(a_i:=a_i+i\);
- \(3\ l\ r\):求 \(\sum_{i=l}^r a_i\)。
对于所有数据,\(n,q\le 2\cdot 10^5\),\(a_i\le 10^{12}\)。
- \(\text{Subtask }1\ (10\%)\):\(n,q\le 5000\);
- \(\text{Subtask }2\ (20\%)\):数据随机生成;
- \(\text{Subtask }3\ (15\%)\):没有第二种操作;
- \(\text{Subtask }4\ (55\%)\):无特殊限制,依赖 \(\text{Subtask }1,2,3\);
D2T2 Datalab
这是一道交互题
定义 \(n=2^{13}\),交互器有 \(n\) 个整数 \(s_0,s_1,\cdots,s_{n-1}\),保证 \(s_i\in\{-1,1\}\),\(s_{n-1}=1\),\(s_{n-2}=-1\)。
一台计算机用长为 \(n\) 的 \(\texttt{01}\) 串 \(a\) 表示整数 \(f(a)=\sum_{i=0}^{n-1}s_ia_i2^i\),设其能表示的整数的最小/大值为 \(L,R\),可以证明 \(f\) 是 \(\{\texttt{0,1}\}^n\) 到 \([L,R]\) 的双射,设其反函数为 \(g\)。
你每次可以询问两个长为 \(n\) 的 \(\texttt{01}\) 串 \(a,b\),交互器告诉你 \(g((f(a)+f(b)-L)\bmod 2^n+L)\)。
- \(\text{Subtask }1\ (10\%)\):你可以询问 \(8200\) 次;
- \(\text{Subtask }2\ (15\%)\):你可以询问 \(5550\) 次;
- \(\text{Subtask }3\ (75\%)\):评分参数是个反比例函数,但我不记得了。
D2T3 随机游走
给定正整数 \(n,m\) 和质数 \(p\),\(n\) 个点的有向图,初始时 \(i\to i+1\),你需要加 \(m\) 条边(允许重边和自环),求从 \(1\) 开始随机游走到 \(n\) 的最大期望步数 \(\bmod p\)。\(T\) 组数据。
\(T\le 3\cdot 10^5\),\(n,m\le 10^{18}\),\(3\le p<10^9\)。
部分分不记得了。
- \(\text{Subtask }1\ (10\%)\):
- \(\text{Subtask }2\ (10\%)\):
- \(\text{Subtask }3\ (20\%)\):
- \(\text{Subtask }4\ (20\%)\):
- \(\text{Subtask }5\ (10\%)\):
- \(\text{Subtask }6\ (30\%)\):无特殊限制。
Day 2.5
今天是社会活动日。
上午 7 点要求集合,比平时还早 /jy
结果一看是要晨跑,zjr 推着轮椅跟着滑了一圈 /mgx
麦当劳早餐不太行,牛奶味道好淡啊 /yiw
然后听了个神必讲座,然后又是讲大学生活。
吃完午饭之后上了个嘤语课,讲了个老男人 PUA 小女孩的故事,我直呼内行。
然后又是讲大学生活。
下午坐车跑了 \(20\text{ km}\) 就为了去参观一个地方可还行,晚饭跟星火的同学一起吃所以我跟 cxr 和 fsy 打了个车跑了 \(20\text{ km}\) 又回来了,我直呼内行。
晚上吃饭的时候 pb 还在写作业,好卷啊 /jy
Day 3
三天 rk33,摆大烂了。
D3T1 小明的树
给定 \(n\) 个点的树和 \(2\sim n\) 的排列 \(a_1,\cdots,a_{n-1}\)。初始时有 \(cnt=0\),每个点都未点亮。按排列 \(a\) 的顺序依次点亮,若某个时刻每个被点亮的点的子树均被点亮,则令 \(cnt\) 加上被点亮的点的连通块个数,求操作结束后 \(cnt\) 的值。之后 \(m\) 次删一条边再加一条边,同样求答案。
对于所有数据,\(n,m\le 5\cdot 10^5\)。
- \(\text{Subtask }1\ (10\%)\):\(n,m\le 8000\);
- \(\text{Subtask }2\ (20\%)\):\(m=0\);
- \(\text{Subtask }3\ (70\%)\):无特殊限制,依赖 \(\text{Subtask }1,2\)。
D3T2 出题高手
给定长为 \(n\) 的整数序列 \(a_i\),\(m\) 次询问 \(L,R\),求 \(\max\{(\sum_{i=l}^ra_i)^2/(r-l+1):L\le l\le r\le R\}\) 的分数表示。
对于所有数据,\(a_i\) 是 \([-1000,1001]\) 的随机整数。
- \(\text{Subtask }1\ (5\%)\):\(n,m=500\);
- \(\text{Subtask }2\ (15\%)\):\(n=10^5\),\(m=1\);
- \(\text{Subtask }3\ (30\%)\):\(n=5\cdot 10^5\),\(m=1\);
- \(\text{Subtask }4\ (15\%)\):不记得了;
- \(\text{Subtask }5\ (35\%)\):\(n=10^5\),\(m=3\cdot 10^5\)。
D3T3 扑克比大小
给定长为 \(n\) 的小写字符串 \(S\),\(q\) 次询问子串 \(t\),求有多少个本质不同的子串 \(s\) 使得 \(s^\infty<t^\infty\)。
对于所有数据,\(n,q\le 5\cdot 10^5\)。
- \(\text{Subtask }1\ (3\%)\):
- \(\text{Subtask }2\ (3\%)\):
- \(\text{Subtask }3\ (4\%)\):
- \(\text{Subtask }4\ (5\%)\):
- \(\text{Subtask }5\ (?\%)\):
- \(\text{Subtask }6\ (?\%)\):
- \(\text{Subtask }7\ (?\%)\):
- \(\text{Subtask }8\ (?\%)\):
- \(\text{Subtask }9\ (?\%)\):无特殊限制。
Day 4
四天 rk34,摆大烂了。
真的退役了诶(
D4T1 算术
【模板】阶
子任务编号 | \(T\le\) | \(p\le\) | 分值 |
---|---|---|---|
\(1\) | \(10\) | \(3\) | \(5\) |
\(2\) | \(10\) | \(10\) | \(5\) |
\(3\) | \(10^2\) | \(10^2\) | \(5\) |
\(4\) | \(10^2\) | \(10^4\) | \(11\) |
\(5\) | \(10^2\) | \(10^6\) | \(11\) |
\(6\) | \(10^3\) | \(10^8\) | \(11\) |
\(7\) | \(10^3\) | \(10^{10}\) | \(11\) |
\(8\) | \(10^3\) | \(10^{12}\) | \(7\) |
\(9\) | \(10^4\) | \(10^{14}\) | \(17\) |
\(10\) | \(10^5\) | \(10^{15}\) | \(17\) |
D4T2 经典游戏
给定 \(n\) 个点的有根树,初始时点 \(i\) 有 \(a_i\) 个石子,两人轮流选择一个石子,将其放到子树内另一个点的位置,不能操作者输。
\(m\) 次询问 \(x,y\),令 \(a_x:=a_x+1\)(不还原),求 \(y\) 及其相邻点中有多少个 \(r\) 满足以 \(r\) 为根时,后手无论如何在任意一个点加上一个石子(还原),先手都获胜。
对于所有数据,\(n,m\le 5\cdot 10^5\)。
- \(\text{Subtask }1\ (16\%)\):
- \(\text{Subtask }2\ (15\%)\):
- \(\text{Subtask }3\ (14\%)\):\(n,m\le 5000\),依赖 \(\text{Subtask }1,2\)。
- \(\text{Subtask }4\ (13\%)\):\(n,m\le 10^5\),链;
- \(\text{Subtask }5\ (12\%)\):\(n,m\le 10^5\),菊花;
- \(\text{Subtask }6\ (11\%)\):\(n,m\le 10^5\),所有 \(y\) 相等;
- \(\text{Subtask }7\ (10\%)\):\(n,m\le 10^5\),依赖 \(\text{Subtask }4,5,6\)。
- \(\text{Subtask }8\ (9\%)\):无特殊限制,依赖 \(\text{Subtask }3,7\)。
D4T3 随机数据
给定 \(n\) 件物品和正整数 \(k,d\),物品 \(i\) 的价值为 \(v_i=w_{i\bmod k}\)。
两人轮流取物品,先手可以任意取,设取了物品 \(i\),则后手只能取物品 \((i-d)\bmod n\) 或 \((i+d)\bmod n\) 或跳过本轮操作,已经被取或不可用的物品不能取。
\(q\) 次询问,改变某个物品的可用状态,求两人都尽可能使取得物品价值之和尽量大的情况下,后手取的物品价值之和。
\(n\le 10^{18}\),\(k\le 5\cdot 10^4\),\(w_i\) 的范围不记得了 /yun。
- \(\text{Subtask }1\ (5\%)\):\(n\le 20\),\(q=1\);
- \(\text{Subtask }2\ (10\%)\):\(n\le 10^5\),\(q=1\),依赖 \(\text{Subtask }1\);
- \(\text{Subtask }3\ (15\%)\):\(n,q\le 10^5\);
- \(\text{Subtask }4\ (30\%)\):\(q=1\),依赖 \(\text{Subtask }2\);
- \(\text{Subtask }5\ (40\%)\):无特殊限制,依赖 \(\text{Subtask }3,4\)。