- 博客(10)
- 收藏
- 关注
原创 P4173 残缺的字符串(NTT字符串匹配模板)
传送门考虑如何用多项式乘法匹配字符串设sss串长nnn,ttt串长mmm,下标从零开始把字母转化为[1,26][1,26][1,26]的数字,数组分别为f,gf,gf,g定义ans[x]=0ans[x]=0ans[x]=0表示sss串的[x,x+m−1][x,x+m-1][x,x+m−1]和ttt串匹配那么如果ans[x]=∑i=0m−1(f[x+i]−g[i])=0ans[x]=\sum\limits_{i=0}^{m-1}(f[x+i]-g[i])=0ans[x]=i=0∑m−1(f[x+i
2021-01-23 20:56:24
251
1
原创 QT 使用paintEvent绘画图片移动
目的加入资源图片,然后利用画家painterpainterpainter画出这幅图片画完之后,设置定时器让图片慢慢移动。Ⅰ.加入资源图片首先复制你需要的文件,添加的文件目录下然后右键QTQTQT总文件,add newadd\ newadd new,然后选择QTQTQT,选择Qt Resource FileQt\ Resource\ FileQt Resource File即可给资源文件添加前缀为///,添加文件即可Ⅱ.画图片,控制移
2021-01-23 18:00:47
1231
1
原创 QT定时器的使用
方法一使用timerEventtimerEventtimerEvent[override virtual protected] void QTimer::timerEvent(QTimerEvent *e)所以只需要在Widget.hWidget.hWidget.h里声明一下,然后去Widget.cppWidget.cppWidget.cpp实现即可具体的操作写在函数timeEventtimeEventtimeEvent中但是怎么触发时间呢??我们需要激活一下,也就是startTimer(x)
2021-01-23 17:53:36
171
1
原创 P3763 [TJOI2017]DNA(字符串匹配NTT)
传送门考虑到字符集只有ATCGATCGATCG四种那么对于一个子串,我们可以分别计算A,T,C,GA,T,C,GA,T,C,G的匹配个数累加就是总的匹配个数比如样例ATCGCCCTA长为nnnCTTCA长为mmm把CCC变成111,把TTT变成000S:001011100S:001011100S:001011100,s0s_0s0数组设为S[i]S[i]S[i]T:10010T:10010T:10010,s1s_1s1数组设为T[j]T[j]T[j]于是对于kkk开头的s1s_1s1
2021-01-23 15:36:46
167
2
原创 P3338 [ZJOI2014]力(FFT+化简)
传送门Fj=∑i=1j−1qi∗qj(i−j)2−∑j+1nqi∗qj(i−j)2F_j=\sum\limits_{i=1}^{j-1}\frac{q_i*q_j}{(i-j)^2}-\sum\limits_{j+1}^n\frac{q_i*q_j}{(i-j)^2}Fj=i=1∑j−1(i−j)2qi∗qj−j+1∑n(i−j)2qi∗qj求Ei=FiqiE_i=\frac{F_i}{q_i}Ei=qiFiEj=∑i=1j−1qi(i−j)2−∑i=j+1nqi(i−j)
2021-01-23 13:45:01
72
原创 HDU 5765 Bonds(割思维+SOSDP)
传送门给出一张无向图,问在所有最小割中,每条边出现多少次。首先最小割准确无误的把图分为两个连通块那么我们可以枚举连通块的所有状态那么剩下的点集也必然是一个连通块如何判断一个状态是否是一个连通块呢???我们可以使用并查集,在O(m2n)O(m2^n)O(m2n)的时间内完成判断,这显然不可取不过我们可以用状压dpdpdp,设f[u]f[u]f[u]为点击状态为uuu时是否可能连通f[u] ∣=f[v]f[u]\ |= f[v]f[u] ∣=f[v]当且仅当存在边(u,v)
2021-01-23 11:57:40
96
原创 牛客练习赛56 E.小雀和他的王国(tarjan缩点+树直径)
传送门因为删去一条边图不连通,很容易想到割边也就是说只有割边有用那我们先去缩点,变成一棵树,这样树上每条边都是割边连接树上任意两点,中间的边都不是割边了所以直径最划算#include <bits/stdc++.h>using namespace std;const int mod = 1e9+7;const int maxn = 2e5+10;struct edge{ int u,to,nxt;}d[maxn<<1]; int head[maxn<&l
2021-01-22 21:02:50
70
原创 牛客练习赛56 D.小翔和泰拉瑞亚(线段树)
传送门由于要求最小差值考虑枚举每个序号indexindexindex作为最小值来求首先indexindexindex的值越小越好,所以我们把所有覆盖indexindexindex的区间加进去但是这样有些位置的数字也减小了啊!!但其实差值是不变的,所以一定是更优的于是我们可以把所有区间按照左端点排序只要左端点比indexindexindex小就说明覆盖了indexindexindex(因为indexindexindex从111起)我们就加进来放在线段树上,然后查询区间最大值然后之前加入的那些区
2021-01-22 19:32:53
95
原创 牛客练习赛54 B.求和(简单快速幂)
传送门设lowbit(x)lowbit(x)lowbit(x)表示xxx二进制最低位111表示的数字求∑i=02nlowbit(i)\sum\limits_{i=0}^{2^n}lowbit(i)i=0∑2nlowbit(i)000000010010001101000101011001111000如果第iii位的二进制要产生贡献,首先第iii位上是111且[1,i−1][1,i-1][1,i−1]都是零,而[i+1,n][i+1,n][i+1,n]随意贡献是2i−1∗2n−i
2021-01-22 13:39:01
89
原创 牛客练习赛53.老瞎眼 pk 小鲜肉(线段树思维)
传送门给定长度为nnn的数组,qqq个询问每次问[L,R][L,R][L,R]内最小的区间长度[l,r][l,r][l,r]使得al⊕al+1...⊕ar=0a_l\oplus a_{l+1}...\oplus a_{r}=0al⊕al+1...⊕ar=0明显需要预处理如果做一个异或前缀和pre[x]pre[x]pre[x]那么问题就转化为[L−1,R][L-1,R][L−1,R]找到最小的区间[l,r][l,r][l,r]满足pre[l]⊕pre[r]pre[l]\oplus pre[r
2021-01-22 11:45:25
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人