20231004【提高组】模拟 总结


Problem


1.【2023.10.03提高模拟】密文板

题目大意:

  • 给出一个由 ‘?’ , ‘(’ , ‘)’ 组成的字符串,其中 ‘?’ 可代表 ‘(’ 或 ‘)’ ,问将所有左右括号配对后最少剩余多少个括号未配对

比赛时:

  • 很快想到正解,但是代码打了很久
    • 思路 O ( n ) O(n) O(n)
      1. 把已知的左右括号尽量配对,用储存未配对的括号。
      2. 尽可能右侧的问号与能配对的尽量右的左括号配对(右括号同理)
      3. 将两个问号两两配对,并统计所有尚未配对的括号数量

2.【2023.10.03提高模拟】挑战NPCⅢ

题目大意:

  • 给出一张 n 个点,m 条边的无向连通图,问是否存在一种方案使得这张图被 k ( k ≤ 3 k \le 3 k3)种颜色染色

比赛时:

  • 打算拿完所有性质分: 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=n1∣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)):

  1. 先建树,找出 t 条返祖边
  2. 枚举这些返祖边两边的颜色,然后判断合不合法

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(kZ)
  • 问:在 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(xx=2k,kZ)对称的数显然选择较大的数更优
  1. 第一问:按照对称的性质不断从 r 翻折直到这个对称轴在 l 左侧,并统计中间的答案( O ( T l o g n ) O(Tlogn) O(Tlogn))
  2. 第二问:
    • 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(暂不会,但暴力水过))

总结

  1. 要合理规划好每一题的时间,提升代码时间能力(要不然像今天t1花了半个多小时,导致最后没有时间打t4)
  2. 要确保优化过后程序的正确性,不能像今天t2一样将AC代码交成WA甚至TLE,拿到更低的成绩
  3. 要学会转换、数形结合。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值