摘要: AC自动机 阅读全文
posted @ 2019-03-01 08:45 dreagonm 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 只是个简单模拟 阅读全文
posted @ 2019-02-28 18:58 dreagonm 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 计算几何基础 阅读全文
posted @ 2019-02-28 17:19 dreagonm 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 贪心+二分答案 阅读全文
posted @ 2019-02-28 16:39 dreagonm 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 单位根反演 阅读全文
posted @ 2019-02-28 07:38 dreagonm 阅读(170) 评论(0) 推荐(0) 编辑
摘要: minmax容斥 阅读全文
posted @ 2019-02-27 17:31 dreagonm 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 斯特林反演+线性基 阅读全文
posted @ 2019-02-27 11:50 dreagonm 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 第二类斯特林数 阅读全文
posted @ 2019-02-27 00:14 dreagonm 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 第二类斯特林数+FFT 阅读全文
posted @ 2019-02-26 10:16 dreagonm 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 第一类斯特林数+组合数 阅读全文
posted @ 2019-02-25 19:59 dreagonm 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 第一类斯特林数+组合数+分治+FFT+生成函数 阅读全文
posted @ 2019-02-25 19:11 dreagonm 阅读(175) 评论(1) 推荐(0) 编辑
摘要: 分治FFT的板子 阅读全文
posted @ 2019-02-25 11:27 dreagonm 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 二项式反演+动态规划 阅读全文
posted @ 2019-02-25 01:13 dreagonm 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 二项式反演(容斥原理)+错排问题 阅读全文
posted @ 2019-02-24 21:48 dreagonm 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 树形dp+容斥原理 阅读全文
posted @ 2019-02-24 19:36 dreagonm 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 一道斜率优化dp 阅读全文
posted @ 2018-12-30 18:21 dreagonm 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 树上主席树 阅读全文
posted @ 2018-12-30 11:17 dreagonm 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 莫队板子 代码 cpp include include include include define int long long using namespace std; struct Query{ int l,r,aid; }query[55000]; int ansa[55000],ansb[5 阅读全文
posted @ 2018-12-18 08:26 dreagonm 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 果然简单题,5分钟紫题++ 代码 cpp include include include using namespace std; int tag[100100 1; if(Lmid) update(L,R,mid+1,r,o 1; if(pos 阅读全文
posted @ 2018-12-17 21:28 dreagonm 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 思路 首先暴力DP显然,可以得20分 加上一个前缀和优化,可以得到40分 然后上斜率优化 设$sum_i$为$\sum_{1}^iP_i$,$sump_i$为$\sum_{1}^{i}P_i\times Pos_i$ 则决策j优于决策i的条件可以表示为 $$ dp_j+C_t+pos_t \time 阅读全文
posted @ 2018-12-17 09:10 dreagonm 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 思路 整体二分的板子题,没什么思路好说 代码 cpp include include include using namespace std; struct Query{ int type,pos,val,l,r,k,aid; }Query[110000],lx[110000],rx[110000] 阅读全文
posted @ 2018-12-16 13:42 dreagonm 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 思路 考虑题目要求求出最小的第k+1大的边权,想到二分答案 然后二分第k+1大的边权wx 把所有边权wx的边权变为0,找出最短路之后,如果dis[T] include include include using namespace std; int dis[1100],u[11000 q; q.pu 阅读全文
posted @ 2018-12-16 10:23 dreagonm 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 思路 dsu on tree的板子,可惜人傻把 打成 cpp include include include include using namespace std; int sz[100100],val[100100],heason[100100],u[100100 Q[100100]; void 阅读全文
posted @ 2018-12-15 23:38 dreagonm 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 思路 好像是一道挺水的计数的,不知道为什么会是紫题 显然每行和每列最多放两个 首先考虑状压,然后发现三进制状压可做,但是三进制太麻烦了,可以拆成两个二进制,一个表示该列是否是放了一个的,一个表示该列是否是放了两个的 可以发现并不需要知道具体每列放了什么,只需要知道有几个即可,所以把有几列放了一个和有 阅读全文
posted @ 2018-12-15 16:07 dreagonm 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 思路 看到这种偏序类的题目,而且不要求强制在线,可以立刻想到cdq分治 注意这题有一个问题,就是询问的是小于等于而不是小于,如果相等的话两个元素会相互贡献,而cdq的特点是右区间不能对左边有影响,所以要先去重,再然后就是板子 代码 cpp include include include using 阅读全文
posted @ 2018-12-15 09:18 dreagonm 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 一样是cdq的板子 照着 "园丁的烦恼" 就好了 代码 cpp include include include using namespace std; int w,cntq,cnta,nothing,type,qid,aid; namespace BIT{ int bit[2000100]; in 阅读全文
posted @ 2018-12-14 17:09 dreagonm 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 思路 其实是cdq的板子 题目要求询问对于每个给出的xi,yi,xj,yj形如xi include include using namespace std; const int MAXL = 1e7+5; const int MAXN = 500100; int n,m,ans[MAXN 5],qi 阅读全文
posted @ 2018-12-14 11:06 dreagonm 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 轮廓线动态规划是一种基于状态压缩解决和连通性相关的问题的动态规划方法 这道题是轮廓线动态规划的模板 讲解可以看lrj的蓝书 代码 cpp include include include using namespace std; long long has[120][120],n,m,dp[2][1= 阅读全文
posted @ 2018-12-13 20:09 dreagonm 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 思路 可并堆真是一种神奇的东西 不得不说这道题是道好题,虽然并不需要可并堆,但是能加深对可并堆的理解 首先考虑斜堆的性质,斜堆和左偏树相似,有如下的性质 一个节点如果有右子树,就一定有左子树 最后插入的节点一定没有右子树 然后考虑倒序删除节点就可以做了 对一个节点,如果它没有右子树,它就可能是最后插 阅读全文
posted @ 2018-12-12 10:11 dreagonm 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 所谓带修主席树,就是用树状数组的方法维护主席树的前缀和 思路 带修主席树的板子 注意数据范围显然要离散化即可 代码 cpp include include include using namespace std; struct Node{ int sz,lson,rson; }PT[100100 4 阅读全文
posted @ 2018-12-11 21:06 dreagonm 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 点分治+SG函数还真是令人意外的组合啊 思路 这道题看到找一条满足条件的链,想到点分治 看到博弈,想到SG函数 然后就变成一道SG函数+点分治的题了 然后1e9的SG函数怎么搞?~~当然是打表了~~ 然后各种出锅 多组数据记得清零 SG函数不要打错表QwQ 因为对着租酥雨julao的blog调了好久 阅读全文
posted @ 2018-12-11 18:55 dreagonm 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 没想到一发直接过了啊 思路 点分治 二分小于等于k的位置即可 代码 cpp include include include using namespace std; int middis[40010],midcnt,n,k,u[40010f[u]) root=u; } void getdis(int 阅读全文
posted @ 2018-12-09 21:17 dreagonm 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 点分治是一种处理树的优秀暴力 这是一道板子题 cpp include include include using namespace std; int u[50010 1; if(middis[mid] 1; if(middis[mid]=middis[l]){ int l2=look2(l+1,k 阅读全文
posted @ 2018-12-09 19:20 dreagonm 阅读(1008) 评论(0) 推荐(0) 编辑
摘要: dsu on tree跟冰茶祭有什么关系啊喂 dsu on tree的模板题 思想与解题过程 类似树链剖分的思路 先统计轻儿子的贡献,再统计重儿子的贡献,得出当前节点的答案后再减去轻儿子对答案的贡献 似乎很蠢 但是复杂度是$O(nlogn)$的,在没有修改的情况下,可以把树上莫队吊起来打 没了 代码 阅读全文
posted @ 2018-12-06 20:57 dreagonm 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 根据狄利克雷卷积的性质,可以在低于线性时间复杂度的情况下,求积性函数前缀和 公式 $$ 求\sum_{i=1}^{n}\mu(i) $$ 因为$\mu I=\epsilon$ 所以设$h=\mu I,S_n=\sum_{i=1}^n\mu(i)$ $$ \sum_{i=1}^{n}h(i)$$ $$ 阅读全文
posted @ 2018-12-06 17:26 dreagonm 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 推式子太快乐啦!虽然我好蠢而且dummy和maomao好巨(划掉) 思路 莫比乌斯反演的题目 首先这题有$O(\sqrt n)$的做法~~但是我没写咕咕咕~~ 然后就是爆推一波式子 $$ \sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j) $$ $$ \sum_{i=1}^{n 阅读全文
posted @ 2018-12-05 21:02 dreagonm 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 还有三倍经验的吗(窒息) 思路 其实就是P3455套了个简单的容斥 把问题转化成f(n,m,k) f(a 1,m,k) f(n,b 1,k)+f(a 1,b 1,k)就可以了 和p3455几乎一样的代码 cpp include include include using namespace std; 阅读全文
posted @ 2018-12-04 21:38 dreagonm 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 思路 和YY的GCD类似但是更加简单了 类似的推一波公式即可 $$ F(n)=\sum_{n|d}f(d) $$ $$ f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d) $$ $$ F(d)=\lfloor\frac{n}{d}\rfloor\times\lfloor\frac 阅读全文
posted @ 2018-12-04 21:13 dreagonm 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 第一次做莫比乌斯反演,推式子真是快乐的很啊(棒读) 前置 若函数$F(n)$和$f(d)$存在以下关系 $$ F(n)=\sum_{n|d}f(d) $$ 则可以推出 $$ f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d) $$ 这就是莫比乌斯反演 题目要求 求$gcd(a,b 阅读全文
posted @ 2018-12-04 18:04 dreagonm 阅读(135) 评论(0) 推荐(0) 编辑
摘要: LCT真是好用的数据结构啊(瘫) 思路 首先在每个弹力装置和它能到达的弹力装置处连边 会发现长的像一颗树一样 然后涉及到了修改,就是动态的连边和删除边,可以想到用LCT维护 然后对于修改,cut掉原来的边,再link新的节点即可 查询把(j,x+10)split出来,然后x+10节点中存放的就是需要 阅读全文
posted @ 2018-12-03 12:41 dreagonm 阅读(116) 评论(0) 推荐(0) 编辑