首页 > 其他分享 >Codeforces Round 864 (Div. 2)

Codeforces Round 864 (Div. 2)

时间:2023-04-09 11:55:46浏览次数:32  
标签:nxt log LCP min 864 Codeforces 序列 Div operatorname

评价:A~E 感觉出的挺一般,特别是 D 怎么放这种暴力题,场上我还没调出来,F 没看。但是 Orz rui_er。

A

在一个点周围放障碍即可。

B

求出最少需要的操作次数 \(p\),若 \(p > k\) 就无解,否则若 \(n\) 为偶数只能任选一个格子翻偶数次,即有解当且仅当 \(2 \mid (k - p)\);若 \(n\) 为奇数可以一直翻中间格子,恒有解。

C

问 \((1,1)\),此时得到了 \(\max(x,y)=p\),再问 \((p,p)\),此时可以得到 \(\min(x,y)=q\),则答案为 \((p,q)\) 或 \((q,p)\)。问 \((p,q)\),若返回值非 \(0\) 那么答案就是 \((q,p)\),否则是 \((p,q)\)。

注意一开始的 \(p > \min(n,m)\) 时要特判,此时已经确定横纵坐标之一了,再问一次 \((1,p)\)(或 \((p,1)\))就可以得出答案。

D

暴力 set 维护每个点的重儿子,\(2\) 操作只会进行 \(O(1)\) 次修改。

E

考虑将每个 \(a_i\) 一直 \(x \gets \varphi(x)\) 得到的所有数从小到大写成一个序列,则问题可以被简化成:

给定 \(n\) 个长度不超过 \(\log V\) 的序列,有两种操作:

  1. 删除 \([l,r]\) 序列的末尾元素(如果序列只有一个元素就不删)
  2. 查询 \([l,r]\) 序列的 \(\operatorname{LCP}\)

考虑所有序列总长为 \(O(n \log V)\),删除操作时暴力枚举 \(l\) 到 \(r\) 即可,使用并查集维护每个元素下一个非 \(1\) 元素的位置。

考虑从末尾删元素只会对 \(\operatorname{LCP}\) 在长度方面有影响,所以可以认为是静态查询。

既然是静态,那么对于每个位置预处理出最大的 \(nxt_{k,i}\) 表示 \([i,nxt_{k,i}]\) 在第 \(k\) 位相等。询问直接枚举 \(\operatorname{LCP}\),最大的满足 \(\forall p \in [1,k],nxt_{p,l} \ge r\) 且 \(\forall i \in [l,r], k \le len_i\) 的 \(k\) 就是 \(\operatorname{LCP}\)。

实现时需要一个线段树维护序列长度的区间 \(\min\) 和区间和。时间复杂度 \(O(n (\log n + \log V) + m \log n \log V)\)。

F

待补

标签:nxt,log,LCP,min,864,Codeforces,序列,Div,operatorname
From: https://www.cnblogs.com/zltzlt-blog/p/17300087.html

相关文章

  • Edu Round 板刷计划 4. Educational Codeforces Round 4 题解
    ChangeLog:2023.04.06开坑.A-TheTextSplitting弱智题.枚举分出来多少个长度为\(p\)的串,则能计算出长度为\(q\)的串有多少个,若合法则直接输出即可.无解输出-1.Samplesubmission.B-HDDisOutdatedTechnology比A还弱智.直接记录每个数的位置,然后模拟一......
  • codeforces 1804D Accommodation
    https://codeforces.com/problemset/problem/1804/D解题思路每个楼层是独立的,考虑怎么解决一层就可以了。求最大值就是尽量避免1和1合并,也就是尽量在不存在连续1的子序列中进行合并,如果还有需要合并的就只能用1和1合并。求最小值就是尽量合并1和1。由于只需要输出最大最小值,所......
  • Educational Codeforces Round 146 (Rated for Div. 2)
    A.Coins#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongintread(){intx=0,f=1,ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch......
  • Educational Codeforces Round 124 (Rated for Div. 2)
    题目链接C核心思路其实还是得根据样例,首先我们先自己分析出来。现根据边地数目来分析。我们其实不难发现四个端点必须得连上边。边数为2.那么只有两条竖线。方案数是一种边数为3,那么就一条竖线还有就是一把叉这里交换位置就是两条了。还有就是平行四边形和一条斜线,也是可以......
  • [CodeForces]4.7
    题目链接:https://codeforces.com/contest/1610/problem/E灵神描述输入t(≤1e4)表示t组数据。所有数据的n之和≤2e5。每组数据输入n(2≤n≤2e5)和长为n的有序数组a(1≤a[i]≤1e9),有重复元素。你需要从a中删除一些元素,对于a的任意非空子序列b,都必须满足:设avg为......
  • UVA - 562 Dividing coins 经典01背包
    题目大意:给出一系列硬币,要求分给两个人,且两个人得到的硬币差达到最小值解题思路:用d[i]表示i这个数是否能被表示,则如果d[i-num[j]]==1的话,num[j]表示硬币的价值,则d[i]就可以被表示,最后只要判断sum>>1然后递减到0的期间遇到哪个数字能表示的,能表示的话就找到结果了,结果为sum-2*i,具体......
  • CodeForces - 149D Coloring Brackets(区间DP)
    题目大意:给你一个符合括号规则的字符串,现在要求你将这些括号染色,染色规则如下1.一个括号要么被染成红色,要么被染成蓝色,要么不染2.相邻的括号的颜色不能相同(可以同为无色)3.成对的括号只能有一个被染色问染色的方案数解题思路:0表示不染,1表示红色,2表示蓝色那么成对的括号......
  • LinearLayout增加divider分割线
    在android3.0及后面的版本在LinearLayout里增加了个分割线android:divider="@drawable/shape"<!--分割线图片-->android:showDividers="middle|beginning|end"<!--分割线位置-->分割线如果是图片那就直接使用图片就行,如果要使用颜色就必须使用shape来显......
  • codeforces 1793D Moscow Gorillas
    https://codeforces.com/contest/1793/problem/D解题思路依次找出MEX=1..n+1的序列数量就能得解。MEX=n+1只有全序列这一种情况。MEX=1时,找出两个序列中1的位置,较小位置左边的元素构成的子序列,较大位置右边的元素构成的子序列,以及两个位置中间的元素构成的子序列都满......
  • CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)(持续更新)
    Preface唉难得熬夜打一把还天天掉分,苦路西这把状态奇差,CD两个傻逼题都写的很慢,然后做E的时间太少最后又是经典比赛结束才调出来虽然很想骂傻逼室友打游戏鬼叫的超级响导致我注意力很难集中,不过终究还是自己抗干扰水平不够,不能怨天尤人A.BeautifulSequence傻逼题,显然若一个......