Devil_Gary的博客

Devil_Gary

排序:
默认
按更新时间
按访问量

搬家啦~~

新博客地址:http://www.cnblogs.com/devil-gary/

2018-04-19 19:52:02

阅读数:73

评论数:0

BZOJ5217: [Lydsy2017省队十连测]航海舰队

被FFT的空间卡了半天 后来发现根本不用开那么大… 首先可以把包含舰艇的那个小矩形找出来 将它一行一行连接成一个串T 其中舰艇位置为1其他位置为0 将大矩形也连成串S 其中礁石为1其他为0 两个串匹配起来如果某一位两个串是1和1 则礁石与舰艇会在同一位置不可能到达 那么这个匹配所对应的图中的...

2018-03-30 08:25:20

阅读数:140

评论数:0

BZOJ3473 字符串 广义后缀自动机

今天主攻了下SAM 好多东西以前都没理解到 对于这道题 我们建一个自动机存所有串 每个穿last从1开始 对于自动机上每个点额外记一个cnt 表示能匹配到这个点的不同串个数 建完对每个串在自动机上匹配 把到的每个点x和par[x],par[par[x]]…的cnt++ 然后就从父亲往儿子...

2018-02-07 17:01:57

阅读数:61

评论数:0

BZOJ2716 KD-Tree

好久没写博客了 回去赶了好久文化课 颓欲见长 突然翻到fc爷的KD-Tree板子 来切了到裸题 对于一开始的数据我们可以先预处理 具体的排序方式见板子 其实就是我们对每次选定的一块选一个维度来排序啦 这里算了下方差 选最大的那一维来分下去 #include #define bug(x) c...

2018-02-06 09:17:09

阅读数:33

评论数:0

BZOJ5137[Usaco2017 Dec]Standing Out from the Herd

看了半天题 不知道怎么用SAM维护 于是借(chao)鉴(xi)的一发神犇的 只要判断这个子串之前被标记的记号(也就是他属于第几个串)和这次转移到的是否相同 如果不同就说明该子串属于多个串 直接标记-1 依次转移就好咧 最后统计就是ans[f[i]]+=sam[i].mx−sam[par[i]]....

2018-01-12 18:18:40

阅读数:163

评论数:0

非旋Treap 学习笔记

今天学习了一下非旋TreapTreap 听说效率很高而且可持久化(一脸懵逼QAQQAQ) 非旋Treap主要是两个操作splitsplit和mergemerge 下面简单描述一下(得先会TreapTreap啊 ) valval:点的值 keykey:randrand的值 splitsplit...

2018-01-10 15:32:16

阅读数:100

评论数:0

BZOJ3598[Scoi2014]方伯伯的商场之旅 数位DP

看到数据范围很容易想到数位DPDP 然后就很容易想到枚举每一位作为最优点 我们可以发现对于一个数字 如果他的最优点确定了 那离最优点 花费越高 我们可以先将所有的数字全合并到第一个点(用数位DP求) 然后依次枚举从i−>i+1i->i+1 更优的数字有多少个 在这里 我们只需...

2018-01-06 16:57:12

阅读数:140

评论数:0

BZOJ1025 [SCOI2009]游戏 DP

题意可以理解为给定N 将其拆为pα11∗pα22∗pα33⋅⋅⋅pαmmp_1^{α_1}*p_2^{α_2}*p_3^{α_3}···p_m^{α_m}的形式 其中pp为素数且 ∑pαii≤n\sum p_i^{α_i}\leq n 求lcm(pα11∗pα22∗pα33⋅⋅⋅pαmm)的不同...

2018-01-03 15:58:04

阅读数:128

评论数:0

BZOJ4566 [Haoi2016]找相同字符 SAM+拓扑

学了几天SAMSAM学了 这道题总算是领会到了些许 对parentparent树有了更深的理解 但是我还是不能表述出来 太菜了大家可以去百度CLJ神犇的PPT 讲的很好 附一个百度文库的网址我们可以先跑出两个串的SAMSAM 对于每一个节点 记录到达此节点的串的数目 这时候要用到拓扑 因为对于一个...

2017-12-25 20:17:50

阅读数:425

评论数:0

BZOJ1823: [JSOI2010]满汉全席 2-sat

裸的2-sat 选(hi,mj)(hi,mj)的话就连(i′,j)(j′,i)(i',j )( j',i) 特别的(hi,mi)(hi,mi)不用连 最近集训被吊打啊 好蒻 打算扎实学习一阵 总觉得在知识和实践之间有着一道无法跨越的鸿沟#include<bits/stdc++.h> ...

2017-12-22 20:20:40

阅读数:349

评论数:0

BZOJ3505 [Cqoi2014]数三角形 数学

总数是ans=C3n∗m−m∗C3n−n∗C3m−斜着的总数ans=C_{n*m}^3-m*C_n^3-n*C_m^3-斜着的总数 斜着的可以用gcd枚举 对于一个长i宽j的矩形 计算出他的对角线 有s个整数点 则该对角线的贡献是s-2 再计算出只总有多少的这么大的矩形 求和就好啦#define...

2017-12-13 16:01:20

阅读数:369

评论数:0

BZOJ2820 YY的GCD 莫比乌斯反演

∑isprime(p)∑na=1∑mb=1gcd(a,b)==p∑isprime(p)∑_{a=1}^n∑_{b=1}^mgcd(a,b)==p ∑isprime(p)∑⌊np⌋a=1∑⌊mp⌋b=1gcd(a,b)==1∑isprime(p)\sum_{a=1}^{⌊\frac n p⌋}∑_...

2017-12-13 15:08:04

阅读数:147

评论数:0

BZOJ3237: [Ahoi2013]连通图 cdq分治+并查集

首先连通图问题 用并查集维护很显然 看到k的范围 铁铁的nlognnlogn 因为是离线询问 我们很容易就能想到用cdq分治来维护并查集 对于两个集合s1,s2s1,s2 我们可以把不属于s1,s2s1,s2的边都先存到并查集里 将s1s1中不属于s2s2的边加进去 这时候就可以判断s2s...

2017-12-06 11:27:59

阅读数:365

评论数:0

BZOJ1978 [BeiJing2010]取数游戏 建图+拓扑序

很容易想到在可以满足L≤gcd(i,j)L\leq gcd(i,j)的i,ji,j之间连边 但是暴力n2n^2枚举肯定过不了啦 考虑枚举每一个大于L的公因数 我们对于每个数根号n枚举他的因子 对每一个因子建一个vectorvector来存 然后每一个vectorvector里的i和i+1连边 yy...

2017-12-05 18:07:37

阅读数:342

评论数:0

BZOJ2750[HAOI2012]Road 最短路

想了半天只知道对于每个边求起点到他的方案数*他到终点的方案数 不知道怎么枚举起点终点 搜了搜题解 涨了些姿势 原来Dij可以在求出单元最短路的同时将每个点到源点的距离排序 这样的话我们就可以枚举起点 按照Dij得到的距离顺序进行转移 具体的看代码吧 有点困 写不动了 代码来自Bloodline#...

2017-12-05 10:26:35

阅读数:325

评论数:0

BZOJ3944 Sum 杜教筛

看完题一副不可做的样子 默默点开了题解 发现是杜教筛 就花了半天学习了一下 先说下杜教筛 可以在优于线性的复杂度内求出积性函数的前缀和 下求∑ni=1f(i)\sum_{i=1}^nf(i) 令F(i)=∑ni=1f(i)F(i)=\sum_{i=1}^nf(i)我们可以再引入一个积性函数g(...

2017-12-02 16:40:48

阅读数:414

评论数:0

BZOJ3190[JLOI2013]赛车 半平面交

看了黄学长的 每辆车可以表示成一个一次函数y=kx+by=kx+b, 按kk为第一关键字,bb为第二关键字排序,然后维护一个单调栈就好了,具体的judgejudge函数看代码#include<bits/stdc++.h> #define bug(x) cout<<(#x)&...

2017-11-30 09:31:12

阅读数:376

评论数:0

BZOJ5100[POI2018]Plan metra 构造

首先可以发现在11到nn的链上的点的d1+d2d1+d2是最小的 这样我们可以求出11到nn的链 对于其他的点 他一定与这条链的上点链接 可以发现 对于点ii 和11到nn上的点j 有d1[i]−d2[i]=d1[j]−d2[j]d1[i]-d2[i]=d1[j]-d2[j] 因此可以求出每个...

2017-11-29 11:00:32

阅读数:452

评论数:0

BZOJ1880[Sdoi2009]Elaxia的路线 spfa+拓扑序

首先我们求出来每一个点到x1,x2,y1,y1x1,x2,y1,y1的最短路 令s1,s2s1,s2分别为两个人的最短路 枚举每条边如果dis[x1][u]+dis[y1][v]+e[i].c=s1,dis[x2][u]+dis[y2][v]+e[i].c=s2dis[x1][u]+dis[...

2017-11-28 10:26:10

阅读数:330

评论数:0

BZOJ1924 tarjan+拓扑序

先按题目要求连边 缩点之后建反向图按拓扑序转移 sum[u]=max{sum[v]+sz[u]};sum[u]=max\{sum[v]+sz[u]\}; ans=max{sum[i]}(i∈[1,n]);ans=max\{sum[i]\} (i∈[1,n]);#include<bits/...

2017-11-28 09:24:15

阅读数:345

评论数:0

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