03 2018 档案

摘要:一眼做法,好处是好想好写坏处是常数大,容易被卡(bzoj loj 洛谷开O2 能AC,不开有90分…… 大概就是树剖之后维护线段树,在线段树的每个节点上上维护一个线性基,暴力\\( 60^2 \\)的合并儿子 对于每次查询,在树上跳重链,把这些区间的线性基暴力合并上,然后ans在合并之后的线性基上贪 阅读全文
posted @ 2018-03-28 15:56 lokiii 阅读(235) 评论(0) 推荐(0)
摘要:洛谷90,最后一个点死活卡不过去(也可能是我写的有问题? 比较暴力的做法,把询问带着标号建立AC自动机,用map存儿子。 然后用名字串在自动机上跑,以为是名或姓的子串就行所以把名和姓中间加个特殊字符拼起来即可。 注意trie的根最好设为1(now=1),然后把c[0][x]初始为1 cpp incl 阅读全文
posted @ 2018-03-28 09:55 lokiii 阅读(212) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-03-23 21:56 lokiii 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-03-22 22:01 lokiii 阅读(4) 评论(0) 推荐(0)
摘要:强烈安利:http://blog.csdn.net/qq_34637390/article/details/51313126 这篇讲标记讲的非常好,这个标记非常神奇…… 首先last表示扫描到last这个点了,val[x]表示x到last中的最小值,sum[x]表示last分别等于1,2,3.... 阅读全文
posted @ 2018-03-22 21:11 lokiii 阅读(155) 评论(0) 推荐(0)
摘要:只是想复健一下LCT没想到做了不得了的题……调了两天QAQ 题解是这么说的: 但是果然还不太理解……因为swap的前后问题调了好久,(所以一开始养成的习惯后面就不要再改啦…… 总之大概就是把对位置lct的操作映射到权值lct上,然后权值lct可以随便转没问题,只要位置lct不动就可以…… 注意rev 阅读全文
posted @ 2018-03-21 21:25 lokiii 阅读(253) 评论(0) 推荐(0)
摘要:首先f长得就很像能矩阵优化的,先构造转移矩阵(这里有一点神奇的地方,我看网上的blog和我构造的矩阵完全不一样还以为我的构造能力又丧失了,后来惊奇的发现我把那篇blog里的构造矩阵部分换成我的构造方式,交了一下完全没问题2333,并不知道为啥) 好久没写矩阵加速了,顺便说一下我的构造方法吧: 首先明 阅读全文
posted @ 2018-03-20 10:13 lokiii 阅读(224) 评论(0) 推荐(0)
摘要:看n和k的范围长得就很像矩阵乘法了 设f[i][j]表示到第i个位置的后缀最长匹配目标串的j位。转移的话显然是枚举0~9,然后选择f[i+1]中能被他转移的加起来,需要用到next数组。然后构造矩阵的时候,在转移路径上++即可(注意代码里的f数组只是辅助构造矩阵的,和上文无关 在写挂了n次kmp之后 阅读全文
posted @ 2018-03-19 20:00 lokiii 阅读(136) 评论(0) 推荐(0)
摘要:UOJ和洛谷上能A,bzoj 8ms即WA,现在也不是知道为啥……~~因为我太弱了~~ 先看数据范围发现d非常小,自然想到了状压。 所以先假装都是只能跑两种车的,这显然就是个2 SAT问题了:对于x场没有hx的,直接跳过;对于y场没有hy的,连(x,x'),表示x不能选;对于都有的,连接(x,y), 阅读全文
posted @ 2018-03-19 14:35 lokiii 阅读(251) 评论(3) 推荐(0)
该文被密码保护。
posted @ 2018-03-18 20:23 lokiii 阅读(3) 评论(0) 推荐(0)
摘要:承德汉堡:\\( 1+x^2+x^4+...=\frac{1}{1 x^2} \\) 可乐:\\(1+x \\) 鸡腿:\\( 1+x+x^2=\frac{x^3 1}{x 1} \\) 蜜桃多:\\( x+x^3+x^5+...=\frac{x}{1 x^2} \\) 鸡块:\\( 1+x^4+x 阅读全文
posted @ 2018-03-15 19:14 lokiii 阅读(154) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-03-15 11:28 lokiii 阅读(1) 评论(0) 推荐(0)
摘要:把每个筐子拆成3个,分别表示放0/1/2个,然后把这三个点两两连起来,每一个可以放在筐里的球都想这三个点连边。 这样可以发现,放0个球的时候,匹配数为1,放1个球的时候,匹配数为1,放2个球的时候,匹配数为2,放3个球的时候,匹配数为3。 所以直接把带花树的匹配数 n即可 cpp include i 阅读全文
posted @ 2018-03-15 11:00 lokiii 阅读(119) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-03-15 10:52 lokiii 阅读(2) 评论(0) 推荐(0)
摘要:正好考到了所以翻一些题来做……猛然发现搞了半个月的网络流却没做两道上下界(不过这种题好像是比较少233) 首先建立超级源汇ss,tt,没限制的边照常连,对于有限制的边(u,v,mn,mx),连接(u,v,ss tt)和辅助边(ss,v,mn)(u,tt,mn)(实际操作中,对每个点记录一个度就行了, 阅读全文
posted @ 2018-03-12 20:49 lokiii 阅读(174) 评论(0) 推荐(0)
摘要:学到了线段树新姿势! 先离线读入,根据时间建一棵线段树,每个节点上开一个vector存这个区间内存在的数(使用map来记录每个数出现的一段时间),然后在线段树上dfs,到叶子节点就计算答案。 注意!!从父节点带下来的线性基数组一定要放在函数里传给子节点!全局变量就会多出好多东西!~~这个其实是常识吧 阅读全文
posted @ 2018-03-12 20:25 lokiii 阅读(295) 评论(0) 推荐(0)
摘要:…老是想到最长路上 其实可以这样:把每个环的xor和都存起来,然后任选一条1到n的路径的xor和ans,答案就是这个ans在环的线性基上跑贪心。 为什么是对的……因为可以重边而且是无相连通的,并且对于一条路,走偶数次相当于没走,所以任意走一条主路都可以从歧路走到某个环上,然后从歧路返回,此时就得到了 阅读全文
posted @ 2018-03-12 20:18 lokiii 阅读(132) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-03-11 19:38 lokiii 阅读(6) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-03-10 16:51 lokiii 阅读(4) 评论(0) 推荐(0)
摘要:参考:https://www.cnblogs.com/zhuohan123/p/3237246.html 因为一c可以由1 a b得出,所以删掉c,把a,b抽象成二维平面上的点。首先考虑一个客户需求能被哪些原料配出来:两个原料点连线上的点都可以,要是多个原料点,那么这些线的向量构成的凸包中的点都可以 阅读全文
posted @ 2018-03-09 21:28 lokiii 阅读(146) 评论(0) 推荐(0)
摘要:参考:https://www.cnblogs.com/FallDream/p/bzoj4824.html 画一画就会发现关系形成了一棵二叉树(其实看到n 1就能想到 然后dp,设f[i][j]为点i在这棵子树中排名为j,然后组合数乘着转移 这里有一个前缀和优化,返回父亲时,f为前缀和,g为后缀和,便 阅读全文
posted @ 2018-03-08 21:31 lokiii 阅读(136) 评论(0) 推荐(0)
摘要:是我想复杂了 首先发现大于关系构成了一棵二叉树的结构,于是树形dp 设f[i]为i点的方案数,si[i]为i点的子树大小,递推式是\\( f[i]=f[i\ 2]\ f[i\ 2+1]\ C_{si[i] 1}^{si[i\ 2]} \\) 组合数用Lucas求 cpp include includ 阅读全文
posted @ 2018-03-08 19:59 lokiii 阅读(141) 评论(0) 推荐(0)
摘要:一个树状数组能解决的问题分要用树套树……还写错了~~我别是个傻子吧?~~ 这种题还是挺多的,大概就是把每个矩形询问差分拆成四个点前缀和相加的形式(x1 1,y1 1,1)(x2.y2,1)(x1 1,y2, 1)(x2,y1 1, 1),然后离散化,打上id丢去按x排序,点也按x排序。 然后按照x扫 阅读全文
posted @ 2018-03-08 16:17 lokiii 阅读(206) 评论(0) 推荐(0)
摘要:参考:https://www.cnblogs.com/neighthorn/p/6705785.html 并不是黑白染色而是三色染色(还有四色的,不过是一个意思 仔细观察一下不合法情况,可以发现都是特殊边两边有格子并且两个黑格子都在的时候黄蓝不能同在,所以(黄 黑)(黑 蓝)(黑 黑)都是最大权闭合 阅读全文
posted @ 2018-03-08 16:04 lokiii 阅读(184) 评论(0) 推荐(0)
摘要:参考:https://www.cnblogs.com/lcf 2000/p/6789680.html 这是一个相对码量少的做法,用到了区间修改区间查询的树状数组,详见:www.cnblogs.com/lcf 2000/p/5866170.html 3830447 枚举最大值a[i],找到l[i],r 阅读全文
posted @ 2018-03-07 22:05 lokiii 阅读(141) 评论(0) 推荐(0)
摘要:~~我到底怎么建的图为啥要开这么大的数组啊?!~~ 神题神题,本来以为图论出不出什么花来了。 首先要理解‘团’的概念,简单来说就是无向图的一个完全子图,相关概念详见度娘。 所以关于团一般都是NP问题,只有二分图例外。而题目中有这样一句话“n座城市可以恰好被划分为不超过两个城市群”,并且给出的是没有的 阅读全文
posted @ 2018-03-07 19:46 lokiii 阅读(166) 评论(0) 推荐(0)
摘要:参考:http://blog.csdn.net/di4covery/article/details/73065684 我以为是后缀数组+某某数据结构,结果居然是01trie!!题解说“因为是随机的所以大概不会超过40个~”~~所以40是咋算的啊我一介非酋真的不能估计……~~ 好了正解是这样的,先把询 阅读全文
posted @ 2018-03-07 15:27 lokiii 阅读(190) 评论(0) 推荐(0)
摘要:半平面交求多边形的核,注意边是顺时针给出的 阅读全文
posted @ 2018-03-06 22:05 lokiii 阅读(99) 评论(0) 推荐(0)
摘要:求多边形的核,直接把所有边求半平面交判断有无即可 阅读全文
posted @ 2018-03-06 22:02 lokiii 阅读(94) 评论(0) 推荐(0)
摘要:相当于多边形内最大圆,二分半径r,然后把每条边内收r,求是否有半平面交(即是否合法) 阅读全文
posted @ 2018-03-06 21:59 lokiii 阅读(108) 评论(0) 推荐(0)
摘要:这个代码已经不是写丑那么简单了……脑子浆糊感觉np++分分钟想暴起打死我……就这还一遍A过了…… 先都读进来hash一下,因为是平衡树所以dfs序直接按照点值来就好 对于每个操作: 1:set维护已插入的值,对新加入的x找到它的前驱后继,选深度大的挂上去(画图找规律,我也不知道为什么深度较浅的一定挂 阅读全文
posted @ 2018-03-06 21:53 lokiii 阅读(137) 评论(0) 推荐(0)
摘要:记得FFT要开大数组!!开到快MLE的那种!!我这个就是例子TAT,5e5都RE了 在这题上花的时间太多了,还是FFT不太熟练。 首先看70分的n方做法:从0下标开始存,先n ,把a数组倍增,然后枚举a数组的起点st(相当于环上a的st和b的0相匹配),设x为增量 $$ \sum_{i=0}^{n} 阅读全文
posted @ 2018-03-06 18:18 lokiii 阅读(123) 评论(0) 推荐(0)
摘要:```cpp //先打个50暴力,10min50分简直美滋滋~ include include include using namespace std; const int N=5005; const double eps=1e 8; int n,t,m,ans; struct dian { dou 阅读全文
posted @ 2018-03-05 21:54 lokiii 阅读(159) 评论(0) 推荐(0)
摘要:~~这么简单的dp我怎么没想到x2~~ f为从这个点出发后回到这个点最多能走过的点,g为从这个点出发后不回到这个点最多能走过的点,注意g有两种转移:g[u][k]=max(g[u][k],f[u][k j 1]+g[e[i].to][j])是在e[i].to这个子树前走了一棵子树再回来,g[u][k 阅读全文
posted @ 2018-03-05 19:09 lokiii 阅读(127) 评论(0) 推荐(0)
摘要:参考:http://blog.csdn.net/qq_33229466/article/details/70174227 看这个等式的形式就像高精gcd嘛…所以随便算一下就发现每次修改(a,b)影响到的都是横纵坐标gcd为gcd(a,b)的,进而发现可以把gcd(i,j)==d的一部分都归到d上,f 阅读全文
posted @ 2018-03-05 19:00 lokiii 阅读(157) 评论(0) 推荐(0)
摘要:二分点所在区域,叉积判断左右 cpp include include include include include using namespace std; const int N=1005; int T,n,m,x1,y1,x2,y2,ans[N],cnt[N]; struct dian { d 阅读全文
posted @ 2018-03-04 22:02 lokiii 阅读(109) 评论(0) 推荐(0)
摘要:其实并不算标准半平面交?但是思路差不多 先按照斜率排序,然后用栈维护凸壳,每遇到重斜率或a[i],s[top 1]交点的x轴在s[top],s[top 1]交点左侧,则说明s[top]被a[i],s[top 1]覆盖,弹栈即可; cpp include include include using n 阅读全文
posted @ 2018-03-04 21:58 lokiii 阅读(141) 评论(0) 推荐(0)
摘要:其实挺简单的但是没想出来………… 首先判断无解情况,即,一开始的图就不是仙人掌,使用tarjan判断如果一个点dfs下去有超过一个点比他早,则说明存在非简单环。 然后考虑dp,显然原图中已经属于某个简单环的边就是没用的,tarjan缩点之后删掉两个端点在一个强连通分量中的边。(无向图的tarjan要 阅读全文
posted @ 2018-03-04 20:26 lokiii 阅读(236) 评论(0) 推荐(0)
摘要:参考:https://www.cnblogs.com/ljh2000 jump/p/6686960.html 由于操作反过来了,所以~~显然~~树状数组维护后缀和,所以本来想查询(1,r) (1,l 1),现在变成了(r,n) (l 1,n); 然后在mod 2意义下进行,每次又是+1,就相当于是异 阅读全文
posted @ 2018-03-04 20:16 lokiii 阅读(132) 评论(0) 推荐(0)
摘要:```cpp include include include include using namespace std; const int N=1005; const double eps=1e 8; int T,n,r,w,top; struct dian { double x,y; dian(d 阅读全文
posted @ 2018-03-03 22:04 lokiii 阅读(117) 评论(0) 推荐(0)
摘要:求平面最远点对 阅读全文
posted @ 2018-03-03 22:02 lokiii 阅读(113) 评论(0) 推荐(0)
摘要:```cpp #include #include #include #include using namespace std; const int N=505; int n; double r; struct dian { double x,y; dian(double X=0,double Y=0) { x=X,y=Y; } dian operator + (const dian ... 阅读全文
posted @ 2018-03-03 22:02 lokiii 阅读(156) 评论(0) 推荐(0)
摘要:```cpp include include include include using namespace std; const int N=505; int d,b,n,m; struct dian { double x,y; dian(double X=0,double Y=0) { x=X, 阅读全文
posted @ 2018-03-03 22:00 lokiii 阅读(110) 评论(0) 推荐(0)
摘要:1.质量集中在顶点上。n个顶点坐标为(xi,yi),质量为mi,则重心(∑( xi×mi ) / ∑mi, ∑( yi×mi ) / ∑mi) 2.质量分布均匀。这个题就是这一类型,算法和上面的不同。 特殊地,质量均匀的三角形重心:(( x0 + x1 + x2 ) / 3,Y = ( y0 + y 阅读全文
posted @ 2018-03-03 21:59 lokiii 阅读(208) 评论(0) 推荐(0)
摘要:参考论文:https://wenku.baidu.com/view/6f9f2223dd36a32d73758126.html 参考代码:http://hzwer.com/3500.html ~~虽然会写了但是我还是不知道弦图是个什么玩意~~ 阅读全文
posted @ 2018-03-03 21:53 lokiii 阅读(198) 评论(0) 推荐(0)