20231004
Problem
1.【2023.10.03提高模拟】密文板
题目大意:
- 给出一个由 ‘?’ , ‘(’ , ‘)’ 组成的字符串,其中 ‘?’ 可代表 ‘(’ 或 ‘)’ ,问将所有左右括号配对后最少剩余多少个括号未配对
比赛时:
- 很快想到正解,
但是代码打了很久。- 思路
O
(
n
)
O(n)
O(n):
- 把已知的左右括号尽量配对,用栈储存未配对的括号。
- 用尽可能右侧的问号与能配对的尽量右的左括号配对(右括号同理)
- 将两个问号两两配对,并统计所有尚未配对的括号数量
- 思路
O
(
n
)
O(n)
O(n):
2.【2023.10.03提高模拟】挑战NPCⅢ
题目大意:
- 给出一张 n 个点,m 条边的无向连通图,问是否存在一种方案使得这张图被 k ( k ≤ 3 k \le 3 k≤3)种颜色染色
比赛时:
- 打算拿完所有性质分: 1. k = 1 ∣ 2. k = 2 ∣ 3. k = 3 1.k = 1|2.k = 2 |3. k =3 1.k=1∣2.k=2∣3.k=3 且 m = n − 1 ∣ 4. k = 3 m = n-1|4.k=3 m=n−1∣4.k=3且 m = n m=n m=n
- 然后打了暴力+一些优化(
O
(
3
n
)
O(3^n)
O(3n))
这时已经AC - 接着又感觉想到了什么,又一通乱搞( O ( 9 n ) 至 O ( i n f ) O(9n) 至 O(inf) O(9n)至O(inf)->31pts)
别人的正解( O ( 6 9 n ) O(6^9n) O(69n)):
- 先建树,找出 t 条返祖边
- 枚举这些返祖边两边的颜色,然后判断合不合法
3.【2023.10.03提高模拟】escape from whk 3
题目大意:
- 定义两个数( a , b a,b a,b)是kuhu: a + b = 2 k ( k ∈ Z ) a+b=2^k(k \in Z) a+b=2k(k∈Z)
- 问:在 l 到 r 中最多能选多少个数放入集合A使得A中的元素没有两个数kuhu
比赛时:
- 无脑暴力走人(10pts)
正解:
看不懂
爆标做法:
%%zhy
- 若将所有 2 k 2^k 2k的数看做对称轴,可发现左右两侧的数都不可同时放进集合A
- 对于两个关于 x ( x ∣ x = 2 k , k ∈ Z ) x(x|x=2^k,k\in Z) x(x∣x=2k,k∈Z)对称的数显然选择较大的数更优
- 第一问:按照对称的性质不断从 r 翻折直到这个对称轴在 l 左侧,并统计中间的答案( O ( T l o g n ) O(Tlogn) O(Tlogn))
- 第二问:
- num=0:0
- num=1:和第一问差不多,不断累计( O ( n ) O(n) O(n))
4.【2023.10.03提高模拟】Scar笛卡尔树
题目大意
- 有一个由1~n组成的序列,将其中 ≤ k \le k ≤k的数取出造一个笛卡尔树,问对于每个 k ∈ [ 1 , n ] k\in [1,n] k∈[1,n]对应的笛卡尔树的每个子树的大小之和。
比赛时:
- 先打一个暴力,最后几分钟想到思路,却没时间做。
思路:
- 倒着操作:先建出整颗笛卡尔树,然后不断删点(应用LCT(暂不会,但暴力水过))
总结
- 要合理规划好每一题的时间,提升代码时间能力(要不然像今天t1花了半个多小时,导致最后没有时间打t4)
- 要确保优化过后程序的正确性,不能像今天t2一样将AC代码交成WA甚至TLE,拿到更低的成绩
- 要学会转换、数形结合。