摘要: 题目链接:click here Solution: 首先考虑维护连通块,但是在删边的条件下进行维护连通块显然比较复杂 如果不是删边,而是增添边,那么连通块的维护难度将大大减少,那么我们如何从删边变成添加边呢 不妨考虑倒过来做,我们先把所有要删去的边一次性删去,然后反过来依次加回去即可 现在我们要添加 阅读全文
posted @ 2022-08-15 15:38 DQY_dqy 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 现在有一个排列$T$,我们想要通过交换相邻元素的方式来让它变成升序的一个排列,需要的最小交换次数是多少呢 答案其实就是排列$T$中的逆序对数,因为我们可以发现,逆序对数为0的排列显然是唯一的,那么所有的减少逆序对数的操作都是必须的,而具体操作也很简单,只需找到当前不处于自己位置上的最大的数,然后将它 阅读全文
posted @ 2022-08-14 09:31 DQY_dqy 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 题目链接:Click here Solution: 首先我们来证明一个引理:对于所有的$n$来说,必然在$[n,2n]$间存在一个完全平方数$k$ 我们不妨令$t=\lceil\sqrt n\rceil$,我们来证明不等式:$n\le t^2\le2n$ 不等式左边是显然成立的,考虑证明不等式的右边 阅读全文
posted @ 2022-08-12 14:42 DQY_dqy 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目链接:Click here Solution: 不妨先对A进行分解质因数,$A=p_1^{c_1}\times p_2^{c_2} \times \dots \times p_n^{c_n}$ 那么$A^B=p_1^{c_1\times B}\times p_2^{c_2\times B} \t 阅读全文
posted @ 2022-08-12 12:14 DQY_dqy 阅读(5) 评论(0) 推荐(0) 编辑
摘要: C 用map存一下就行了 #include<bits/stdc++.h> using namespace std; const int N=2e5+1; int n; char s[N][21]; map<string,int>v; int read(){ int x=0,f=1;char ch=g 阅读全文
posted @ 2022-07-24 21:42 DQY_dqy 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 链接https://atcoder.jp/contests/abc260 阔别oi生涯2年,做康复训练,先从abc开始把 B 就按照不同的关键字三次排序就行了 #include<bits/stdc++.h> using namespace std; const int N=1e3+11; int n 阅读全文
posted @ 2022-07-22 15:26 DQY_dqy 阅读(19) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2020-02-27 14:32 DQY_dqy 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 引入: 我们先来看一道例题: 给定序列$\{g_1,\dots g_{n 1}\}$,已知$f_0=1$ ,$f_n=\sum_{i=1}^{n} f_{n i}\times g_i$,求序列$\{f_i\}$,对$998244353$取模 考虑最朴素的做法,$O(n^2)$,在$n$比较小的情况下 阅读全文
posted @ 2020-02-11 23:18 DQY_dqy 阅读(157) 评论(2) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 看到恰好,首先考虑容斥,设$f[i]$表示我们 钦定 $i$种颜色在序列中恰好出现了$S$次有多少种方案 那么现在就有$i+1$个部分,把他看作是可重集的全排列,方案数即 ${n! \over (S!)^i (n Si)}$ ,后面每个都可以 阅读全文
posted @ 2020-01-31 13:20 DQY_dqy 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 容易得到这样一个$dp$,设$f[i][j]$表示已经选了$i$个数,乘积$mod \,\,m$后为$j$的方案 $$ f[2\times i][j]=\sum_{a\times b\equiv j\,\,(mod\,\, m)} f[i][ 阅读全文
posted @ 2020-01-30 13:57 DQY_dqy 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 设$f[i]$表示当$d=i$时的答案,$c[i]$表示$a$序列中有多少个$i$的倍数 首先我们要使恰好$k$个数互不相同,则表示其他$n k$个数恰好相同,那么有${c[i]\choose n k}$种方案 考虑剩下的$c[i] n+k$ 阅读全文
posted @ 2020-01-29 23:48 DQY_dqy 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 把式子拿下来 $$ E_k=\sum_{i=1}^{k 1} {q_i \over (k i)^2} \sum_{i=k+1} ^ n {q_i \over (i k)^2} $$ 构造一个生成函数$C(x)=\sum_{i=1}^n {1 阅读全文
posted @ 2020-01-29 11:39 DQY_dqy 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 题目名字有点伤感啊。。。 直接看题吧,$k$次前缀和,瞬间想到$O(nk)$的做法,20pts到手了,走吧! 回到正题。。。不难想到,我们构造一个生成函数$G(x)=\sum_{i=0}^n x^i$,同时有$A(x)=\sum_{i=1}^ 阅读全文
posted @ 2020-01-28 23:18 DQY_dqy 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 这道题感觉还是不太难的。。。 考虑若存在一个长度为$len$的$border$,那么对于$\forall i\in [1,len]$都有$s[i]=s[n len+i]$ 注意到下标之间的差值为$n len$,也就是说,所有下标差为$n le 阅读全文
posted @ 2020-01-28 17:21 DQY_dqy 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 考虑dp,$f[i][j]$表示已经确定了$i$位,当前匹配到第$j$位的方案数 给出的字符串是固定,不难发现我们每次转移的方程也是一个与上次状态无关的固定的东西 $$ f[i][j]=\sum_{k=0} ^{m 1} f[i 1][k]\ 阅读全文
posted @ 2020-01-21 12:00 DQY_dqy 阅读(125) 评论(0) 推荐(0) 编辑