摘要:
首先f长得就很像能矩阵优化的,先构造转移矩阵(这里有一点神奇的地方,我看网上的blog和我构造的矩阵完全不一样还以为我的构造能力又丧失了,后来惊奇的发现我把那篇blog里的构造矩阵部分换成我的构造方式,交了一下完全没问题2333,并不知道为啥) 好久没写矩阵加速了,顺便说一下我的构造方法吧: 首先明 阅读全文
摘要:
看n和k的范围长得就很像矩阵乘法了 设f[i][j]表示到第i个位置的后缀最长匹配目标串的j位。转移的话显然是枚举0~9,然后选择f[i+1]中能被他转移的加起来,需要用到next数组。然后构造矩阵的时候,在转移路径上++即可(注意代码里的f数组只是辅助构造矩阵的,和上文无关 在写挂了n次kmp之后 阅读全文
摘要:
UOJ和洛谷上能A,bzoj 8ms即WA,现在也不是知道为啥……~~因为我太弱了~~ 先看数据范围发现d非常小,自然想到了状压。 所以先假装都是只能跑两种车的,这显然就是个2 SAT问题了:对于x场没有hx的,直接跳过;对于y场没有hy的,连(x,x'),表示x不能选;对于都有的,连接(x,y), 阅读全文
该文被密码保护。 阅读全文
摘要:
承德汉堡:\\( 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 阅读全文
该文被密码保护。 阅读全文
摘要:
把每个筐子拆成3个,分别表示放0/1/2个,然后把这三个点两两连起来,每一个可以放在筐里的球都想这三个点连边。 这样可以发现,放0个球的时候,匹配数为1,放1个球的时候,匹配数为1,放2个球的时候,匹配数为2,放3个球的时候,匹配数为3。 所以直接把带花树的匹配数 n即可 cpp include i 阅读全文
该文被密码保护。 阅读全文
摘要:
正好考到了所以翻一些题来做……猛然发现搞了半个月的网络流却没做两道上下界(不过这种题好像是比较少233) 首先建立超级源汇ss,tt,没限制的边照常连,对于有限制的边(u,v,mn,mx),连接(u,v,ss tt)和辅助边(ss,v,mn)(u,tt,mn)(实际操作中,对每个点记录一个度就行了, 阅读全文
摘要:
学到了线段树新姿势! 先离线读入,根据时间建一棵线段树,每个节点上开一个vector存这个区间内存在的数(使用map来记录每个数出现的一段时间),然后在线段树上dfs,到叶子节点就计算答案。 注意!!从父节点带下来的线性基数组一定要放在函数里传给子节点!全局变量就会多出好多东西!~~这个其实是常识吧 阅读全文
摘要:
…老是想到最长路上 其实可以这样:把每个环的xor和都存起来,然后任选一条1到n的路径的xor和ans,答案就是这个ans在环的线性基上跑贪心。 为什么是对的……因为可以重边而且是无相连通的,并且对于一条路,走偶数次相当于没走,所以任意走一条主路都可以从歧路走到某个环上,然后从歧路返回,此时就得到了 阅读全文
该文被密码保护。 阅读全文
该文被密码保护。 阅读全文
摘要:
参考:https://www.cnblogs.com/zhuohan123/p/3237246.html 因为一c可以由1 a b得出,所以删掉c,把a,b抽象成二维平面上的点。首先考虑一个客户需求能被哪些原料配出来:两个原料点连线上的点都可以,要是多个原料点,那么这些线的向量构成的凸包中的点都可以 阅读全文
摘要:
参考:https://www.cnblogs.com/FallDream/p/bzoj4824.html 画一画就会发现关系形成了一棵二叉树(其实看到n 1就能想到 然后dp,设f[i][j]为点i在这棵子树中排名为j,然后组合数乘着转移 这里有一个前缀和优化,返回父亲时,f为前缀和,g为后缀和,便 阅读全文
摘要:
是我想复杂了 首先发现大于关系构成了一棵二叉树的结构,于是树形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 阅读全文
摘要:
一个树状数组能解决的问题分要用树套树……还写错了~~我别是个傻子吧?~~ 这种题还是挺多的,大概就是把每个矩形询问差分拆成四个点前缀和相加的形式(x1 1,y1 1,1)(x2.y2,1)(x1 1,y2, 1)(x2,y1 1, 1),然后离散化,打上id丢去按x排序,点也按x排序。 然后按照x扫 阅读全文
摘要:
参考:https://www.cnblogs.com/neighthorn/p/6705785.html 并不是黑白染色而是三色染色(还有四色的,不过是一个意思 仔细观察一下不合法情况,可以发现都是特殊边两边有格子并且两个黑格子都在的时候黄蓝不能同在,所以(黄 黑)(黑 蓝)(黑 黑)都是最大权闭合 阅读全文
摘要:
参考:https://www.cnblogs.com/lcf 2000/p/6789680.html 这是一个相对码量少的做法,用到了区间修改区间查询的树状数组,详见:www.cnblogs.com/lcf 2000/p/5866170.html 3830447 枚举最大值a[i],找到l[i],r 阅读全文
摘要:
~~我到底怎么建的图为啥要开这么大的数组啊?!~~ 神题神题,本来以为图论出不出什么花来了。 首先要理解‘团’的概念,简单来说就是无向图的一个完全子图,相关概念详见度娘。 所以关于团一般都是NP问题,只有二分图例外。而题目中有这样一句话“n座城市可以恰好被划分为不超过两个城市群”,并且给出的是没有的 阅读全文
摘要:
参考:http://blog.csdn.net/di4covery/article/details/73065684 我以为是后缀数组+某某数据结构,结果居然是01trie!!题解说“因为是随机的所以大概不会超过40个~”~~所以40是咋算的啊我一介非酋真的不能估计……~~ 好了正解是这样的,先把询 阅读全文
摘要:
半平面交求多边形的核,注意边是顺时针给出的 阅读全文
摘要:
求多边形的核,直接把所有边求半平面交判断有无即可 阅读全文
摘要:
相当于多边形内最大圆,二分半径r,然后把每条边内收r,求是否有半平面交(即是否合法) 阅读全文
摘要:
这个代码已经不是写丑那么简单了……脑子浆糊感觉np++分分钟想暴起打死我……就这还一遍A过了…… 先都读进来hash一下,因为是平衡树所以dfs序直接按照点值来就好 对于每个操作: 1:set维护已插入的值,对新加入的x找到它的前驱后继,选深度大的挂上去(画图找规律,我也不知道为什么深度较浅的一定挂 阅读全文
摘要:
记得FFT要开大数组!!开到快MLE的那种!!我这个就是例子TAT,5e5都RE了 在这题上花的时间太多了,还是FFT不太熟练。 首先看70分的n方做法:从0下标开始存,先n ,把a数组倍增,然后枚举a数组的起点st(相当于环上a的st和b的0相匹配),设x为增量 $$ \sum_{i=0}^{n} 阅读全文
摘要:
```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 阅读全文
摘要:
~~这么简单的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 阅读全文
摘要:
参考:http://blog.csdn.net/qq_33229466/article/details/70174227 看这个等式的形式就像高精gcd嘛…所以随便算一下就发现每次修改(a,b)影响到的都是横纵坐标gcd为gcd(a,b)的,进而发现可以把gcd(i,j)==d的一部分都归到d上,f 阅读全文
摘要:
二分点所在区域,叉积判断左右 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 阅读全文