首页 > 其他分享 >SOJ1728 题解

SOJ1728 题解

时间:2023-02-01 18:55:23浏览次数:36  
标签:10 le 题解 bmod texttt 操作 SOJ1728

题意

有一个长度为 \(n\) 的数列 \(a_0,a_1,\dots,a_{n-1}\) 以及一个长度为 \(m\) 的操作序列 \((b_0,c_0),(b_1,c_1)\dots(b_{m-1},c_{m-1})\)。

执行 \(t\) 次操作,第 \(i\) 次操作(从 \(1\) 开始编号)执行

\[\text{swap}(a_{(b_{i\bmod m}+i)\bmod n},a_{(b_{i\bmod m}+i)\bmod n}) \]

求最终数列。

\(1\le n,m\le 10^5,t\le 10^{10}\)。

题解

考试题,赛时想了一个巨毒瘤的奇环树+倍增解法,结果 \(200+\) 行代码怒调 \(4\texttt{h}\),还 R 了一个点。只能 \(90\texttt{pts}\) 遗憾离场……正解用到了一个挺妙的 trick,但出题人认为很典(www被嘲讽了

先考虑 \(n\mid m\) 的情形。若我们将操作每 \(m\) 个分为一组,除最后一组外的所有组都是相同的。暴力一遍,可以得到一个置换,因为置换有结合律,用快速幂可以 \(O(n\log t)\) 解决。其实也可以优化到 \(O(n\log n)\),但没必要。

\(n\nmid m\) 时,第 \(i\) 组的每个数在 \(\bmod n\) 意义下比第 \(i-1\) 组大 \(m\)。我们这样考虑:做完第 \(1\) 组后,将数列向左循环移 \(m\) 位,做完剩下的所有组后再移回来。由于操作是 \(\texttt{swap}\),结果不变。那么除最后一组外的所有组又相同了。如上操作,最后循环右移 \(\lfloor\frac{t}{m}\rfloor\times m\) 即可。

标签:10,le,题解,bmod,texttt,操作,SOJ1728
From: https://www.cnblogs.com/FishJokes/p/17083878.html

相关文章

  • ARC 155 题解
    A目前见过的最阴间的A。寻找规律,发现最后的回文串一定是由若干个周期拼起来的。当周期长度为偶数时,\(S\)和\(S'\)可以各拿半个周期。于是kmp求出border,再判一下,但......
  • 题解 P5507 机关
    传送门毕设老师让我做MAPF,由于学了好多A*算法的变形,就过来做一做了。这题用的是EPEA*(EnhancedPartialExpansionA*)算法【分析】显然搜索能过,但是状态空间太大了......
  • docker “no space left on device”问题解决
    在​​Linux​​环境上使用docker执行命令时遇到了“nospaceleftondevice”可能是存储镜像的路径磁盘满了1、先使用dockerinfo查看docker的信息dockerinfo可以看到do......
  • ptz2023题解/训练记录 #1 Petrozavodsk Winter Camp 2023 day1 JAGain in Petrozavods
    ProblemA.Agriculture签到题,没看,被队友切了ProblemB.BlocksandExpressions签到题,没看,被队友切了ProblemC.ChangingtheSequences首先,建图吧。然后,二分图最......
  • 题解 【[USACO23JAN] Lights Off G】
    problem给两个长为\(n\)的0/1字符串\(S,T\),进行如下操作\(cnt\)次:自行选定\(0\leqx<n\),使得\(T_x\)异或一。将\(S\)异或上\(T\)。将\(T\)的最后一位......
  • 题解 【[USACO23JAN] Find and Replace G】
    problem有一个字符串\(S\),初始时为\(\tt'a'\),现在进行\(n\)次操作,第\(i\)次操作形如:将\(S\)中的所有的字符\(ch_i\)替换为字符串\(T_i\)。然后输出\(S[l......
  • 【题解】favorite school
    标准程序1:#include<bits/stdc++.h>usingnamespacestd;intt,del,cha,flag[4],check[4];strings;unordered_map<char,int>pos;intslove(intx,inty,intz,int......
  • Acwing 周赛88 题解
    比赛链接A题题目描述给定一个整数\(x\),请你找到严格大于\(x\)且各位数字均不相同的最小整数\(y\)。\(1000\lex\le9000\)做法分析发现数据范围很小,那么我们可以直......
  • 【题解】USACO 2023 January Sliver
    因为Glod打寄了,就来写写Sliver的题解吧,现在应该比赛结束了吧。A.FindAndReplace题目分析:我们可以对给定的串建出一种关系,也就是如果在上面的字符串中是字符\(c_1......
  • CF1098D 题解
    题意传送门对于一个元素个数大于\(1\)的可重集,每次取出两个数\(x,y\)合并。若\(x\ley\le2x\),则称其为危险合并。重复上述操作至无法合并。给你一个初始为空的可......