自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gjghfd

今日はまた新しい一日でした

  • 博客(288)
  • 收藏
  • 关注

原创 Codechef October Challenge 2019 Division 1 solutions

Codechef 10月月赛题解Chef and Maximum Star ValueArray ModificationEven EdgesBacterial ReproductionQueries on Matrix

2019-10-14 20:27:53 300

原创 Codechef September Challenge 2019 Division 1 题解

Codechef 9月月赛题解Chef Designed a NetworkFuzzy Linear CombinationsBiladerim IcinExpected GCDDoofish Set

2019-09-17 18:40:25 279

原创 [ Xor最小生成树 分治 字典树 ] Codeforces888G Xor-MST

裸的 xorxorxor 最小生成树。 枚举每一位,把这一位为 000 的放在一起形成一个连通块,为 111 的放在一起形成一个连通块,之间用字典树求一条最小边,然后分治做。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int M=6200000;int k,n,m;vec...

2018-05-21 09:38:45 582

原创 [ 高斯消元 ] [ SDOI2017 ] BZOJ4820 硬币游戏

假设匹配到一个串后不会停止。 设 pipip_i 为第一个匹配到 iii 的概率,pxpxp_x 为当前没有匹配到任何串的概率。显然 pipip_i 就是答案。 对于第 iii 个串,我们考虑由一个没匹配到任何串的字符串接上它形成的串。 显然出现的概率为 px⋅12mpx·12mp_x·{1\over 2^m} 。 再考虑用另一种方法表示它。 当 iii 是第一个匹配到的时候,概率为 p...

2018-05-17 19:55:02 343

原创 [ 分数规划 费用流 KM算法 ] [ SDOI2017 ] BZOJ4819 新生舞会

分数规划裸题#include<bits/stdc++.h>using namespace std;typedef double db;const int N=110;const db INF=1e18;const db Eps=1e-7;int k,n,m;int A[N][N],B[N][N];db a[N][N];int f[N],g[N];db w1[...

2018-05-17 13:58:08 265

原创 [ DP FWT 链分治 ] [ SDOI2017 ] BZOJ4911 切树游戏

题解#include<bits/stdc++.h>using namespace std;char nc() { static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}...

2018-05-17 10:20:51 485

原创 [ 状压DP ] [ Snoi2013 ] BZOJ3590 Quare

一个双连通图一定可以由一个点不断套上环形成。那么考虑DP,可以每次选一条链,然后两端和原集合连起来更新。 设 fSfSf_S 表示集合 SSS 的答案。 因为要选一条链,所以还要维护 h[S][x][y]h[S][x][y]h[S][x][y] 表示把 SSS 集合中的点连成一条链,两端为 xxx 和 yyy 的最小代价, hhh 可以DP求出。 由于要和原集合连起来,再求出 g[S][x]...

2018-05-16 10:52:49 338

原创 [ 分治FFT ] HDU5730

分治FFT裸题#include<bits/stdc++.h>using namespace std;typedef double db;const int P=313;const int N=100010;const db Pi=acos(-1);struct E { db a,b; E(db a=0,db b=0):a(a),b(b){} ...

2018-05-11 17:31:38 331

原创 [ 线段树 泰勒展开 ] Codechef April Challenge 2018 Division 1 Chef at the Food Fair

大佬教我做题ans=∏i=LR(1−pi)=eln∏Ri=L(1−pi)=e∑Ri=Lln(1−pi)ans=∏i=LR(1−pi)=eln⁡∏i=LR(1−pi)=e∑i=LRln⁡(1−pi)ans=\prod_{i=L}^R (1-p_i)=e^{\ln{\prod_{i=L}^R (1-p_i)}}=e^{\sum_{i=L}^R\ln{(1-p_i)}} 将 ln(1−x)ln⁡(...

2018-04-18 15:47:31 382

原创 [ wqs二分 ] Codeforces958E2 Guard Duty (medium)

裸的wqs二分。#include<bits/stdc++.h>using namespace std;const int N=500010;int k,n,m;int a[N];int s[N];double f[N];int main() { scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) ...

2018-04-17 15:02:48 532

原创 [ 树形DP 贪心 ] Codeforces958B2 Maximum Control (medium)

可以发现最优的选点方案一定包含直径的 222 个端点,而且选的一定是叶子节点。 把直径的一个端点作为根,那么所有方案都会选根。这样每次多选一个点都是一段从叶子向根的路径。记下所有路径,每次取最大值就好了。#include<bits/stdc++.h>using namespace std;const int N=100010;int k,n,m,x,y;int h[N],...

2018-04-17 13:45:56 273

原创 [ 双连通分量 ] Codeforces962F Simple Cycles Edges

发现一条边是合法的当且仅当它在一个点双连通分量内且这个点双连通分量是个简单环(边数=点数)。然后做遍 tarjantarjantarjan 就好了。#include<bits/stdc++.h>using namespace std;const int N=100010;int k,n,m,x,y;int low[N],dfn[N],tc;int st[N],top;i...

2018-04-14 12:46:58 392

原创 [ 斯特林数 ] Codeforces961G Partitions

显然最终答案中 wiwiw_i 的系数是相等的。我们尝试计算 wiwiw_i 的系数。 因为 iii 和 jjj 在同一集合中会使 wi,wjwi,wjw_i,w_j 的系数加 111 ,所以 wiwiw_i 的系数可以表示成 ∑j=1ngi,j∑j=1ngi,j\sum_{j=1}^n g_{i,j} 其中 gi,jgi,jg_{i,j} 表示 iii 与 jjj 在同一集合内的概率。 ...

2018-04-07 14:19:12 164

原创 [ 后缀数组 ] [ SDOI2008 ] BZOJ4698 Sandy的卡片

先差分,然后就转化为求最长公共子串。 将所有串依次接在一起,之间用分隔符隔开。那么就是求分属 nnn 个串的后缀的 lcplcplcp 最大值。 求出后缀数组,二分答案,把 heighti≥midheighti≥midheight_i\geq mid 的区间找出来,判断是否有 nnn 个串就可以了。#include<bits/stdc++.h>using namespa...

2018-04-03 21:12:05 182

原创 [ 后缀数组 ] [ ONTAK2015 ] BZOJ4278 Tasowanie

后缀数组模板题。 把 BBB 接 AAA 后面,然后每次贪心地选 rankrankrank 小的一边就好了。#include<bits/stdc++.h>using namespace std;const int N=400010;int k,n,m;int a[N];int t[N];int sa[N],rk[N],tp[N];void Rsort(int m...

2018-04-03 17:57:28 211

原创 [ 树链剖分 后缀自动机 ] Codeforces504E Misha and LCP on Tree

对原树树链剖分,那么一条链可以表示成 O(logn)O(log⁡n)O(\log n) 段区间。然后问题就转化为求两段区间的 lcplcplcp ,将每条重链正反都加入一个字符串中,构建出后缀自动机,求 lcalcalca 即可。 时间复杂度 O(nlogn+mlog2n)O(nlog⁡n+mlog2⁡n)\mathcal{O}(n\log n+m\log^2 n) 。#include&lt...

2018-03-30 19:52:27 324

原创 [ 线性基 ] Codeforces504D Misha and XOR

维护所有出现过的数构成的线性基,由于要输出方案,对于每个向量还要记一下它由哪些值异或而来。 用 bitsetbitsetbitset ,复杂度为 O(n332)O(n332)\mathcal{O}({n^3\over 32}) 。#include<bits/stdc++.h>using namespace std;typedef long long ll;const i...

2018-03-30 14:25:55 310

原创 [ 康托展开 树状数组 ] Codeforces504B Misha and Permutations Summation

利用康托展开可以在排列与变进制数间转化,其中变进制数就是从低到高第 iii 位的权值为 i!i!i! 的数。求答案时二分一下就好了。#include<bits/stdc++.h>using namespace std;const int N=200010;int n,m,x,k;int a[N];int c[N];int main() { scanf("%d",...

2018-03-29 20:22:13 269

原创 [ 背包 ] VK Cup 2018 - Round 2 Codeforces924E Wardrobe

容易发现答案一定可以表示成是一段 b[i]=0、一段 b[i]=1 、一段 b[i]=0 。 先对问题做一个转化:将下端在 [ l,r ] 改为上端在 [ max-r,max-l ] ,相当于将原答案反过来。然后可以发现对于两个 b[i] 相等的相邻块,a[i] 大的在下面一定比 a[i] 小的在下面优,因为这样会使 2 个上端更加接近而不会改变总高度。 将所有块按照 b[i] 从小到大排序,...

2018-03-28 20:48:05 303

原创 [ 杂题 树状数组 ] VK Cup 2018 - Round 2 Codeforces924D Contact ATC

假设当风力为 −w−w-w 时,点 iii 在 titit_i 时刻经过 000,当风力为 www 时在 t′iti′t_i' 时刻经过 000 。 显然在风力从 −w−w-w 变化为 www 的过程中,点 iii 经过 000 的时刻也会从 titit_i 变到 t′iti′t_i' ,而且这个过程是连续的。 对于点 i,ji,ji,j ,考虑什么时候满足条件。若 ti=tjti=tjt_i...

2018-03-28 18:15:31 432

原创 [ 决策单调性优化DP ] 计蒜客 是男人就过 8 题 H Sign Location

%%%LargestJN显然标志放在车站上是最优的。 令 fi,jfi,jf_{i,j} 表示放了前 iii 个标志,最后一个标志在 jjj 位置的最小代价,转移推下式子就行了。 打个暴力发现满足决策单调性,分治做就好了。 讲下怎么推式子。 最终 kkk 个标志把 nnn 个车站分成了 k+1k+1k+1 个区间,我们把 (i,j)(i,j)(i,j) 的贡献算在 iii 所在的区间内...

2018-03-27 12:58:07 781 5

原创 [ 杂题 复杂度分析 ] Codeforces955F Heaps

对于 k=1k=1k=1 ,可以直接树形DP求出答案。 对于 k>1k>1k>1 ,显然 maxdepth<logknmaxdepth<logk⁡nmax_{depth}dpi,jdpi,jdp_{i,j} 表示 iii 号点,depthdepthdepth 为 jjj 时最大的 kkk ,那么状态数是 O(nlogn)O(nlog⁡n)O(n\log n) 的。 如果...

2018-03-26 17:43:20 380

原创 [ 杂题 ] Codeforces955D Scissors

对于 ttt 的每个前缀,双指针扫一遍求出在 sss 中出现的最左的位置,对每个后缀求出最右的位置。然后枚举 ttt 中分割的位置就好了。 注意判断 ttt 在一个子串中出现的情况。UPD:感谢 lifelikes 指出错误。 假如要求出最左的位置,由于要保证选的字符串长度至少为 kkk ,所以初始时指针在 kkk 。 但这样有一种情况,就是 ttt 串的一个前缀可以匹配 sss...

2018-03-25 16:22:45 671 2

原创 [ ST表 并查集 树的直径 ] Codechef March Cook-Off 2018 Maximum Tree Path

先枚举 gcdgcdgcd ,把所有边找出来,按照权值小的端点排序,然后从大到小枚举边,并查集维护直径就好了。 时间复杂度 O(nAi−−√(logn+α))O(nAi(log⁡n+α))\mathcal{O}(n\sqrt {A_i} (\log n +\alpha)) 。#include<bits/stdc++.h>using namespace std;char nc(...

2018-03-23 21:09:24 179

原创 [ 并查集 ] Codechef March Cook-off 2018 Div 1 Chef Chooses a Subset

定义边的权值为连接的两点权值的 andandand ,那么一个连通块所有点的 andandand 值等于所有边权的 andandand 值。 枚举答案的 andandand 值,再枚举权值包含它的所有边,用并查集求出最大连通块就好了。 复杂度为 O(α3logn)O(α3log⁡n)\mathcal{O}(\alpha 3^{\log n}) 。#include<bits/stdc+...

2018-03-23 19:14:35 164

原创 [ 线段树 ] HDU5306 Gorgeous Sequence

吉利论文例题#include<bits/stdc++.h>using namespace std;char nc() { static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;...

2018-03-23 14:15:27 203

原创 [ 虚树 ] [ Heoi2014 ] BZOJ3611 大工程

虚树裸题#include<bits/stdc++.h>using namespace std;char nc() { static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}...

2018-03-20 20:15:05 192

原创 Codechef March Challenge 2018 DIV 1 题解

Mix the Colors显然每次选最大的数加到一个数上是最优的,那么答案就是 n−颜色种数n−颜色种数n-颜色种数 。 代码Chef and Easy Problem预处理出每个二进制位的前缀和,询问时枚举每一位贪心选就好了。 代码Minions and Voting枚举每个点,二分出他会投给谁,正反各做一遍就好了。 代码Chef and Gcd Qu...

2018-03-20 14:51:33 318

原创 [ 高斯消元 二分图最大匹配 ] [ HEOI2013 ] BZOJ3168 钙铁锌硒维生素

题解#include<bits/stdc++.h>using namespace std;const int N=310;const int P=1000000007;int k,n,m;int a[N][N],b[N][N],inv[N][N],c[N][N];int f[N],cur,v[N],t[N];vector<int>g[N];int A...

2018-03-14 14:14:49 254

原创 [ 分治 决策单调性优化DP ] LOJ#6039. 「雅礼集训 2017 Day5」珠宝

设 fi,jfi,jf_{i,j} 表示售价 ≤i≤i\le i 的珠宝,使用 jjj 万元的最大吸引力。转移方程很容易写出。 因为售价相同的珠宝肯定是从最大吸引力开始取的,所以转移的函数是上凸的。 将 jjj 按 j mod ij mod ij~mod~i 分类,每一类的转移满足决策单调性,然后就可以用分治做了。 时间复杂度 O(maxciklogk...

2018-03-14 09:46:05 788

原创 [ DP 莫队 ]「2017 山东一轮集训 Day6」LOJ#6074 子序列

题解#include<bits/stdc++.h>using namespace std;const int SZ=1<<25; char nc() { static char buf[SZ],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,SZ,stdin),p...

2018-03-13 15:26:50 522 1

原创 [ 杂题 ] Codeforces949E Binary Cards

发现答案中每个二进制数最多只会出现一次。然后暴搜,过程中记下还有哪些数要表示,剪个枝就好了。 最多跑 2192192^{19} 次。#include<bits/stdc++.h>using namespace std;const int M=19;int k,n,m,x;bool a[M][1<<M];int c[M];vector<int>c...

2018-03-13 11:07:07 481

原创 [ 齐次线性递推式 ] BZOJ4161 Shlw loves matrixI

假设转移矩阵为 AAA 。 然后就是要求出 hAn−k+1hAn−k+1\textbf{h}A^{n-k+1} 。 AAA 的特征多项式为 f(A)=Ak−∑ki=1aiAk−i=0f(A)=Ak−∑i=1kaiAk−i=0f(A)=A^k-\sum_{i=1}^k a_iA^{k-i}=0 。 所以 An−k+1≡An−k+1 ( mod f(A) ...

2018-03-13 09:06:12 462

原创 [ 杂题 ] Codeforces923D Picking Strings

先瞎JB推一下,得到一些结论:B→AC→AAB→AAAC→CB→AC→AAB→AAAC→CB\rightarrow AC \rightarrow AAB \rightarrow AAAC \rightarrow C ,反过来也成立,得出 BBB 和 CCC 是等价的,可以将所有 BBB 看成 CCC 。C→AC→AAC→CC→AC→AAC→CC\rightarrow AC \righ...

2018-03-11 19:39:30 273

原创 [ Manacher ] BZOJ3790

Manacher模板题#include<bits/stdc++.h>using namespace std;#define fi first#define se secondtypedef pair<int,int> abcd;const int N=100010;int k,n,m,len,cnt;int p[N],f[N];char s[N],S...

2018-03-11 16:00:37 171

原创 [ 决策单调性 分治 ] LOJ#535 花火

题解#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long ll;inline char nc() { static char buf[100000],*p1=bu...

2018-03-10 11:29:08 397

原创 [ 容斥 斯特林数 ] Codeforces715E Complete the Permutations

题解#include<bits/stdc++.h>using namespace std;const int N=510;const int P=998244353;int k,n,m,x;int nx[N],d[N];int c[N][N],p[N][N],s[N][N];int a,b,cl,bl;int f[N],g[N],h[N],Ans[N];boo...

2018-03-10 10:05:19 389

原创 [ 斯特林数 NTT ] [ Tjoi2016&Heoi2016 ] BZOJ4555 求和

题解#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=400010;const int P=998244353;int a[N],b...

2018-03-09 15:33:18 180

原创 [ 杂题 ] Codeforces946G Almost Increasing Array

如果不能删除且不是严格递增,答案就是 n−最长不下降子序列长度n−最长不下降子序列长度n-最长不下降子序列长度 。 假如严格递增,可以将 aiaia_i 减去 iii ,再求一遍 LISLISLIS 。 假如可以删除,因为删除的点后面的标号会减 111 ,所以不能直接求 LISLISLIS 。 设 f0/1,if0/1,if_{0/1,i} 表示当前是否删过点,长度为 iii 的序列尾端的最...

2018-03-07 19:10:04 464

原创 [ 分治 复杂度分析 ] [ NWERC2017 ] BZOJ5200 Factor-Free Tree

和bzoj4059一样的套路。#include<bits/stdc++.h>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p...

2018-03-07 16:12:04 295

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除