自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 2020赛季CF训练记录

cf id:ILLLZKQF 场次:205.10“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 solved:6/10 rank:37 补题:6/1005.10AtCoder Beginner Contest 167 solved:5/6 rank:422 补题:5/6...

2020-05-11 10:04:04 242 1

原创 2020寒假训练汇总

cf id:ILLLZKQF01.21Educational Codeforces Round 41 (Rated for Div. 2) solved:5/7 rank:94 补题:7/701.22Codeforces Round #615 (Div. 3)solved:5/6rank:251 补题:6/601.29Educational Codeforc...

2020-01-21 21:42:35 615 2

原创 【AHOI2013】差异

后缀自动机想到了其实挺简单的首先对于后缀的前缀,我们不太好维护,所以我们可以考虑将字符串倒过来,这样就变成了维护前缀的后缀!那么我们自然就想到了后缀自动机然后我们观察这个式子发现恰好是是求parent树上任意两点路径和,那么我们在parent树上算一下每条边的贡献就好了。对于一条边,他的贡献就是(len[x]-len[fa[x]])*si[x]*(n-si[x])现在我们来...

2019-12-22 21:09:52 28

原创 【NOI2018】你的名字

后缀自动机+主席树为这种精妙的字符串题调上一天真的是件很幸福的事呢!题意转化过来之后就变成:给一个串S,有若干个询问,每次询问给字符串T,整数 L,整数 R,询问有多少个子串k使得k是T的子串但不是S[L]....S[R]的子串1.首先我们考虑这个问题的弱化版本,每次询问的L≡1,R≡len(S) ——68pts对于T的每个[ 1 , i ]的前缀子串,我们假设其后缀在S中...

2019-12-17 22:42:46 61

原创 【HEOI2015】最短不公共子串

后缀自动机+序列自动机分别建出A,B两个串的后缀自动机和序列自动机,然后因为后缀自动机和序列自动机都是DAG,所以在上面dp一下就可以啦dp[i ][ j ]表示在第一个状态的自动机上匹配到 i 号节点,在第二个状态的自动机上匹配到 j 号节点时 还需要添加dp[i ][ j ]个字符才能使两串失配(满足条件) ,这个记忆化搜索一下就好了复杂度:O(N+N*N)#inclu...

2019-12-16 21:46:36 31

原创 【SDOI2016】生成魔咒

后缀自动机入门题因为后缀自动机上无相同字符串,所以每次添加一个字符之后增加的本质不同的字符串的个数就是len[x]-len[fa[x]]#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <map>using ...

2019-12-11 16:11:56 30

原创 【HAOI2016】找相同字符

后缀自动机入门题分别对两个串建后缀自动机,然后把endpos的大小算出来,最后在两个后缀自动机上一起dfs一遍并且算答案。#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;const int max...

2019-12-11 11:28:00 23

原创 【NOI2015】品酒大会

后缀自动机首先考虑第一问: 我们先将后缀自动机建出来,考虑每个节点,它出现的次数肯定是endpos的size(我们记为num),那么选取这个节点的串的方案数即为C(num,2)=num*(num-1)/2,所能贡献的长度区间为这个节点对应的所有串的长度即[ len[fa[x]]+1 , len[x]+1 ],这里可以差分一下,最后前缀和就是答案了。然后考虑第二问: 我们...

2019-12-11 10:33:19 31

原创 Educational Codeforces Round 76 G Divisor Set

Divisor Set结论+生成函数优化dp+NTT+启发式个人感觉这道题非常好!非常精妙!1.首先我们要知道一个结论:我们把这个数的约数按拥有的质因子数(可重)划分,第i类约数表示有i个可以重复的质因子然后我们从每一级的约数a向它的下一级约数b(a%b==0 且b只比a少一个质因子)连边,那么这个图显然是个DAG显然如果我想找最大的可选的约数,那么从n级到1级的任意...

2019-11-26 17:05:46 110

原创 bzoj1057

单调栈对于每个位置(i,j)维护一个向下的最长的合法长度v[i][j]然后对于某一行来说问题就转换为:对于一个数列a[i],找一段连续的区间[l,r]是的(r-l+1)*min(l,r)这就是一个经典的单调栈问题了复杂度:O(n*m)/**************************************************************Pr...

2019-11-06 11:53:27 43

原创 bzoj1084

对于m=1的情况:dp[j][i]表示选到i位,选了j个的最优值对于m=2的情况:dp[l][i][j]表示第一列选到了i第二列选到了j选了l个的最优值/**************************************************************Problem: 1084User: syh0313Language: C++...

2019-11-06 10:58:37 23

原创 bzoj3524

主席树当时疯狂在想树套树+分块,自闭一下午结果一个正常的主席树就切掉了我太难了~#include <iostream>#include <cstdio>#include <cstdlib>#include <map>#include <algorithm>#define lch a[n].lc#define r...

2019-10-16 17:10:33 32

原创 bzoj1901

树状数组套权值线段树单点修改logn 然后树状数组将序列分成了log段 每段都暴力修改 这样一次修改的复杂度是log^2的然后查询就将这个[1,r]的所有权值线段树之和减去[1,l-1]的所有权值线段树之和,在这个值上面二分就可以了#include <iostream>#include <cstdio>#include <cstdlib>#in...

2019-10-16 12:52:12 30

原创 bzoj2654

wqs二分首先二分一个白边所加的权值然后根据当前MST(若黑白边权值相同则优先选白边)中白边的数目二分若白边数过多,则增加所加的值若白边数过少,则减小所加的值/**************************************************************Problem: 2654User: syh0313Lang...

2019-09-25 15:48:20 86 6

原创 bzoj4516

后缀自动机板子题一开始把后缀自动机封装了直接ce两发orz本质不同的子串个数就是所有len[x]-len[fa[x]]的累加和然后insert一个字符算一次复杂度:均摊O(n) /************************************************************** Problem: 4516 User...

2019-09-17 16:33:29 50

原创 bzoj4025

时间线段树+启发式合并并查集启发式合并并查集只需要记录下合并前的转态,合并的时候按秩合并,然后根据之前记录的状态回退就好了我的代码常数有点大(早上交T了,晚上就卡着过了)/**************************************************************Problem: 4025User: syh0313La...

2019-08-14 20:37:08 77

原创 bzoj1861

splay1操作:从平衡树中取出这个数,把rank改成最小,再insert进去2操作:从平衡树中取出这个数,把rank改成最大,再insert进去3操作:取出x和它相邻的数(1是右相邻,-1是左相邻,0直接continue)4操作:查询x的rank5操作:查询rank=x的数/*************************************************...

2019-07-28 17:31:32 50

原创 bzoj2286

虚树如何构建虚树:step1:将询问点按dfs序排好,root节点作为非关键点先入栈step2:判断当前要加的点a[i]和sta[top]的关系 我们令lc=lca(a[i],sta[top]); (1).如果lc在栈sta中并且就是栈顶的话,直接将a[i]加入栈 (2).如果lc在栈sta中但是不是栈顶的话,一直弹...

2019-07-17 23:27:00 46

原创 bzoj2152

点分治按重心分治,每次暴力统计x下所有子树和的答案,分治进子树的时候减去该子树中的贡献即可复杂度:nlogn/**************************************************************Problem: 2152User: syh0313Language: C++Result: Accept...

2019-07-15 22:04:01 73

原创 bzoj1935

树状数组将询问差分成四个矩阵之后就变成一个二维偏序问题,用树状数组搞一搞就好了 /************************************************************** Problem: 1935 User: syh0313 Language: C++ Result: Accepte...

2019-07-02 17:39:48 101

原创 bzoj1176

CDQ分治裸题单点加询问子矩阵和因为矩阵过大,所以树套树肯定是要跪的那么我们考虑将子矩阵差分了,那么就是变成每次询问(0,0) 到(x,y)这个矩阵的和了那么直接cdq分治就好了 /************************************************************** Problem: 1176 Use...

2019-07-02 15:58:07 111

原创 bzoj2733

启发式合并权值线段树说实话我写的是一个自己yy的东西首先我对于初始每个联通块开了一个权值线段树然后对于每个联通块维护了一个vector表示里面有哪些点对于B操作每次启发式合并vector+权值线段树对于Q操作在该联通块所属的权值线段树上二分即可最后注意bzoj不能用auto /********************************************...

2019-07-02 13:09:35 42

原创 Codeforces Round #566 (Div. 2)

A.Filling Shapes 数学题#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <cmath>#include <algorithm>...

2019-06-12 22:44:27 119

原创 Codeforces Round #565 (Div. 3)

A.模拟即可,最多不会超过3logn次#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <cmath>#include <algorithm>usin...

2019-06-10 20:54:55 85

原创 Codeforces Round #563 (Div. 2)

A.排序即可#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>using namespace std;const int maxn=10010;int n;long long a[maxn],sum[maxn];int main()...

2019-06-07 14:26:44 55

原创 cf678F(时间线段树+凸包+三分)

解法:时间线段树+凸包+三分一开始本来想的是:cdq分治+李超线段树(因为之前学长在湘潭ccpc的时候给我嘴过一个类似的)后来发现我的做法要对于每个分治区间开一棵李超线段树肯定mle以时间为轴建立线段树,表示某个点(x,y)存在的时间对于线段树的每个节点上的若干(x,y)维护一个上凸壳;对于每个询问,从根一路访问到所在的叶子节点,对于途中每经过的一个节点,在其上的凸壳上三分一个...

2019-05-30 14:47:12 133

原创 cf1111D

dp好题!首先我们可以求出所有字母都在一侧的方案数dp[n/2];假设左半部分为集合S,右半部分为T,那么假设选出的a,b已经同属一个集合时S中可以乱放,T中也可以乱放那么S中乱放的方案数有:(n/2)!/(num[i]!*num[j]!*.....) (i...j属于S); 1同样T中乱放的方案数有:(n/2)!/(num[i]!*num[j]!*.....) (i...j...

2019-05-28 16:26:39 60

原创 2011 WorldFinal Machine Works

CDQ分治+斜率优化dp首先考虑dp,有dp[i]表示到第i天所获得的价值最大是多少(机器卖出),所以最后的答案就是dp[n+1]然后推一推式子:dp[i]=max(dp[j]+(d[i]-d[j]-1)*g[j]+r[j]-p[j])设当j>k时从dp[j]转移会比从dp[k]转移更优,那么有:dp[j]+d[i]*g[j]-(d[j]+1)*g[j]+r[j]-p[j]&...

2019-05-19 21:21:23 84

原创 bzoj1568

李超线段树李超线段树的每个节点维护一个区间,并且用标记记录当前区间上的最优线段的标号对于add一条新的线段:1.该区间无标记,则打上这条线段的标号2.若新线段在该区间上的左右端点的y值都>=原标记线段在该区间上的左右端点的y值,则新线段更优,直接覆盖3.若新线段在该区间上的左右端点的y值都<=原标记线段在该区间上的左右端点的y值,则原线段更优,直接return4...

2019-05-06 22:23:09 79 2

原创 bzoj3211

势能线段树对于一个数非零n一直执行开根号,那么log(logn)次就会变成1所以每个数最多被修改log(logn)次对于n个数最多只会修改nlog(logn)次,所以直接暴力改到之间全为1或0就好了 /************************************************************** Problem: 3211 ...

2019-05-06 14:44:46 111

原创 bzoj3262

树套树/CDQ分治太弱了以至于不会写CDQ分治这道题其实树套树还是很好写的首先离线排序一维之后就变成二维偏序,就可以转换成平面单点+,询问矩阵和/**************************************************************Problem: 3262User: syh0313Language: C++...

2019-05-06 11:24:02 49

原创 bzoj5334

线段树因为模数不一定是质数,所以不能用逆元做那么就用线段树维护一下每个位置要乘的数(2操作或已经除掉的位置就是1)另外注意下线段树加数时记得先模一下模数,不然会爆longlong/**************************************************************Problem: 5334User: syh0313...

2019-05-05 19:13:59 36

原创 bzoj1798

线段树基础题看到有大佬写了splay.....orz%%二维标记下传,注意下传的顺序就好了/**************************************************************Problem: 1798User: syh0313Language: C++Result: AcceptedT...

2019-05-05 16:14:06 45

原创 bzoj1208

权值线段树这题应该是平衡树,然而可以用权值线段树代替开2棵权值线段树分别表示有哪些权值的人和有哪些权值的宠物然后查下前驱和后继就好了/**************************************************************Problem: 1208User: syh0313Language: C++...

2019-05-05 14:28:26 62

原创 bzoj2653

二分+主席树个人感觉这道题非常好,思维难度高,代码好写(然而自己写的时候神志不清,转态全无qwq)首先要知道一个关于中位数的基本套路,将大于等于它的赋值成1,小于它的赋值成-1然后通过区间和就能找出中位数了对于本题来说:首先显然答案满足单调性,因为二分的是第k大的数,所以1,-1这个序列和肯定是单调变化的其次我们考虐将[a,b],[c,d]区间转化成[a,b],(b,c),...

2019-05-05 00:12:48 47

原创 bzoj2729

组合数学题考虑两老师之间只有男生(情况1)和只有一个女生(情况2)情况1:A(n,n)*A(n+1,2)*A(n+3,m);情况2: A(n,.n)*C(m,1)*A(2,2)*C(n+1,1)*A(n+2,m-1);/**************************************************************Problem: 2729...

2019-05-02 15:11:41 36

原创 bzoj1213

高精度开根二分一下就ok了(一开始人傻了写了三分qwq)/**************************************************************Problem: 1213User: syh0313Language: JavaResult: AcceptedTime:10232 ms...

2019-05-02 14:27:39 22

原创 bzoj1236

数学+高精度题求导可知每份是3的时候最后乘积最大 /************************************************************** Problem: 1263 User: syh0313 Language: Java Result: Accepted Time...

2019-05-01 17:40:35 35

原创 bzoj1876

/**************************************************************Problem: 1876User: syh0313Language: JavaResult: AcceptedTime:1860 msMemory:18136 kb****************...

2019-05-01 17:06:57 25

原创 bzoj2822

练一练java大数/**************************************************************Problem: 2822User: syh0313Language: JavaResult: AcceptedTime:920 msMemory:19596 kb******...

2019-05-01 15:13:47 35

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