NOIP20240723

NOIP20240723

T1 ZWEI

  • 题意:给定 \(N\) 个由小写字母组成的单词,保证这些单词中没有一个是另一个的前缀。现在需要将每个单词缩短成它的某个非空前缀,使得缩短后的单词集合中也没有一个单词是另一个的前缀,并且希望这些前缀尽可能短。问满足这个条件的每个单词的最短前缀。
  • 题解:一定不要写 \(\text{AC}\) 自动机,会 RE,暴力查找就可以了。
  • 代码

T2 世界树

  • 题意:你有 \(N\) 个非负整数,并且这些整数的值是固定的,但是你不知道它们具体的值。你会得到一些关于这些整数的事实,并需要回答一些询问。
  • 两种事实:
    • \(\texttt{I p v}\):意味着第 \(p\) 个数的值是 \(v\)
    • \(\texttt{I p q v}\):意味着第 \(p\) 个数和第 \(q\) 个数的异或值是 \(v\)
  • 一种询问:
    • \(\texttt{Q k p1 p2 ... pk}\):要求出第 \(p_1, p_2, \dots, p_k\) 个数的异或值。
  • 题解:大模拟。十分巧妙的带权并查集,先对序列做前缀异或和,这样就转化为了 \(s_r⊕s_{l−1}=o\),也就是说 \(s_r\)\(s_{l−1}\) 的距离为 \(o\),用带权并查集维护一下就行了。
  • 代码

T3 模块装配

  • 题意:给定若干区间,问将这些区间分成多少组使得每组内的区间两两不重叠,并给出具体的分组方案。
  • 题解:线段树加二分加贪心。
  • 代码
posted @ 2024-08-26 17:07  liukejie  阅读(7)  评论(0编辑  收藏  举报