自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(148)
  • 收藏
  • 关注

转载 UOJ422. 【集训队作业2018】小Z的礼物 [min-max容斥,插头DP]

UOJ思路由于没有代码和AC记录的支撑,以下思路可能有错。看到全部取完,大概可以想到min-max容斥。由于期望的表达式里面合法方案的个数是在分母里面的,所以可以想到把它记录在状态里。然而由于我菜,一开始只想到逐列DP,于是复杂度炸了……考虑插头DP:设\(f_{i,j,S,k}\)表示当前做到\((i,j)\),轮廓线上的状态是\(S\),已经有\(k\)个取到礼物的方案,...

2019-10-02 22:06:00 214

转载 UOJ426. 【集训队作业2018】石像 [状压DP,min_25筛]

UOJ思路(以下思路是口胡,但正确性大概没有问题。)刚学min_25筛的时候被麦老大劝来做这题?结果发现这题是个垃圾二合一??简单推一下式子可以得到答案就是这个:\[\sum_{T=1}^m (f*\mu)(T)\sum_{\{a_i\le m/T \}} \prod_i [a_{x_i}\le a_{y_i}]\]其中\(f(n)=(\sigma_0(n^3))^3\...

2019-10-01 23:17:00 366

转载 UOJ449. 【集训队作业2018】喂鸽子 [概率期望,min-max容斥,生成函数]

UOJ思路由于最近养成的不写代码的习惯(其实就是懒),以下式子不保证正确性。上来我们先甩一个min-max容斥。由于每只鸽子是一样的,这只贡献了\(O(n)\)的复杂度。现在的问题转化为对于\(n\)只鸽子里面的\(c\)只鸽子,求喂饱其中一只鸽子的期望时间。我们对期望的式子差分一下,变成统计经过\(i\)秒之后\(c\)只鸽子仍然一只都没有被喂饱的概率。枚举这\(i\)秒里...

2019-09-30 22:03:00 247

转载 9.26杂题选讲

非常开心,所有代码都咕掉了/cyT1简单计数题,树状数组维护即可。T2线段树维护,如果一个区间整除某个数的时候都等价于减同一个数,那么就打上区间减法的标记。复杂度玄学,但是能过。T3把正着做换成倒着做,把操作变成减去两边的数。考虑最大的那个数,显然在它没有变化的情况下两边的数都不能进行操作,所以如果它没有变成目标状态,就肯定要给它进行操作。于是一个优先队列维护最大值就做...

2019-09-26 21:31:00 148

转载 SDOI2015做题笔记

由于我懒,并且这里面除了D2T3恶心以外都不难写,所以很多代码都没写……排序对于某一个合法的操作序列(操作序列定义为每次交换的两组数),可以随意交换顺序,仍然合法。所以对于一个操作集合,答案就加\(|S|!\)。从小往大考虑,要么不变,要么枚举变哪两个位置。变完之后显然可以相邻两个缩在一起。变的位置必须合法,只有1或2种情况。寻宝游戏就是求虚树大小,set维护。序列统计用...

2019-09-06 21:29:00 42

转载 LOJ6071. 「2017 山东一轮集训 Day5」字符串 [SAM]

LOJ思路这种计数题显然是要先把每一个合法的串用唯一的方法表示出来。(我连这都没想到真是无可救药了)如何唯一?容易想到把前缀尽可能多地在第一个串填掉,然后填第二个,第三个……如何做到这样?可以建出SAM,然后用\(nxt\)数组判断是否还能往后填。那么如何计数呢?如果从前往后DP要记录一个二进制串表示哪些字符在\(nxt\)里面,或者直接记录用了哪个SAM节点,复杂度爆炸。从...

2019-08-27 21:03:00 199

转载 LOJ2719. 「NOI2018」冒泡排序 [组合计数]

LOJ思路这题我看着题解还搞了几个小时?我也不知道自己在干啥……首先你要通过出色的分析能力得到一个结论:一个排列合法当且仅当它的最长下降子序列长度不超过2。证明?懒得写了。然后我们不管字典序的限制,先写出一个DP:\(dp_{i,j}\)表示考虑了前\(i\)个,之前最大值是\(j\),的方案数。转移就考虑下一个位置是填一个比最大值更大的数,或是填还没有填的数里面最小的数。其...

2019-08-26 11:14:00 125

转载 UOJ272. 【清华集训2016】石家庄的工人阶级队伍比较坚强 [FWT]

UOJ思路很容易想到\(O(3^{3m}\log T)\)的暴力大矩乘,显然过不了。我们分析一下每次转移的性质。题目给的转移方程是填表法,我们试着改成刷表法看看……发现好像没啥用。注意到游戏的规则是1吃0,2吃1,0吃2,也就是在\(x-y=1\pmod 3\)的时候\(x\)吃\(y\)。我们枚举\(j\),然后再枚举\(i\ominus j\)(这里减法是每一位不退位减法...

2019-08-24 12:46:00 122

转载 UOJ310. 【UNR #2】黎明前的巧克力 [FWT]

UOJ思路显然可以转化一下,变成统计异或起来等于0的集合个数,这样一个集合的贡献是\(2^{|S|}\)。考虑朴素的\(dp_{i,j}\)表示前\(i\)个数凑出了\(j\)的方案数,发现这其实就是一堆多项式用异或卷积搞起来。第\(i\)个多项式是\(1+2x^{a_i}\)。对\(1+2x^{a}\)FWT一下,发现结果就只有-1和3。为什么?根据FWT的理论,\(a_i\)...

2019-08-23 23:17:00 117

转载 LOJ2269. 「SDOI2017」切树游戏 [FWT,动态DP]

LOJ思路显然是要DP的。设\(dp_{u,i}\)表示\(u\)子树内一个包含\(u\)的连通块异或出\(i\)的方案数,发现转移可以用FWT优化,写成生成函数就是这样的:\[dp_{u}=x^{val_u}\prod (dp_v+1)\]最后答案是所有DP值的和,于是获得了朴素的\(O(nmQ)\)的做法。(中间运算全部用点值表示)显然是要用动态DP优化的,我们另外记一...

2019-08-23 23:08:00 136

转载 SqrtTree学习笔记

散步的时候yy区间最值的不同分块做法,发现单点修改\(O(\sqrt{n})\)查询\(O(1)\)的做法不是很会?于是yy了一个奇怪做法,写出来看看。考虑查询的时候两端的散点可以用前后缀最值查出来,所以只需要考虑中间的块。中间这些块似乎比较恶心,不知道怎么做。于是我们把每一个块的最值拎出来作为一个点,再分一次块,就成功地用\(O(1)\)的时间把问题变成了根号级别的子问题。于...

2019-08-22 23:17:00 250

转载 LOJ6041. 「雅礼集训 2017 Day7」事情的相似度 [后缀树,LCT]

LOJ思路建出反串的后缀树,发现询问就是问一个区间的点的\(lca\)的深度最大值。一种做法是dfs的时候从下往上合并\(endpos\)集合,发现插入一个点的时候只需要把与前驱后继的贡献算进去就可以了。另一种做法是从小到大枚举结尾,把到根的一条链全都打上自己的标记,并且如果原来有标记就更新答案,发现可以用LCT维护。本质其实差不多。代码我又傻傻地把树状数组能做的事搞成了线...

2019-08-22 14:54:00 140

转载 BZOJ3551 Peaks加强版 [Kruskal重构树,主席树]

BZOJ思路我觉得这题可持久化线段树合并也可以做我觉得这题建出最小生成树之后动态点分治+线段树也可以做还是学习一下Kruskal重构树吧……Kruskal重构树,就是在做最小生成树的时候,如果一条边\(e\)被选中了,就让那两个连通块的根都连向它,变成新的根。显然,最后会做出一个二叉树,其中叶子是点、非叶子节点是边,且边权形成了一个堆的形式。分析一下性质,发现“用不超过某个权...

2019-08-22 11:44:00 111

转载 LOJ2434. 「ZJOI2018」历史 [LCT]

LOJ思路第一眼看似乎没有什么思路,试着套个DP上去:设\(dp_x\)表示只考虑\(x\)子树,能得到的最大答案。合并的时候发现只有\(x\)这个点有可能做出新的贡献,而做出新贡献的时候必然是两个来自不同子树的国家发生战争。于是做法突然就明朗了起来:对于每个点\(x\),记\(s\)表示子树内的崛起次数、\(p\)表示最大子树的崛起次数(也有可能是\(x\)自己),那么它对答案...

2019-08-21 20:34:00 89

转载 Codeforces 1172E Nauuo and ODT [LCT]

CodeforcesZROI那题是这题删掉修改的弱化版……ZROI还我培训费/px思路按照套路,我们考虑每种颜色的贡献,然后发现不包含某种颜色的路径条数更容易数,就是删掉该颜色的点后每个连通块大小的平方和。由于每种颜色影响到的点之和是\(O(n)\)的,所以我们每种颜色分开考虑,就变成了只有两种颜色的情况。把这种颜色视为白色,其他颜色视为黑色,那么每个黑色点往父亲连边(1往一个...

2019-08-21 20:19:00 123

转载 UOJ226. 【UR #15】奥林匹克环城马拉松 [组合数学,图论]

UOJ思路我们知道关于有向图欧拉回路计数有一个结论:在每个点入度等于出度的时候,答案就是\[t_w(G)\prod (deg_i-1)!\]其中\(t_w(G)\)是以某个点为根的树形图个数。(必须确定是外向树还是内向树)(由这个公式,我们可以知道这种图下面以每个点为根的外向树和内向树的个数都是一样的,但我不会证/kk)还有一个结论,不过这题用不上:对于一个有向图,以点\...

2019-08-12 20:30:00 345

转载 Codeforces 1172F Nauuo and Bug [线段树]

Codeforces思路定义\(f_{l,r}(x)\)表示数\(x\)从\(l\)进去\(r\)出来的时候会变成什么样子。容易发现这个函数是个分段函数,每一段都是斜率为1的一次函数,并且段数就是区间长度。(可能有什么+1-1的)如果我们能在线段树维护出这个东西,那么查询的时候在线段树上拉出一些函数,依次代进去,就可以了。两个函数怎么复合呢?做一个two pointers,可以证...

2019-08-11 13:21:00 81

转载 LOJ575. 「LibreOJ NOI Round #2」不等关系 [容斥,分治FFT]

LOJ思路发现既有大于又有小于比较难办,使用容斥,把大于改成任意减去小于的。于是最后的串就长成这样:<<?<?<??<<<?<。我们把一段连续的<称作一条链。如果枚举大于号变成什么,那么最后的答案很容易算,就是\(\frac {n!}{\prod len!}\)。\(dp_i\)表示前\(i\)个位置分成若干条链,带上容斥系数...

2019-08-09 19:03:00 239

转载 ZROI2019暑期集训 Day4

由于我太菜,这篇文章咕了……转载于:https://www.cnblogs.com/p-b-p-b/p/11324438.html

2019-08-08 23:05:00 110

转载 CF gym 100962D Deep Purple [后缀树,树链剖分,线段树]

Codeforces思路感觉这个离线的思路好神仙啊qwq对于每个询问\([l,r]\)其实就是要求\(p_{max}\),使得\(lcs(s[1,p],s[1,r])>p-l\),也就是\(lcs(s[1,p],s[1,r])+l>p\)。首先把询问离线按\(r\)排序,然后从右往左扫,每次处理之前已经被加进去的询问,看当前位置是否能被作为\(p\),然后把已经处...

2019-08-07 23:48:00 290

转载 Codeforces 1137F Matches Are Not a Child's Play [LCT]

Codeforces很好,通过这题对LCT的理解又深了一层。思路(有人说这是套路题,然而我没有见过/kk)首先发现,删点可以从根那里往下删,非常难受,所以把权值最大的点提为根。然后考虑\(x\)什么时候会比\(y\)先被删掉:当且仅当\(x\)子树内权值最大值比\(y\)子树内权值最大值更大,而且\(x\)不是\(y\)的祖先。所以给每一个点记另外一个权值:子树内最大值。那...

2019-08-07 11:22:00 118

转载 2019暑期金华集训 Day7 分治

自闭集训 Day7分治主定理由于我沉迷调题,这个地方没听课。某些不等式咕了nth_element使用快速排序的思想,选一个中间点,看左右有多少个。期望复杂度\(O(n)\)。首先把一个序列分成5份,每份大小\(n/5\),叠成一个矩阵,对每一列进行排序。现在中间一行就是每一列的中位数,递归下去求它的中位数。然后把中位数比他小的列放左边,比他大的放右边。于是我们知道...

2019-08-05 20:13:00 213

转载 2019暑期金华集训 Day7 动态规划

自闭集训 Day7动态规划LOJ6395首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可。然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数的最小值,然后就获得了\(O(n^3)\)的DP。不妨每个点的度数都减1,那么总度数就变成\(n-2\)了。考虑原来\(i\)的作用是什么:要限制选的点数不能超过\(n​\)。此时我们...

2019-08-05 20:11:00 137

转载 2019暑期金华集训 Day6 杂题选讲

自闭集训 Day6杂题选讲CF round 469 E发现一个数不可能取两次,因为1,1不如1,2。发现不可能选一个数的正负,因为1,-1不如1,-2。hihoCoder挑战赛29 D设\(f(x)\)表示最后一个数小于等于\(x\)的答案,从左往右加入数并维护\(f(x)\)。加入\(A\)的时候\(f(x)\)要加上\(|x-A|\),再对\(f(x-1)\)取min。...

2019-08-05 20:10:00 110

转载 2019暑期金华集训 Day6 计算几何

自闭集训 Day6计算几何内积内积不等式:\[(A,B)^2\le (A,A)(B,B)\]其中\((A,B)\)表示\(A\cdot B\)。(好像是废话?)叉积\[A\times B=|A||B|\sin \theta\]二维叉积:\(A\times B=x_1y_2-x_2y_1\)。三维叉积:\[A\times B=\left| \begin{m...

2019-08-05 20:10:00 148

转载 2019暑期金华集训 Day5 树上数据结构

自闭集训 Day5树上数据结构前置知识点分治边分治树链剖分LCTTop TreeLCT时间复杂度线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查询可以缩点,那么访问的区间数是均摊\(O(1)\)的。(??)所以用splay维护LCT是一个log,而线段树维护就是两个log。捉迷藏边分治多好,干什么点分治……每个点开个堆维...

2019-08-05 20:09:00 143

转载 2019暑期金华集训 Day5 生成函数

自闭集训 Day5生成函数一般生成函数无脑地把序列变成多项式:\[\{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n\]形式幂级数生成函数是一种形式幂级数。我们不关心这个函数的具体的取值,只关心多项式的系数。在需要的时候可以把\(x​\)当成任意值。例题求\(\{n^2\}\)的生成函数。这个……只要知道\(\{{n+k-1\choose...

2019-08-05 20:08:00 112

转载 2019暑期金华集训 Day3 字符串

自闭集训 Day3字符串SAM考虑后缀树。SAM的parent树是反串的后缀树,所以后面加一个字符的时候相当于往串前面加一个字符,恰好多出了一个后缀。于是可以以此来理解SAM。每一条路径对应原串的一个子串。每一个终止节点对应一些后缀。所有到同一个点的路径对应的子串互为后缀,长度连续。parent树是反串的后缀树。SAM可以用来构造SA。(???)回文树一个串的本质...

2019-08-05 20:07:00 156

转载 2019暑期金华集训 Day3 图论

自闭集训 Day3图论NOI2019 D2T1没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\)。也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集(???)。POI 2014/2015 某题类似于GDOI2019,线段树或者堆直接做。Gym101372 E首先肯定要缩点。给每个点赋一个随机权值,然后把每一个点的权值更新成能到...

2019-08-05 20:06:00 269

转载 2019暑期金华集训 Day2 线性代数

自闭集训 Day2线性代数高斯消元做实数时,需要找绝对值最大的作为主元,以获取更高精度。在欧几里得环(简单例子是模合数)意义下也是对的。比如模合数意义下可以使用辗转相除法消元。欧几里得环:对于任意\(a,b\),都可以定义\(a=qb+r\ \ (|r|<b)\),于是可以辗转相除。(显然,多项式环也是欧几里得环)逆矩阵方法与高斯消元类似,左边摆一个原矩阵,右边摆一个...

2019-08-05 20:02:00 239

转载 2019暑期金华集训 Day1 组合计数

自闭集训 Day1组合计数T1\(n\le 10\):直接暴力枚举。\(n\le 32\):meet in the middle,如果左边选了\(x\),右边选了\(y\)(且\(x+y\le B\)),那么对答案的贡献就是\[{B-x-y+n-1\choose n-1}\]根据范德蒙德恒等式\[{a+b\choose n} =\sum_{i=0}^n {a\choo...

2019-08-05 20:00:00 145

转载 2019暑期金华集训 Day1 数据结构

自闭集训 Day1数据结构CF643G用类似于下面的方法,搬到线段树上。如何合并两个集合?先全部放在一起,每次删掉最小的\(cnt_i\),然后把其他所有的\(cnt\)都减去\(cnt_i\),直到还剩下\(k\)个。\(O(n)\)众数如果众数出现次数大于\(n/2\),那么搞一个\(cnt\)和一个\(ans\)。从左往右扫,如果与\(ans\)相同那么\(++cnt\...

2019-08-05 19:58:00 110

转载 Codeforces 704E Iron Man [树链剖分,计算几何]

Codeforces这题……真是搞死我了……好不容易下定了决心要不颓废,要写题,结果一调就调了十几个小时……思路我们发现在树上做非常不舒服,于是树链剖分之后一次在重链上的移动就可以看做是在dfs序上移动,也就是在序列上走。于是把时间作为\(x\)轴,dfs序作为\(y\)轴,那么一次移动就可以看做一条线段。我们就要找所有线段里面最早相交的交点。这是一个经典问题。我们在\(...

2019-08-03 11:23:00 168

转载 K-D Tree学习笔记

用途做各种二维三维四维偏序等等。代替空间巨大的树套树。数据较弱的时候水分。思想我们发现平衡树这种东西功能强大,然而只能做一维上的询问修改,显得美中不足。于是我们尝试用平衡树的这种二叉树结构,做更高维的事情。继续沿用平衡树的左儿子比自己小、右儿子比自己大的形态。这时发现,如果小于号定义得不好,那么做高维询问的时候就很难做。发明者想到了这样一个方法:我们每过一层就划分一次...

2019-07-26 21:15:00 95

转载 2019.7.23模拟赛

T1 序列写过的第一个迭代加深搜索,自然在考场上是想不出来的qwq首先枚举答案,然后有一个核心函数:估价函数,用来估计离终点还有多远。为了答案的准确性,估价函数\(g(x)\)和真正的距离函数\(f(x)\)需要满足\(g(x)\le f(x)\),同时为了速度,\(f(x)\)和\(g(x)\)需要尽量接近。在这题里面,我们注意到每换一次最多只会改变一对相邻数之差的绝对值,所以...

2019-07-23 15:22:00 76

转载 2019.7.20模拟赛

T1 串签到题。看完样例就很容易猜到这题答案多半就是\(\{-1,1,2\}\)里面的,然后感性理解理性证明了一通,发现好像的确是这样。如果串形如\(aaaaaaa,aaaabaaaa,abababababa\),那么直接无解。如果串不是回文串,就是1。剩下的全都是2。T2 变量不算难的最小割,不过我网络流实在太差,只有在省选前补了一下,所以并没有做出来。首先把\(w_i,...

2019-07-20 20:59:00 99

转载 2019.7.19模拟赛

T1 树见到树计数、度数,自然想到prufer序列。想个DP:设\(dp_{i,j,k}\)表示前\(i\)个点,放了\(j\)个点在树里面,一共在prufer序列里面占了\(k\)个位置,的方案数。随便转移就行了。#include<bits/stdc++.h>using namespace std;//clock_t __t=clock();#define re...

2019-07-20 16:13:00 98

转载 洛谷P2305 [NOI2014]购票 [DP,树状数组]

传送门思路显然是树形DP,显然是斜率优化,唯一的问题就是该怎么维护凸包。套路1:树上斜率优化,在没有这题的路程的限制的情况下,可以维护一个单调栈,每次加入点的时候二分它会加到哪里,然后替换并记录,等从这个点回溯上来的时候再撤销。套路2:有路程限制时,不能简单替换,因为你可能会替换掉一个下面有用的点,然后WA掉。解决方法是用树状数组维护后缀单调栈,同样要支持撤销。听着很简单,但代...

2019-07-01 16:41:00 118

转载 决策单调性优化DP学习笔记

用途废话,当然是在DP式子满足某些性质的时候来优化复杂度……定义对于\(j\)往大于\(j\)的\(i\)转移,可以表示成一个关于\(i\)的函数\(f_j(i)\),也就是\(dp_i=\max/\min\{f_j(i)\}\)。若是取\(\max\),并且在某一个地方\(f_j(i)\)从下面跑到了\(f_k(i)\)的上面(如果加入\(f_j(i)\)这个函数时本来就在\(...

2019-06-27 18:49:00 184

转载 5.9杂题选讲

连补两个杂题选讲爽歪歪。CF1083C Max Mexhttps://www.cnblogs.com/p-b-p-b/p/10661009.htmlAGC002E Candy Piles首先把每堆糖果想象成一个柱子,然后从左到右高度递减。那么每次就有两种选择:删掉下面一行或是删掉左边一列。这么来想象:有一个筹码放在左下角,每次向右或向上移一格。于是每一个格子都有一个胜负状态...

2019-06-26 20:43:00 109

空空如也

空空如也

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

TA关注的人

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