自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 反省——关于csp-s模拟50

本人于搜索csp-s模拟49题解时,有意识地点开了一篇关于csp-s模拟50T2的题解,并知道了题解是二维前缀和以及四维偏序。更重要的是,那篇博客说有解法二,叫二维莫队。于是我上网搜索二维莫队,结果第一篇博客就是那道原题。然后我将二维莫队与普通莫队分块的区别,如何$O(n)$更新答案都看了。我在考场上只是确定了指针移动的方向以及贡献的加减,然后打了个程序测了最优块长。事后...

2019-09-23 07:26:00 147

转载 咕着的题(慢慢补吧)

18T3,19T2,20T3,21T2T3,22T3,24T2,25BT2,25AT1T2T3,28T2T3Recent Goal : Segment Tree : The Book of Moutain and Sea,Watching the CPU,Sort转载于:https://www.cnblogs.com/Yu-shi/p/11354370.html...

2019-08-14 20:04:00 102

转载 BZOJ1941Hide and Seek

做KD_tree的入门题。问题就是求出任意一个点距其他点的最大曼哈顿距离和最小曼哈顿距离差,然后对其取min即可。这个东西就是KD_tree可以轻松解决的了。下面总结一下做KD_tree(不带修)的心得。KD_tree本质上是一颗搜索树,实际上将所有可能的决策集合不重不漏的划分了出来,而我们要做的就是剪枝。其实建KD_tree的过程就是将一个平面划分成若干小块,即子问...

2019-08-04 18:44:00 406

转载 数学与树学(娱乐向)

数学:背景:在一次模拟赛中,Deepinc、DuanYue和Remarkable分别用了三个式子表示了同一个东西,而他们的式子目测毫无关系,而且是从不同的角度分析的,导致他们的做法肯定是正确的,但却各不相同,我们来看一下。Deepinc:$ans=\frac{\sum\limits_{i=1}^{m}(i^k-(i-1)^k)*w[i]}{m^k}*(n-k+1)$DuanY...

2019-07-30 16:28:00 161

转载 树状数组(模板)

晚上脑子不清醒,正巧最近搞数据结构,写点基本操作,树状数组最短,先开它。#include<bits/stdc++.h>#define lowbit(x) (x&(-x)) //树状数组的灵魂using namespace std;int tr1[15000],tr2[15000],tr3[15000];// tr1:单点改,区间查 ...

2019-07-26 21:41:00 75

转载 BZOJ2716天使玩偶

不会KD-tree怎么办?CQD硬搞。建立正常的平面直角坐标系,首先我们只考虑在目标点左下角的点对目标点的贡献,由于左下点的横纵坐标都小于目标点,那么曼哈顿距离就可以化简了,绝对值去掉后,得到$x2+y2-(x1+y1)$,那么我们的目标就转化为了求横纵坐标以及时间轴都小于目标查询点的更改点所作出的贡献,这是一个三维偏序问题,我们在树状数组中维护x+y的最大值,进而即可更新答案。...

2019-07-26 20:00:00 1707

转载 BZOJ3262陌上花开

三维偏序的模板。当然各种树套树都可以搞,这里用CDQ分治弄一下。首先利用排序使第一维有序,然后利用cdq函数开始执行类似归并排序的操作,由于左区间的第一维一定小于右区间的第一维,所以我们在归并过程中直接比较第二维,然后利用树状数组维护第三维,使之满足三维偏序,直接统计答案,执行一次cdq操作即可。#include<iostream>#include&l...

2019-07-26 19:48:00 157

转载 BZOJ3781小B的询问

莫队裸题。维护的时候有的打法是利用(a-1)^2==a^2-2*a+1转移,也可以,但是通用性不太够。下面的打法就是先把这个点的贡献删掉,然后更新这个点,再把这个点的贡献加回来,这种解法更加通用一些。剩下的是我分块的时候i/part打成n/part了,TLE30,改了就A了,还是要注意对拍呀。#include<bits/stdc++.h>using...

2019-07-24 21:33:00 78

转载 BZOJ3236作业

这东西是个应用为O(logn)的莫队。正常莫队的updata函数转移是O(1)的,可这个题时间非常宽泛,可以套两个树状数组,那两个东西很好维护,第一个直接普通权值树状数组维护,第二个开一个桶,记录当前区间内某个数的出现次数,当从0->1时,第二个树状数组+权,1->0时,第二个树状数组-权,别的情况不用管,这样就可以用莫队轻松搞掉了。#include<b...

2019-07-24 21:22:00 122

转载 Bsgs模板

模板最主要的是自己看得舒服,不会给自己留隐患,调起来比较简单,板子有得是,最主要的是改造出适合你的那一套。 ——mzz#include<bits/stdc++.h>#define int long long using namespace std;const int mod=13331;struct Hash_Ta...

2019-07-24 06:40:00 92

转载 HNOI2008明明的烦恼

其实挺难的,对prufer得有一定的理解。首先我们知道prufer序列最多有n-2个点,其余知道度数的点出现的次数是di-1,定义prufer序列中剩余出现次数sum=n-2-∑(di-1)。这样我们可以近似于我们已经知道所有点的出现次数,用prufer的公式$\frac{(n-2)!}{\prod_{i=1}^n(d_i-1)!sum!}$,其中di是已知的度数,不一定由1到n,那...

2019-07-24 06:25:00 67

转载 BZOJ1211树的计数

裸的prufer结论。给个小链接prufer序列 ,里面有一个性质4就是本题答案,严谨证明可以上网找一找,如果从多组组合角度理解也可以。剩下的就是特判,n==1时,du==0,1个,du!=0,废了。有du==0,废了。度数和大于(还是不等于来着?)2*(n-1),废了。拿到67分……。接着就是求那个式子了,我有一套O(n)拆一个阶乘的理论。那这个就是O(n^2)了呗。 ...

2019-07-23 21:39:00 86

转载 Prufer序列

网上的prufer写的清晰的很多,看本博客之前看看别的博客,这篇主要写一些没有具体解释的内容。1.prufer序列中某个编号出现的次数就等于这个编号的节点在无根树中的度数-1。 因为在成生prufer序列时,每删掉链接于该节点的一条边时,这个节点进入序列,知道它本身变成叶子,还剩下一个度,然而被干掉以后留下的不是它本身,所以只出现du-1次。也正因如此,我们会给无根树剩下两个...

2019-07-21 21:43:00 109

转载 AHOI2012树屋阶梯

这玩意不是卡特兰的经典模型吗……我们设方案数为f(i),则f(0)=1,f(1)=1,f(2)=2,f(3)=5,(其实到这里你再手模一个就出来了)我们把左上角的矩形删掉,则会变成下方和右方两个更小规模的问题(如果没有就是f(0)喽),拿样例举例f(3)=f(2)的一种情况*f(0)+f(2)的另一种情况*f(0)+f(1)*f(1)+f(0)*f(2)的一种情况+f(0)*f(2)...

2019-07-21 20:32:00 101

转载 HNOI2009有趣的数列

首先next_permutation打表,发现Cat规律。其实考试的时候这么做没什么问题,而且可以节省异常多的时间,那么现在我们来想一下why。首先我拿模型法解释一下,我们把2n个数看成2n个人,既然分成奇数和偶数两种比较方式,那么我让他们站成两排,每一排有n个人,这n个人的身高递增,且,第二排的人必须高于第一排,那么这个问题就变成了:有2n个身高互不相同人站成两排,每排n人...

2019-07-21 20:20:00 93

转载 BZOJ3907网格

这东西是拿Cat思想搞得组合数学。首先做这个需要会用网格法或折线法分析Cat的$C_{2n}^n-C_{2n}^{n-1}$是怎么来的。网格法:假如没有限制,从(0,0)到(n,n)的方案数为$C_{2n}^n$,就是一共有2n次操作位置(向右或向上),我们把向上走的操作插入这些位置即得上式,上面的黄线是当我们走到不合法情况时所碰到的第一条线,然后最终我们会走到(n,n)这个...

2019-07-21 19:06:00 145

转载 矩阵快速幂的模板

以前打的矩阵幂真是丑的要死,现在比以前强了一点,重载运算符能理解一些了,对于矩阵乘认识也深了,码一小份模板。#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<cstdio>#include&l...

2019-07-17 21:18:00 70

转载 POJ2942Knights of the round table

这题第一次做的人一般是颓题解的。首先我们转化一下问题,既然厌恶的人不能一起出席,是一种不传递关系,我们构建补图,这样补图的边表示两个骑士可以同时出席。此时,由于只能有奇数个人参加,则我们要找出奇环,奇环内的人是可以同时参加的,而链上的是不可以的(想想为什么),而且根据题意,这样建图后的孤岛点是废的。所以缩vDcc(点双)的时候不用管他。为什么要缩点双呢?因为vDcc有这样一个性质...

2019-07-17 19:52:00 114

转载 BZOJ1706奶牛接力跑

这个东西思路还是不错的。解法就是把矩阵幂的加法改成取min,乘法改成加法就好,和floyed是一样的。这样的话,矩阵操作一次就相当于松弛了一次最短路。建矩阵的过程也比较简单,可以离散化,当然下面有另一种更优秀的打法,可以借鉴一下。#include<iostream>#include<algorithm>#include<cmath...

2019-07-17 18:53:00 201

转载 HNOI2012矿场搭建

做完Mining Your Own Business后觉得这个题没什么意思了,数据范围小的连边数不清空都能A。题解直接看这篇吧。做题的经历也挺……对吧。#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include&l...

2019-07-17 18:43:00 175

转载 SCOI2009迷路

当初学矩阵幂的时候弃掉了,那时候只会用矩阵优化递推,碰到这种图论的瞬间躺地。昨天听学长的课,有一道例题,在边权为一的图上求从某点到某点的路径方案数,只要对邻接矩阵跑qpow就完事了。于是自己画了个小图,手跑矩阵,发现是真的,开始思考why。其实矩阵幂感觉和floyed很像,c[i][j]=∑a[i][k]*b[k][j],k就像是floyed中的断点,每次进行一次操作就好像走...

2019-07-17 18:39:00 116

转载 SNOI2017炸弹

这个东西其实我是不太会的……但是勉强卡过去了。首先肯定是建有向图,然后求每个节点能访问的节点个数,最裸的打法就是按照题意枚举建边然后tarjan缩点,用bitset记录一下访问节点,但是bitset开不了那么大,只能拿到50%的分,至于开数组枚举我没有试,目测高不了多少。然后思考这样一个问题,我建的那么多边真的有用么。于是只建离他最近的两个点的边,然后直接topsort统计ans...

2019-07-15 19:00:00 147

转载 tarjan进阶

模板向。以前学的scc已经差不多可以倒着打了。求scc和缩点还是比较好搞的(当然,必经点和边确实没学)。现在学一学求eDcc和vDcc的tarjan。求eDcc,只要学会求桥,然后dfs染色即可,至于缩点就是枚举每条边然后新建图。桥的判定要low[y]>dfn[x],因为只有这样才不能回到dfs树在x以上的位置。而且由于一些重边问题,tarjan开第二参量,确定lo...

2019-07-14 10:27:00 93

转载 BZOJ3331压力

码量略大。题意就是求路径必经点。tarjan缩点,所有的非割点只有是起点终点时才必经,直接开个ans数组就OK了。至于割点,因为缩完点之后的图是vDcc和割点共同组成的,而且题目说连通,那就是棵树,直接树上差分,最后统计信息,输出时输出割点的val即可。#include<iostream>#include<algorithm>#in...

2019-07-14 09:31:00 205

转载 BZOJ2208连通数

还是挺简单的tarjan。判断时可能重复,直接bitset搞定。首先tarjan缩点,每个scc的内部肯定能互相到达,更一下,而且一个scc里的各个点的贡献肯定是一样的,topsort,更新答案就可以了,用bitset的count成上scc大小即可。据说数据很水,大约O(n^3)可过,但是我看了看,没缩点,直接dfs,细节比较多,略烦,上述算法比较长,但是脑量比较小。还是比较...

2019-07-14 09:24:00 74

转载 HDU3844Mining Your Own Business

目测某年HNOI,(其实这个题是2011年的WF,hdu上找到的,HNOI2012那个中文题在bzoj和loj上都有,叫矿场搭建,题意几乎一样,数据比较弱,交这份代码也能A)。先讲题解,然后说一些有(e)趣(xin)的事情。首先肯定是个点双,先求一下点双。然后我们分析一下。当这个点双里没割点时(一个大号的孤立点双),那么我们要建两个特殊节点,因为一个塌了可以去另一个,对第...

2019-07-13 21:11:00 120

转载 BZOJ1718分离的路径

边双题。求的就是最少加几条边可以使一个图变成边双联通图。首先tarjan求一下边双,缩完点变成一颗树,统计度数为1的点(无根树的叶子),把这个数算出来,设为x,则ans=(x+1)/2。这个可以怎么理解呢?先分一下类,当x为偶数时,想让叶子节点边双联通就好像接到一条边,使之在一个环上(简单环肯定边双应该没问题吧),那么,我们任选两个叶子,将他们接到lca上就可以了,切路径上任...

2019-07-13 20:20:00 169

转载 BZOJ1123 BLO

割点的好题。联通图,难度降低。首先对于一个点,如果他不是割点,那它的贡献是2*(n-1),就是任何一个其他节点都少了正反两个数对,这个看样例可以看出来。如果它是一个割点,去掉他以后会出现若干个联通块,而这些联通块两两之间不相连,把它们的大小两两相乘即可。我们知道,在进行tarjan时会跑出一颗搜索树,我们直接记size[x]表示以x为根节点的子树大小,在找到一个割点时,low...

2019-07-13 20:07:00 290

转载 HAOI2010软件安装

首先tarjan缩点应该能看出来,然后我用topsort跑了个DAG上的一维dp,结果WA的很惨。其实用DAG应该也能做,但是DAG强调整体顺序,而对一些局部问题,例如两个儿子怎么分配,是否给当前节点分配,那就太粗略化了,导致错误。正确的姿势是把所有没有入度的点接到虚根上,因为tarjan缩完很可能是个森林,剩下的就是跑树形依赖的背包了。#include<ios...

2019-07-12 19:05:00 139

转载 BZOJ3033太鼓达人

第一问,1<<k,谁都看得出来。毫无思路,暴搜,枚举每一个数列,Hash加map判断是否重复,拿到30,打表都打不出来。#include <iostream>#include <algorithm>#include <cmath>#include <cstring>#include <cst...

2019-07-12 18:58:00 153

转载 BZOJ2654 tree

一开始打了个贪心,求最小生成树,白边多就把权值最大的白边干掉,白边少就把权值最大的黑边干掉,因为数据肯定有解嘛。结果大点TLE,小点只过了一个。事实证明,贪心有时真的不能瞎用。其实这个二分还是挺有道理的,给白边加权值,则入选白边会减少,给白边减权值,则入选白边增加,二分枚举这个权值,白边多了则向大枚举,白边少了则向小枚举,思路蛮简单的。剩下的就是二分的细节了。试了无数遍,终于找到...

2019-07-12 18:43:00 115

转载 Bzoj3073Journeys

这不裸的dij吗?来,弄他。打完以后发现不妙,这数据范围略神奇……算一算,考一场都可能跑不出来。map去重边(成功额外引入log)不怕,交。TLE,54。这不玩呢吗,把map去了,交。MLE,71……这题考场性价比可能挺高的。尝试改成vector,没省内存,反而更慢了。发现以前没学过的一个神奇知识点——线段树优化建图。这东西,一般出现某个区间和另一个区间内的若干元素建...

2019-07-11 20:25:00 98

转载 ZJOI2007矩阵游戏

图论专题里的东西,二分图呗,然而不知道怎么建图……就直接是1就连当前行和当前列,大样例都没试,直接交,ZJOI题能这么简单?50?数据这么水,瞎打都有50。上个厕所。回来跟Wxy吐槽数据水,他说你咋做的,我说二分图啊,他说对呀,就是二分图,我说恩?怎么建的图,然后让他点开看看,他说对呀,就这么建图。当时异常无语,这就把正解搞出来了?回去把前向星一清空就A了……目标状态,就...

2019-07-11 19:32:00 117

转载 HNOI2015菜肴制作

一开始,没想出来,先topsort判环,把impossible拿到手,然后划分联通块,对每个联通块跑一遍topsort,觉得可对了,然后被大样例教育明白了,知道自己的策略错在哪了。接着在纸上疯狂手模样例,不停地换topsort的顺序和贪心的方法,然后发现一种可行的解法。开大根堆,对反图跑topsort,然后倒序输出。这是一种贪心的策略,通过上述操作,我们可以使不但大,而且限制...

2019-07-11 19:19:00 89

转载 最短路

复习,图论经典,noip必备。1.floyed求任意两点之间最短路,dp的思想,O(n^3)。void Floyed(){ memset(d,0x3f,sizeof(d)); for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;...

2019-07-06 18:43:00 68

转载 Bzoj3211花神游历各国

提供一种数据结构,支持区间求和,以及区间开根号。这种题一般暴力谁都能打,主要是练线段树。下面给出两种解法:第一种,额外维护区间最大值。由于1、0开根是其本身,开根没有意义,我们维护区间最大值,如果区间最大值已经为1或0则直接return,否则继续向下开根。剩下的维护区间和就可以了。#include<iostream>#include<...

2019-07-05 14:28:00 111

转载 Zjoi2010排列计数Perm

这东西还是挺有思想的,道听途说一些东西,问问DuanYue同志,然后自己打表画树推了推,就搞出来了。首先根据p i>p i/2(向下取整)这种形式,如果线段树学的好的人,一定能看出来,这是在唯一标号法标号后的形式,即父亲的权值大于两个儿子的权值,这是一个小根堆的样子。那问题就是求给定数目的数字,求其能构成小根堆的个数。这是一个类似树形dp的问题,我们设f[i]表示以当前...

2019-07-02 17:05:00 106

转载 Zjoi2011看电影(movie)

第一步,打表找规律,发现自己的表连3的小样例都过不去,还不如自己手模,自己手跑了5以下的样例,然后发现毫无规律可言……第二步,想出一种错误做法,首先n>k必零,人比座都多……然后粘一下图:基本思想单步容斥,1除去不可行的,后面那一坨求和是用实际意义想的,前i个人恰好从k个位置中,把最后i个给选掉了(包括移动的过程),然后剩下的n-i个人从k个座位中选中前k-i个则不会牺...

2019-07-01 21:39:00 201

转载 关于一次同余方程的一类解法(exgcd,CRT,exCRT)

1.解同余方程:同余方程可以转化为不定方程,其实就是,这样的问题一般用拓展欧几里德算法求解。LL exgcd(LL a,LL b,LL &x,LL &y){ if(!b){ x=1;y=0; return a; } LL gcd=exgcd(b,a%b,x,y); LL t=...

2019-06-29 15:53:00 691

转载 HNOI2012排队

排列组合题(本文A(n,m)表示从n个元素里选m个的排列数)。首先,老师和女生有不能相邻的限制条件,应该用插空法。而且老师人数较少且固定,把老师和男生进行混合,对女生用插空。我先来一手错误做法,n个男生先全排列A(n,n),两个老师插空A(n+1,2),m个女生插空A(n+3,m),乘到一起。ans=A(n,n)*A(n+1,2)*A(n+3,m)。试一下1,1;差了4。为什么呢...

2019-06-28 15:22:00 108

空空如也

空空如也

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

TA关注的人

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