#5 2023.11.21

379. The 2nd Universal Cup. Stage 9: Qinhuangdao

J

xwp 怎么还在知乎撒狗粮啊。草草草草。图图了 /dao。

C

求出最长的 len 满足 [l,l+len1]=rev([rlen+1,r])。记 l+len=x 。大概就是找一个最大的 z<y 满足 [x,z] 是回文串。这个可以乱马拉车然后线段树二分。之后加上 lcp(z+1,rlen+1) 的贡献就行了。rlen 那边同理。

H

厉害题。

L

orz zayin。

考虑逆排列,原排列上的子排列就对应逆排列的一个前缀,满足这个前缀的值域是满的。

发现交换逆排列上的值为 x,y 的两个数(假设 xy 先出现),就是在一些点把 x 图图了换成 y。发现对于每个点,只有 O(1)(x,y) 会产生贡献。

暴力统计,就做完了。

K

黑白染色,黑的按照左上斜和右上斜分别编号,每个编号对应一个格雷码,然后拼起来。

白的就是旁边的黑的 OR 再取反。

380. arc168d Maximize Update

fl,r 表示仅考虑被 [l,r] 完全包含的区间的答案。考虑最后一个被选的区间覆盖了点 k。那就可以把所有包括 k 的区间都图图了,贡献就是 1+fl,k1+fk+1,r

381. arc168e Subsegments with Large Sums

当场进行一个二分答案。设 f(i) 表示选出 i 个不交的 sumS 的区间,至少需要多少

382. arc168f Up-Down Queries

考虑维护数列 +1 的点集。每次对 x 进行操作,就相当于扔两个 x 进去,然后把集合里最小的点踢了。

然后能抽象成一个费用流模型(????。有点太色了。

之后就暴力模拟费用流就行了。

383. arc142d Deterministic Placing

等价于把原树剖成单向链。满足链头不和链头相邻,链尾不和链尾相邻,链头链尾都不和另外的链的身相邻。

然后每个结点有 8 个状态,大力转移即可。

384. arc142e Pairing Wizards

可以写成 ax,aymin(bx,by),max(ax,ay)max(bx,by)

大力切糕。

385. arc142f Paired Wizards

orz zyf

大概可以分成

  • (a,b)=(c,d)
  • a=c,bd
  • ac,b=d
  • (1,1),(2,2)
  • (1,2),(2,1)

转化一下,变成 S(cx+12)(cy+12)。然后第一种没救了,第二种和第三种一定取得是后缀,第四种取得也一定是后缀,第五种对 S 的贡献相等。

所以枚举第五种对 cx 的贡献,再枚举选了几个第四种,剩下的可以预处理出 max。

386. loj3695 「JOISC 2022 Day4」鱼 2

比较色的题。

考虑对于一个区间分别维护前缀和后缀信息。以前缀为例,如果这条鱼吃不到左端点,它就废了。否则,它一定能吃到一个前缀,并且前缀数量不会太多,只有 logV 个。看起来转移很色,有点困了懒得写了。

387. loj3488 「JOISC 2021 Day1」IOI 热病

枚举第一个点的方向,发现其他的点的方向是唯一的。

然后就使用类似 dijkstra 的方法更新,每次取出最小的点。和某个点交只有三种情况,分别是对撞,x+y=k 或者 xy=k,三种情况分别找出和这个点交最近的点。以 x+y=k 为例,大概就是找出 x+y=kx 在某个范围内,y 最大的点。可以用 set 简单处理。

388. loj3487 「JOISC 2021 Day1」特技飞行

这尼玛啥玩意啊草。

大概就是说,当场爬山。改进:每次交换操作是交换两条边,估价函数采用最小的几个角拼起来的奇怪函数。然后当场跑,然后就过了(???。受不了了。

389. loj3491 「JOISC 2021 Day2」道路建设

先把贡献转成经典的 max(|x1x2|,|y1y2|)。考虑先搞出第 k 大的边权值是多少。二分答案,那就对于每个点,就对应一个二维数点。用滑动窗口 + BIT 即可。

然后输出是容易的。

有种厉害做法,是二分答案 mid 的时候,把平面劈成 mid×mid 的块,查询的时候八连通暴力找。这样是 O(n) 的,很厉害。厉害吗?不知道啊,真的厉害吗?但是看起来很厉害。

390. loj3490 「JOISC 2021 Day2」逃跑路线

如果路程大于等于两天,答案是容易的。

如果路程等于一天,对于每个点,先跑一遍 T=0dijkstra。同时,对于每条边,有一个被扬时间,对每个被扬时间 +1 也跑 dijkstra。这样会跑 O(m) 次,总复杂度 O(n5)

但是我们认为这样还不行!枚举每条边 (u,v,w) 作为答案路径里顶到上界(即时间增加后第一条爆)的边,相当于从 u 终止时间为 Cu,vw 跑一遍反着的 dijkstra,从 v 起始时间为 Cu,v 跑一遍正的。然后枚举可能的 x,y,答案就是 disux+w+disvy,要求 x 的出发时间 Cu,vwdisux。这样就是 O(mn2polylog(n)) 了。

391. arc141c Bracket and Permutation

392. arc141d Non-divisible Set

393. arc141e Sliding Edge on Torus

394. arc141f Well-defined Abbreviation

判定非常神仙。

对于一个 Si,贪心地用其他 Sj 乱删它。如果删完了,说明 Si 没用了。否则说明 Si 本身就是非法串。

然后判定条件是不存在 Si=A+B,Sj=B+C,且 AC

证明:

  • A+B+C 是非法串。
  • 归纳证明每个串的终止态唯一。考虑串 T 删掉 Si 得到的子串 Ti,和删掉 Sj 的得到的子串 Tj。若删掉的区间有交,则 Ti=Tj。否则这两个串的终止态等于 TSiSj 的终止态。

然后就可以乱做了。先贪心删看会不会寄。然后就枚举 B 作为后缀,塞进哈希表,再枚举 B 作为前缀查一下就行了。

posted @   ZSH_ZSH  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示