自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

romiqi

千古文人侠客梦,肯将碧血写丹青

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

原创 [LOJ2197][线段树][凸包][三分]SDOI2014:向量集

LOJ2197和UOJ191unknown类似我们知道点积等于一个向量的长度乘以另一个向量在这个向量上的投影的长度那么如果我们把范围限制在180°内,则这个函数是单峰的,那就可以线段树维护上下凸壳,查找的时候三分但是直接维护会T飞,因为需要合并,复杂度很高换一种方法,我们是从左到右依次加入的,那就意味着如果我们要查询线段树的一个节点的话,那这个节点对应的区间一定被填满了,所以我们可以在填...

2019-09-29 23:28:19 175

原创 [BZOJ3203][凸包][三分]SDOI2013:保护出题人

OJ挂,链自找由题目的特性可知,我们可以把血量求前缀和,然后视为同时攻击则每次的yiy_iyi​可以表示为sum[i]−sum[j−1]x[i]−(i−j)∗d(1≤j≤i−1)\frac{sum[i]-sum[j-1]}{x[i]-(i-j)*d}(1\le j\le i-1)x[i]−(i−j)∗dsum[i]−sum[j−1]​(1≤j≤i−1)直接求就是n2n^2n2考虑优化,发现...

2019-09-29 22:11:19 143

原创 [BZOJ1074][计算几何][搜索]SCOI2017:折纸

OJ挂,链自找一直在想正做的做法,然后当场去世反着做就好做多了,对于每个询问点,我们找出其被翻回去后处于哪个位置,然后从这两个点递归下去继续找,需要及时判断合法性,即一个点是否处于当前直线的右侧,如果在显然不行,因为右边的会被往左边翻,所以这个位置实际上最后是空的点的对称就利用直线垂直:k1∗k2=−1k1*k2=-1k1∗k2=−1搞即可Code:#include<bits/st...

2019-09-29 22:01:59 149

原创 [BZOJ3199][半平面交][最短路]SDOI2013:逃考

BZOJ挂,链自找很容易发现两个点连线的中垂线就是划分两个点控制区域的直线那对于每个点处理处它与其他所有点的连线的中垂线,加上边界四条线做半平面交即可知道这个点的控制区域然后这个点与所有剩下的直线所代表的点连边,跑最短路即可Code:#include<bits/stdc++.h>#define eps 1e-9#define db double#define mp ma...

2019-09-29 21:56:57 106

原创 [LOJ2008][半平面交]SCOI2015:小凸想跑步

LOJ2008把每个三角形的面积用叉积表示,每个三角形和0,1,p0,1,p0,1,p组成的三角形组合可以列出n−1n-1n−1个不等式,然后把不等式转成直线做半平面交即可Code:#include<bits/stdc++.h>#define db long doubleusing namespace std;inline int read(){ int res=0,f=...

2019-09-29 21:52:52 124

原创 [LOJ2056][CDQ][树状数组]TJOI / HEOI2016:序列

LOJ2056设一个位置的数的最大可能值为mxmxmx,最小为mnmnmn,原本值为valvalvalDP时显然需要满足以下条件:j<ij<ij<ivalj<mnival_j<mn_ivalj​<mni​mxj<valimx_j<val_imxj​<vali​显然三维偏序,CDQ+树状数组Code:#include<bit...

2019-09-27 22:00:30 114

原创 [BZOJ3730][点分树]震波

链接自己找,BZOJ还没开也很显然是点分树维护,对每个点开两个树状数组,维护点分树上子树之和,然后修改询问仍然暴力爬树,询问也是用两个树状数组作差消掉当前子树影响Code:#include<bits/stdc++.h>using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(...

2019-09-26 22:06:58 129

原创 [LOJ2135][点分树]ZJOI2015:幻想乡战略游戏

LOJ2135显然点分树维护,维护一个点在点分树上的子树权值和,子树到它的代价和,子树到它父亲的代价和,用加减消掉询问时当前子树的影响,这些都是点分树的套路修改暴力爬树然后询问先从点分树根节点开始,算一次根节点的答案,然后和各个儿子的答案比较一下,如果某个儿子比它优,就进这个儿子找这样询问的正确性:如果这个儿子里面没有答案,那这个儿子肯定比根节点差如果这个儿子里面有答案,那这个儿子肯定比...

2019-09-26 22:02:36 124

原创 [BZOJ1146][树套树][树链剖分]CTSC2008:网络管理

链接自己找,BZOJ还没开题意:求树上路径第k大,单点修改,可离线考虑树剖维护,内层主席树外层套个树状数组就完了(时空和代码长度都全方位被整体二分吊打)也可以整体二分Code:#include<bits/stdc++.h>using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); wh...

2019-09-26 21:52:58 132

原创 [LOJ2174][主席树]FJOI2016:神秘数

LOJ2174假设当前的神秘数为xxx,我们加入一个数yyy后新的神秘数是什么?显然如果y>xy\gt xy>x,则xxx依然是神秘数否则我们本来能够表示出[1,x−1][1,x-1][1,x−1]的数,则现在我们可以表示出[1,x−1+y][1,x-1+y][1,x−1+y]的数,那新的神秘数就是x+yx+yx+y我们首先假设当前神秘数为ggg,初始g=1g=1g=1,然后每...

2019-09-26 21:48:00 206

原创 [LOJ2011][主席树]SCOI2015:情报传递

LOJ2011经过分析,设某个点的起始时间为ttt,当前时间为iii,则对答案有贡献的点需满足i−t>Ci-t>Ci−t>C,即i−C>ti-C>ti−C>t当然把简单路径拆成到根节点的四条路径,那么修改一个点会对它子树产生影响,就可以按当前时间建主席树搞一搞了Code:#include<bits/stdc++.h>using namesp...

2019-09-25 22:01:02 120

原创 [LOJ3021][树状数组][扫描线]CQOI2017:老C的任务

LOJ3021这扫描线敢不敢再水一点好像没法更水了Code:#include<bits/stdc++.h>#define ll long longusing namespace std;inline ll read(){ ll res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;ch=g...

2019-09-25 21:54:57 127

原创 [BZOJ1009][KMP][矩阵快速幂]HNOI2008:GT考试

BZOJ1009建出KMP自动机,要求走n步不能到达m点的方案数,矩阵快速幂即可Code:#include<bits/stdc++.h>using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;ch=getcha...

2019-09-23 13:01:04 96

原创 190921CSP-S模拟题解

T1:lcm求给定的数集的任意非空子集的lcm之和数集大小2000,元素大小200要求lcm,那显然唯一分解然后很容易发现200以内的所有素数中,在某个合数的分解中对应幂次大于1的只有200\sqrt{200}200​级别,即2,3,5,7,11,132,3,5,7,11,132,3,5,7,11,13所以我们可以把这些素数出现的状态压缩一下,然后每个合数除掉这些素数之后剩下的一定只剩下...

2019-09-23 09:00:59 296

原创 [BZOJ3659][矩阵树定理][Best定理]Which Dreamed It

BZOJ3659这个Best定理的名字似乎是四个人的姓的首字母拼起来的我还以为是最好的定理的意思前置技能:矩阵树定理(Matrix-tree)无向图的生成树个数即基尔霍夫矩阵的行列式有向图的生成树有两种:外向的和内向的外向树即所有边从根节点指出去内向树即所有边指向根节点外向生成树的基尔霍夫矩阵为入度矩阵-度数矩阵内向生成树的基尔霍夫矩阵为出度矩阵-度数矩阵有向生成树个数为其基尔...

2019-09-19 18:00:32 346

原创 [LOJ3083][单调栈]GXOI/GZOI2019:与或和

LOJ3083很显然是拆位那么对于and,就是统计这个01矩阵中的全1子矩阵个数对于or,就是统计这个01矩阵中的全0子矩阵个数,再用全集减去它统计01矩阵的全1子矩阵个数就直接上单调栈即可大致做法:记录矩阵内每一个点上方的连续1有多少个(包括自身)扫描每一行,求出以每个点为右下角的矩阵的个数,可以用单调栈弹掉不合法的答案Code:#include<bits/stdc++....

2019-09-19 13:02:43 124

原创 20190918CSP-S模拟题解

T1:一张n个点的无向图,求出经过每个点的最小环n≤300n\le300n≤300        m≤40000m\le40000m≤40000暴力是拆边然后跑dij,正解就是拆点可以枚举每个点,做一个最短路树,然后枚举非树边更新答案就过了。。。std是分治Floyd,就在每次分治的时候暴力向Floyd矩阵里插...

2019-09-19 08:17:25 577

原创 [最短路][位运算优化建图]walk

无来源对于所有数据,n≤2e5,m≤3e5,1≤vali<220n≤2e5,m≤3e5,1≤val_i<2^{20}n≤2e5,m≤3e5,1≤vali​<220位运算优化建图是我瞎取的名字考虑新建点来表示val,每个点向val连边权为1的边,每个val向对应点连边权为0的边然后重点是考虑val之间的连边:每个val向二进制位下1的个数比自己少一个的点连边权为0的边,这...

2019-09-17 22:08:43 132

原创 [LOJ3096][数学]SNOI2019:数论

LOJ3096实际上是要求一个方程ai+Pk1=bj+Qk2a_i+Pk_1=b_j+Qk_2ai​+Pk1​=bj​+Qk2​,可以发现不断增加p的时候左边的取值modQmodQmodQ会成一个环,那就把这个环搞出来,把对应的所有b标上去,然后枚举a,先算一下最多走多少步,然后求个环上前缀和就完了Code:#include<bits/stdc++.h>#define pb p...

2019-09-17 22:02:05 156

原创 [LOJ3098][矩阵快速幂]SNOI2019:纸牌

LOJ3098这种数据范围不是推式子然后lucas就是矩阵快速幂了在一副王牌中,任意连续三个数构成的顺子的出现次数显然只用考虑0,1,2,否则我们直接弄三个刻子效果是一样的考虑转移,先考虑非初始牌的转移,设当前为第iii位,则我们转移到第i+1i+1i+1需要知道第i−1i-1i−1位和第iii位的信息,即以这两个位开头的顺子的个数,那么我们可以用一个3∗33*33∗3的状态表示这个东西,然...

2019-09-17 21:54:08 211

原创 [luogu4389][生成函数][NTT]付公主的背包

luogu4389考虑OGF,ans=[xn]∏i=1n(11−xi)aians=[x^n]\prod_{i=1}^n(\frac{1}{1-x^i})^{a_i}ans=[xn]∏i=1n​(1−xi1​)ai​,其中aia_iai​表示大小为iii的物品的个数看到这种一般想到用exp:∏i=1n(11−xi)ai\prod_{i=1}^n(\frac{1}{1-x^i})^{a_i}i=...

2019-09-17 21:45:27 175

原创 [BZOJ4888][树状数组]TJOI2017:异或和

BZOJ4888可以枚举二进制每一位,看看哪些对它有贡献先弄成前缀和,然后增量构造如果当前前缀和的当前这一位为1,那么要满足它减去之前的一个前缀和之后这一位仍然为1,就是要求减去的那个前缀和的小于枚举的这一位的部分小于当前前缀和的这一部分,这样减掉才不会退位如果当前这一位为0,那就是要大于才能退位退到这一位上来分别用树状数组维护即可Code:#include<bits/stdc...

2019-09-16 23:57:36 210

原创 [BZOJ4890][树形DP]TJOI2017:城市

BZOJ4890看到题还以为要二分,结果连二分都不用枚举断边,计算两个子树直径,更新答案,没了Code:#include<bits/stdc++.h>using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') ...

2019-09-16 23:51:48 112

原创 [BZOJ4887][矩阵快速幂]TJOI2017:可乐

BZOJ4887一道板子得不能再板子的题还把数据范围出成了暴力dp都能过的矩阵快速幂,新建0号点表示爆炸,每个点连一个自环表示停留,没了Code:#include<bits/stdc++.h>#define mod 2017using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); ...

2019-09-16 23:49:16 109

原创 [luoguRemoteJudge11414][trie][博弈论]SPOJ:Combat on a tree

link考虑算一个点的sg值,如果这个点是黑点,那就把子树的能到达的状态求出来放在trie树上,然后在trie树上跑一遍就好,如果是白点则要额外加入这个点能到达的状态然后合并子树就可以用01trie合并(类似线段树合并)我们还要计算一个点能否被选,记录up[x]表示删除x到根节点的所有点后,剩下的不为x子树的树的sg函数的异或值,则根据博弈论的那一套理论,我们把up[x]异或上sum[x](...

2019-09-14 11:50:05 286

原创 20190914省选模拟题解(CSPDay1T1+回滚莫队trie树+博弈论扫描线)

T1:组合数问题source:LOJ6353很简单,我的做法稍微有点不一样:考虑组合数的递推式:Cnm=Cn−1m+Cn−1m−1C_{n}^m=C_{n-1}^m+C_{n-1}^{m-1}Cnm​=Cn−1m​+Cn−1m−1​所以如果选出了一个数,那么一定会先选它在组合数表格上的右边和右上的所以就先把最右边一列加入一个set,然后每次选了一个数就把其左和左下的加入set(如果对应的...

2019-09-14 11:23:15 326

原创 [LOJ3097][网络流][分治]SNOI2019:通信

LOJ309760-80pts的建图应该很简单吧,就拆成二分图,然后:sss向xix_ixi​,流量1,费用0yiy_iyi​向ttt,流量1,费用0sss向yiy_iyi​,流量1,费用wwwxix_ixi​向yjy_jyj​,流量1,费用∣ai−aj∣|a_i-a_j|∣ai​−aj​∣然后跑mcmfmcmfmcmf这样的边数是n2n^2n2,显然无法接受考虑优化建图,一个x要...

2019-09-12 14:03:34 213

原创 [luogu5396][NTT][多项式][斯特林数]模板:第二类斯特林数·列

luogu5396好像可以倍增搞到一个log我写的两个log的分治NTT把要求的弄成OGF,考虑第二类斯特林数的递推式Smx=xSm−1(x)+mxSm(x)S_m{x}=xS_{m-1}(x)+mxS_m(x)Sm​x=xSm−1​(x)+mxSm​(x)Smx=x1−mxSm−1(x)S_m{x}=\frac{x}{1-mx}S_{m-1}(x)Sm​x=1−mxx​Sm−1​(x)...

2019-09-12 12:03:03 159

原创 [luogu5409][NTT][多项式][斯特林数]模板:第一类斯特林数·列

luogu5409算了懒得写了Code:// luogu-judger-enable-o2#include<bits/stdc++.h>#define pb push_back#define poly vector<int>#define mod 167772161using namespace std;inline int read(){ int re...

2019-09-12 11:56:11 149

原创 [luogu5395][NTT][多项式][斯特林数]模板:第二类斯特林数·行

luogu5395这个还要简单点xn=∑i=1nSn,ixi‾x^n=\sum_{i=1}^nS_{n,i}x^{\underline i}xn=∑i=1n​Sn,i​xi​二项式反演,把下降幂拆开,然后发现是个卷积,然后就完了Code:// luogu-judger-enable-o2#include<bits/stdc++.h>#define mod 16777216...

2019-09-12 11:53:43 119

原创 [luogu5408][NTT][多项式][斯特林数]模板:第一类斯特林数·行

luogu5408如果当前的nnn为奇数,就递归求第n−1n-1n−1行如果为偶数,则x2n‾=xn‾(x+n)xn‾x^{\underline {2n}}=x^{\underline {n}}(x+n) x^{\underline {n}}x2n​=xn​(x+n)xn​则可以先求xn‾x^{\underline {n}}xn​然后还原Code:// luogu-judger-enab...

2019-09-12 11:49:02 171

原创 [BZOJ4945][2-SAT]NOI2017:游戏

BZOJ4945sb题爆搜X地图的状态(不能放a,不能放b,此时已经有全集了)然后2-SATCode:#include<bits/stdc++.h>using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;c...

2019-09-11 22:06:49 106

原创 [BZOJ4540][线段树][单调栈]HNOI2016:序列

BZOJ4540不想写了,看这个下传的时候要推一下合并的式子,类似矩阵乘法Code:#include<bits/stdc++.h>#define ll long longusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch==...

2019-09-11 22:00:59 134

原创 [校内模拟][长链剖分][线段树]看门人

题意:求一棵树上每个点的子树中经过这个点的所有路径中边数在给定范围内的最长路径早上8:05开考,8:10分看完题就秒了然而有个地方没有开longlong而且线段树维护长链的方向反了所以连部分分都没了裸的长链剖分,需要用线段树维护区间最大值,最好是zkw线段树(偷懒不想写)Code:#include<bits/stdc++.h>#define mod 998244353...

2019-09-11 16:12:37 154

原创 [BZOJ4825][LCT]HNOI2017:单旋

BZOJ4825我们可以用一个set维护一下点的大小关系,那么修改只需要查一下前驱后继就行了然后旋转的话,推一下就可以发现只会影响fa[x]fa[x]fa[x]的左/右儿子,和rootrootroot的父亲,那就随便LCT一波,depdepdep用LCT也很好维护#include<bits/stdc++.h>using namespace std;inline int re...

2019-09-10 23:13:58 110

原创 [BZOJ4826][主席树][单调栈]HNOI2017:影魔

BZOJ4826又来。。。显然考虑枚举作为区间最大值的位置iii,然后我们需要知道L[i]L[i]L[i]和R[i]R[i]R[i]表示iii左右两边第一个大于它的数的位置,用单调栈维护考虑一个iii对答案的影响,显然就是以下情况:L[i]L[i]L[i]和R[i]R[i]R[i]组成p1p1p1的影响iii和i+1i+1i+1组成p1p1p1的影响(L[i],i)(L[i],i)(...

2019-09-09 21:55:05 141

原创 [BZOJ5323][线性筛][组合数学]JXOI2018:游戏

BZOJ5323很简单,我们类似线性筛处理出有多少个数只能被它自己筛掉,然后剩下的组合数随便算一下就完了枚举最后一个只能被自己筛掉的数的位置,然后其他的这样的数只能放它前面,再乘两个全排列就是答案Code:#include<bits/stdc++.h>#define mod 1000000007using namespace std;inline int read(){...

2019-09-09 21:47:36 145

原创 [UOJ171][带花树]WC2016:挑战NPC

UOJ171一眼看出来是一个匹配问题,问题在于如何建图我们可以发现筐内球数为0,1,2,3时,对答案的贡献分别为1,1,0,0我们就要构造一种建图方案,使得在筐内有0,1个球的时候贡献相同,有2,3个球的时候贡献相同不妨把筐拆成三个,每个都和对应的球连边,一个筐最多和三个球匹配,这不违背题意如何表示出0,1个球和2,3个球的区别呢?我们可以以2为分界点,把0,1和2,3区别出来即,我们...

2019-09-08 19:55:32 93

原创 [BZOJ4542][莫队]HNOI2016:大数

BZOJ4542我们考虑怎样的一个大数能够整除质数p:当然是这个大数每一位乘上10的多少次幂那求一个前缀的和呢?就是每一位乘上10的多少次幂的前缀和如何判断一个区间模p是否等于0?只需要判断位置lll和位置rrr的前缀和模p的值是否相等那这就是个莫队板子题了注意特判p=2和5的情况,具体怎么判详见此文Code:#include<bits/stdc++.h>#defin...

2019-09-06 22:07:05 94

原创 [UOJ449][概率DP]集训队作业2018:喂鸽子

UOJ449(传说中的n2kn^2kn2k做法)首先强制鸽子饱的顺序为1−n1-n1−n,最后答案乘n!n!n!即可我们只需要考虑喂一次喂到了未饱的鸽子的情况,我们称之为有效喂食下一次喂食为有效喂食的概率为n−xn\frac{n-x}{n}nn−x​,其中x为已经饱了的鸽子数所以两次有效喂食之间的无效喂食次数的期望为nn−x\frac{n}{n-x}n−xn​这样我们就消除了无效喂食的...

2019-09-06 10:40:05 199

空空如也

空空如也

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

TA关注的人

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