首页 > 其他分享 >2024.2.20 横渡海峡 年轻的人

2024.2.20 横渡海峡 年轻的人

时间:2024-02-20 21:34:17浏览次数:28  
标签:字符 2024.2 20 置换 个数 不动点 操作 考虑 横渡

数学很难。
头一次感觉非常罚坐,但是细细思考还是很有收获的。

ARC172F

需要尝试对操作找出一个优秀的描述。
手玩一下操作,偷一张题解的图:

仅看这一段,可以发现我们的操作形如:插入一个字符,然后删除一个字符。
做到这里已经是提高组题目了,令 \(f_{i,j}\) 表示 \(S\) 匹配到 \(i\),\(T\) 匹配到 \(j\) 的最小步数,于是有转移:

\[\begin{aligned} f_{i,j}+1\to f_{i+1,j}\\ f_{i,j}+1\to f_{i,j+1}\\ [S_i=T_j]f_{i,j}+1\to f_{i+1,j+1} \end{aligned} \]

答案即为 \(f_{n,n}-n\),因为每用一次操作会多一步。
从上到下依次是删除 \(i\) 这个字符,在 \(i\) 前面插入 \(T_j\) 这个字符,直接将两个字符匹配,这样的。
需要限制 \(i\le j\),因为一定是先插入再删除,这样的。
然后根据 DP 方程构造方案是简单的,值得一提的是这个题的操作不能够互换,一定要保证操作是从前往后操作,因为我们是从前往后 DP,\(O(n^2)\)。
https://atcoder.jp/contests/arc172/submissions/50462209

P4727 / P4128

枚举一个置换 \(x\),考虑他的每一个置换环,设为 \(p_i\)。
考虑不动点的个数,首先对于某一个置换环本身,会发现它有 \(\lfloor\frac{p_i}{2}\rfloor\) 个不动点,对于两个置换环,会发现他们共有 \(\gcd(p_i,p_j)\) 个不动点。
于是可以在 \(O(n^2)\) 的复杂度内计算某个置换环的不动点个数,使用 burnside 引理即可计算给定群的个数。
考虑到上述计算过程中每个置换只会和置换环的大小相关联,于是可以将置换个数变为 \(O(p_n)\),需要计算被算重的置换个数,也是容易的。
于是做到 \(O(n^2p_n)\)。
https://www.luogu.com.cn/record/147693830

ARC072E

对于 \(i\) 考虑他的答案,发现假设现在前缀是 \(x\),我们实际可以将 \(x\) 变成 \([0,x]\) 内的任何数。
考虑后缀的函数,发现直接维护若干个 \(\min(x,|x-d_i|)\) 的复合不可行,但是可以考虑维护其最小的非 \(0\) 点,换句话说就是维护一个全 \(0\) 前缀。
初值 \(f_n=1\),考虑转移:

  • 若 \(f_{i+1}\le d_i/2\),则没有影响,\(f_{i}=f_{i+1}\)。
  • 否则 \(f_{i}=f_{i+1}+d_i\)。

容易 \(O(n)\) 转移 \(O(n)\) 判断。
https://atcoder.jp/contests/arc072/submissions/50473911

标签:字符,2024.2,20,置换,个数,不动点,操作,考虑,横渡
From: https://www.cnblogs.com/cnyzz/p/18023093

相关文章

  • log4cplus在VS2022使用
    在VS2022使用vcpkg编译的log4cplus遇到以下错误:21:08:14:646 1>player.lib(player_manager.obj):errorLNK2001:无法解析的外部符号"void__cdecllog4cplus::detail::macro_forced_log(classlog4cplus::Loggerconst&,int,classstd::basic_string<wchar_t,structstd::ch......
  • 2024.2.20 近期练习
    P4766不难发现时间的先后顺序是不重要的。所以把时间转化到数轴上。数据范围提示区间dp,设\(f_{l,r}\)表示\([l,r]\)时间里面全部消除的代价。\(f_{l,r}=\max(f_{l,k}+f_{k,r}+d_{l,k,r})\),其中\(d_{l,k,r}\)表示跨越\(k\)的,且在\([l,r]\)里最远的距离。然而\(d\)......
  • #15 2024.2.19
    604.xsy5339怎么有人(why)605.xsy5340NOIP(noip)得到的结论是,动态凸包水太深,别碰,你把握不住。叉随机化叉了一万年,然后发现std是假的。遇到这种题来个猫树分治得了。傻逼。大粪模拟赛/tuu。606.qoj8224CaughtintheMiddle607.qoj1071The2022ICPCAsiaHan......
  • UESTC 2024 寒假集训 - Day4
    Preface万恶的psk搬的全是Atcoder上的题目,然后理所当然的后面题目全是CountingProblem了作为计数苦手直接当场暴毙,3h写完前面的8个题然后直接跑路AtCoderarc148_amodM开场差点被签到腐乳了,没发现答案不是\(1\)就是\(2\)直接傻掉了由于\(M=2\)时答案至多为\(2\),因此只需......
  • 闲话2.20
    又是听不懂的一天......
  • 2024年2月20号题解
    P5594【XR-4】模拟赛解题思路重点是怎么判断是不是同一套模拟题用一个数组来标记是不是同一套题代码实现#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<time.h>#include<stdbool.h>#defi......
  • 2.20 鲜花
    【数据删除】被收了,原因:大义灭亲开状压了但是讲解视频的模糊程度和二十年前的电视剧不相上下\(B\)互不侵犯状压模板状态转移方程为$dp_{i,j,k}=\sum\limits_{x=1}^{cnt}dp_{i-1,x,k-sta_j}$,其中(sit[j]&sit_[x]==0)&&((sit[j]<<1)&sit[x]==0)&&(sit_[j]&(sit[x]}<<1)==0......
  • P2023 [AHOI2009] 维护序列
    原题链接code#definelllonglong#include<bits/stdc++.h>usingnamespacestd;lltree[410000]={0};llwait_mul[410000]={0};llwait_add[410000]={0};lln,p;inlinevoidread(ll&x){x=0;llflag=1;charc=getchar();while(c......
  • LOJ2834 「JOISC 2018 Day 2」修行
    LOJ传送门考虑若已求出钦定\(k\)个升高的排列数量\(f_k\),那么二项式反演就可以求出恰好\(k\)个升高的排列数量\(g_k\),即:\[g_k=\sum\limits_{i=k}^n(-1)^{i-k}\binom{i}{k}f_i\]考虑求\(f_i\)。相当于钦定原序列构成了\(n-k\)个上升段。相当于把\(n\)个......
  • 2024-02-20-物联网C语言(10-文件)
    10.文件10.1文件的概念文件用来存放程序、文档、音频、视频数据、图片等数据的。文件就是存放在磁盘上的,一些数据的集合。在windows下可以通过写字板或记事本打开文本文件对文件进行编辑保存。写字板和记事本是微软程序员写的程序,对文件进行打开、显示、读写、关闭。作为......