自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

雯舞

Love three things int he world -- Manchery

  • 博客(978)
  • 资源 (2)
  • 收藏
  • 关注

原创 [线性基 树链剖分 线段树 || ST表 || 点分治] BZOJ 4568 [Scoi2016]幸运数字

这个东西链剖之后就是个裸的区间线性基,是可以暴力合并的O(log2n)O(\log ^2 n) 所以暴力线段树是 O(nlog4n)O(n\log ^4n) 改成ST表是 O(nlog3n)O(n\log ^3n) 而如果点分的话 应该是O(nlog2n)O(n\log ^2n)#include<cstdio>#include<cstdlib>#include<algorithm>#in

2017-07-01 22:06:10 538

原创 [哈密顿路径 FFT 容斥] TCO 2016 Final HamiltonianPaths

只能走补图的边 那么原图色的边不能走 那么我们容斥走了几条原图的边 这些边肯定是一些链 把链缩成一个点 那么不考虑其他不合法边用不用的情况下 贡献是 m的阶乘 m是缩完够的点数 然后 因为缩起来的点只可能是在同一个模板图中 那么对于最后总点数m的缩点方案数 是可以先处理出单个模板图的方案数 然后fft的 状压dp预处理模板图// BEGIN CUT HERE #include<c

2017-07-01 22:00:23 570

原创 [Prufer序列推论] SRM 697 div1 ConnectedStates

首先根据可图性判定定理,可以发现任意一个和为2(n−1)2(n-1)的度数序列都存在方案,然后就是对于一个度数序列求生成树个数,根据Prufer推论,答案应该是 ∑{di}(n−2)!∏ni=1(di−1)!\sum_{\{ d_i\}} {(n-2)!\over \prod_{i=1}^n (d_i-1)!}这个直接做是O(n3)O(n^3)优化成O(n2)O(n^2),参见大佬的题解// BEG

2017-06-29 19:02:59 469

原创 [LP对偶费用流] SRM 676 div1 Farmville

二分答案T之后转化成求最小费用 加超级源和超级汇 记每个植物生长的时间为xi,结束的时间为yi,减少的时间为di。 那么限制为 yi>=xi+ti-di, yi>=xi,xj>=yi, ys+T>=xt, 最小化sum di*ci然后直接对偶成费用流在目标函数中不存在的,把权值设为inf// BEGIN CUT HERE #include<conio.h>#include<sstream

2017-06-29 18:56:27 663

原创 [区间DP] Codeforces 392E Round #230 (Div. 1) E. Deleting Substrings

好水的E题 f[i][j]表示删完[i,j]区间的最大收益 g[i][j] 表示把[i,j]删成a[i], a[i]+1, a[i]+2 …a[j]的最大收益 h[i][j]类似g[i][j],递减 f[i][j] <- g[i][k]+h[k][j]+v[2*a[k]-a[i]-a[j]+1]#include<cstdio>#include<cstdlib>#i

2017-06-29 18:52:11 555

原创 [Nim] SRM 304 div1 TheXGame

翻译题解首先给出结论 把一段看做一堆石子 可以做到跟nim游戏等价具体 我们需要归纳证明一个结论 当前current_multiplier为 cc ,石子总数为 nn ,若异或和为 00 那么后手将以至少 n2c{n\over 2}c 的净得分获胜当游戏只剩最后两步的时候,两堆石子分别是n2n\over 2,那么后手会赢 n2c×2−n2c=n2c{n\over 2}c\times 2-{n\o

2017-06-29 12:27:45 319

原创 [最短路] HDU 5910 Advanced Traffic System

理解了有一会儿,但是题解确实说清楚了关键是只需要更新一遍#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<queue>#define pb push_backusing namespace std;typedef pair<int,int> abcd;inline char nc()

2017-06-28 20:44:11 320

原创 [杂题] Ural 1961. Cantonese Dialect

根据最大似然估计,应该找出最大的 f(M)=(Mm)(N−Mn−m)(Nn)f(M)={{M\choose m}{N-M \choose n-m}\over {N\choose n}}我们手推下 f(M+1)≥f(M)f(M+1)\ge f(M),得M≤(N+1)mn−1M\le {(N+1)m\over n}-1 那么答案是(N+1)mn{(N+1)m\over n}#include<cstd

2017-06-28 20:39:26 411

原创 [两道递推题] 美团 CodeM 初赛 Round A 二分图染色 & OEIS A001499

好久没做过n=107n=10^7这种正常的递推题了二分图染色转化为棋盘模型,即 N×NN\times N 棋盘上放黑白棋子,每个格子至多放一个,同行同列没有相同颜色的棋子。 令bnb_n为只有一种颜色,那么bn=∑ni=0Cin×Pinb_n=\sum_{i=0}^n C_n^i\times P_n^i 然后我们考虑容斥掉两个颜色在同一格,如果一个格子既放黑又放白,那么这一列和这一行不会有其他棋

2017-06-26 20:44:54 1258

原创 [杂题] AtCoder Grand Contest 007 E Shik and Travel

二分答案 然后每个子树维护二元组(a,b)(a,b)表示存在一个进入该子树后,第一天花费为aa,最后一天花费为bb,中间天都满足相邻叶子距离小于等于MidMid 直接转移状态数太多,我们发现对于一个aa只需要最小的b′b',一个bb只需要最小的a′a',可以two-pointers合并 那么新的状态数|S|≤2×min(|S1|,|S2|)|S|\le 2\times \text{min}(|

2017-06-26 16:07:38 775

原创 [霍尔定理] AtCoder Regular Contest 076 F Exhausted?

霍尔定理 有完美匹配必然有任意 |S|≤|N(S)||S|\le|N(S)| 那么这题答案就是max{S−|N(S)|}max\{ S-|N(S)|\}我们枚举N(S)N(S),必然是x≤s∨x≥tx\le s \vee x\ge t的形式 那么对其有贡献的ii,满足Li≤s<t≤RiL_i\le s< t\le R_i 直接扫描线注意特殊讨论N(S)N(S)是全集的情况 这样的话不用满足Li

2017-06-26 16:01:45 923 1

原创 [堆] hihoCoder Challenge 29 D. 不上升序列

出烂了的原题,有可并堆的做法 然而昨晚翻原题的时候发现了精妙的做法看这里 令fi(x)f_i(x)为前ii个数,调整出最大值不超过xx的最小代价 那么fif_i是一条不升的折线 考虑转移 fi(x)=∑y≤xfi−1(y)+|ai−y|f_i(x)=\sum_{y\le x}f_{i-1}(y)+|a_i-y| 这实际上是两条折线合并一下 我们讨论两者的位置关系 实现的话只需要在堆中记下

2017-06-26 15:54:44 1055 5

原创 [二幂拆分] hihoCoder Challenge 29 B. 快速乘法 & BZOJ 1111[POI2007]四进制的天平Wag

参考这里 这是个经典问题,我们考虑记忆化搜索的过程,那么每次一个状态x,会产生新状态 ~x+1什么的,而这个状态数总数是O(logn)O(\log n)的 举个链接中的例子 1010110 –> 10110 –> 110 -> 10 0101010 –> 1010 所产生的所有串的数目刚好是x的位数减去末尾的0的数目那么我们就可以直接写一个记忆化搜索,然而这不优美 可以直接从低向上DP

2017-06-26 10:06:15 751 11

原创 [反演 数论] 51Nod 1355 斐波那契的最小公倍数

我好菜啊 出过一万遍的原题 我怎么第一次看见啊 某乎链接 按照zyz的做法 orzzlcm(fS)==∏T⊆S,T≠∅gcd(fT)(−1)|T|+1∏T⊆S,T≠∅f(−1)|T|+1gcd{T}\begin{eqnarray}\text{lcm}(f_S)&=&\prod_{T\subseteq S,T\neq \emptyset }\text{gcd}(f_T)^{(-1)^{|T|+1

2017-06-22 20:56:59 1388 1

原创 [容斥] BZOJ 4762 最小集合

看fls的题解吧#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;const int N=1055;const int P=1e9+7;inline void add(int &x,int y){ x+=y; if (x>=P) x-=P;}#define read(x) scanf("%d"

2017-06-22 20:38:32 411

原创 [杂题 贪心] BZOJ 2138 stone

#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,1

2017-06-22 20:31:43 598

原创 [Notes] 手工栈技巧

其实很久之前的东西了,可是最近一直懒得更,为了以后好查看还是更一下最近做一个OJ,系统栈有点小? 然后在fls的教导下,自己YY用goto和define写出了奇怪的代码 自我感觉还很优美?就是这样一个函数inline void dfs(int u){ if (vst[u]) return; vst[u]=1; f[u]=abcd(u,u); while (1){ abcd p

2017-06-22 20:25:28 502

原创 [线段树] Codeforces Round #419 (Div. 1) D. Karen and Cards

从小到大枚举xx,剩下的限制是y>bi⋀z>ciy>b_i \bigwedge z>c_i或者y>bi⋁z>ciy>b_i \bigvee z>c_i 对应的是平面上一个矩形或者挖掉一个矩形 发现平面上矩形的交取个min就好了,挖掉的矩形要取并,这个可以用平衡树或线段树维护 大概是这样,我是灵魂画师 #include<cstdio>#include<cstdlib>#include<al

2017-06-22 20:21:15 378

原创 [多项式求逆] 51Nod TalkingData数据科学精英夏令营挑战赛 F 驴蛋蛋与老孙与微分式

题解里给出了一种解偏微分方程得出生成函数的方法 最后应该是 H(z,x)=sinz+xcoszcosz−xsinzH(z,x)={\sin z+x \cos z \over \cos z−x\sin z} H(z)=sinzcosz=tanz=x+13x3+215x5+o(x5)H(z)={\sin z \over \cos z}=\tan z=x+{1\over 3}x^3+{2\over

2017-06-18 14:09:56 631

原创 [数位DP AC自动机] Codeforces 434C Round #248 (Div. 1) C. Tachibana Kanade's Tofu

这个题无话可说 fi,j,k,tf_{i,j,k,t}表示第 ii 位,AC自动机上走到 jj ,当前得分为 kk ,是否小于上界 tt , 复杂度看着很高,其实跑不满?#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x,0,sizeof(x))using

2017-06-17 20:20:37 599

原创 [分块] BZOJ 4867 [Ynoi2017]舌尖上的由乃

这个题啊 分块 每块O(n√)O(\sqrt n) 把每个块内出现次数做一个前缀和,方便二分的时候O(1)查 然后整块加就打标记,两边零散的,变化不超过10,那么就直接在前缀和数组上修改下 复杂度大概是O(nn√logn+nn√×10)O(n\sqrt n\log n+n\sqrt n\times 10) 还有个问题是前缀和存不下?其实是存的下的,我们只要求从最小值开到最大值就好了,每次整块

2017-06-17 18:42:07 856

原创 [拉格朗日乘数法 二分] BZOJ 2876 [Noi2012]骑行川藏

拉格朗日乘数法 ACdreamers [Math & Algorithm] 拉格朗日乘数法首先那个能量肯定是要花完的,就变成一个限制了,乘上拉格朗日乘子,求偏导,变成了 2λkix2i(xi−vi)=12\lambda k_ix_i^2(x_i-v_i)=1 ∑kisi(xi−vi)2=E\sum k_is_i(x_i-v_i)^2=E发现 x≥vx\ge v 且 x2(x−v)x^2(x-v

2017-06-17 18:21:25 683

原创 [Hash] BZOJ 4076 [Wf2014]Maze Reduction

第一眼觉得和一道题莫名相似,实际上并没有什么关系ft,i,jf_{t,i,j}表示从第 ii 个点,第 jj 扇门出发,走 tt 步所有情况的Hash值,那么很好转移一开始假设掉在房间中间,那我们按照顺序把所有点走过去一遍,取个最小表示,Hash在一起最后Hash值相同的就是等价了#include<cstdio>#include<cstdlib>#include<vector>#include

2017-06-17 18:11:24 478

原创 [最大团 随机化 || 二分图最大独立集] BZOJ 4080 [Wf2014]Sensor Network

最大团这种数据范围,标算只有被随机艹的节奏了吧正解 抄自这里 我们穷举两个点,这两点距离要小于限制 然后我们分别以这两个点为圆心,两点距离为半径画圆 圆圆相交的部分被两点练成线段划分成两部分,不难发现 每个部分内点点之间的距离是小于限制的,很明显想到二分图 对于上半部分与下半部分的两点,如果距离大于限制则连边 然后我们求最大点独立集即可#include<cstdi

2017-06-17 18:03:16 3047

原创 [最大似然估计 MLE] Codeforces 802DEF Helvetic Coding Contest 2017 D. E. F. Marmots

MLE最大似然估计可以通过观察数据来估计出随机的模型和参数 最大似然估计(Maximum likelihood estimation) Maximum likelihood estimation大概就是从所有可能的参数和模型中,选出概率最大的那一组模型,作为估计的模型和参数相关的还有一个最大后验估计(MAP),我没看过然后就很好写了D#include<cstdio>#include<cstdl

2017-06-17 18:00:06 740

原创 [几何] Codeforces 772B VK Cup 2017 - Round 2 B. Volatile Kite

那么问题来了 O(n)O(n)判到底对不对#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef double ld;struct P{ ld x,y; void read() { double _x,_y; scanf("%lf%lf",&_x,&_y); x=_x; y=_y;

2017-06-13 22:39:49 438

原创 [交互 点分治] Codeforces 772E VK Cup 2017 - Round 2 E. Verifying Kingdom

本来的想法是能够找出叶子的兄弟 那么就把他们以及他们的父亲缩起来 但是很难找兄弟 看了题解发现是从初始一个点加点 相当于把缩的拆回去 通过点分治 我们找出当前树的重心 这里的重心是以叶子数量为权的 然后ask一下(g的左子树中的叶子,g的右子树中的叶子,当前要加的点) 有一些细节要处理 那么就可以确定当前点是在左子树 右子树还是子树外 询问复杂度O(nlogn)O(n\log n) 时

2017-06-13 22:34:32 626

原创 [杂题] Codeforces 772D VK Cup 2017 - Round 2 D. Varying Kibibits

一个集合的 子集的和的平方 的和 就记一下 ∑a0i\sum a_i^0、∑a1i\sum a_i^1和∑a2i\sum a_i^2就好了 处理出 f(S)≥xf(S)\ge x的 这个就是一个6维前缀和 然后再把前缀和倒回去 就好了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typede

2017-06-13 22:29:49 577

原创 [数论 DAG最长路] Codeforces 772C VK Cup 2017 - Round 2 C. Vulnerable Kerbals

ax≡b(modm)ax\equiv b \pmod m 有解就是 (a,m)|b(a,m) | b 也就是 (a,m)|(b,m)(a,m)|(b,m) 那么把数按照和mm的gcd的整除关系 建成DAG 跑一个最长链#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#define pb push_bac

2017-06-13 22:26:11 503

原创 [广义后缀自动机 SG值] 51Nod 1869 那些年,我们一起讲的故事

简直 在众人的帮助下理解了一个假题意 看完题解知道真题意 大概是每次加一个字符 这个串仍然要是Trie树的子串 直接建SAM 然后求SG值 不超过度数+1 也就是27 然后先手必胜 两边SG不同 那么按字典序数一数就好了#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<cass

2017-06-13 21:58:55 558

原创 [树链剖分 可持久化线段树 垃圾数据结构题] Codechef JUNE17 #OAK Persistent oak

垃圾数据结构题大概就是维护树上的点离最大承重还差多少 然后断掉的就是到根路径上最早的小于0的地方 断掉后 到根路径还剩的承重都要加上掉下的重量 就是一颗线段树满足区间加 区间求min鄙视CC强行可持久化 硬上主席树标记永久化#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x)

2017-06-13 20:38:34 490

原创 [类欧几里得算法] Codechef JUNE17 #ES Euler Sum

这题有毒吧⌊ei⌋=⌊(e×10w)i10w⌋\lfloor ei\rfloor=\lfloor {(e\times 10^w)i \over 10^w}\rfloor然后只要ee的精度足够高 就可以当做整数类欧求 这里ww取80008000,40004000是不够的,纠结了好久,阿爷说会小数点后有进位进到个位from decimal import *import mathdef calc(a,b

2017-06-13 20:31:51 413

原创 [主席树 Hash] Codechef JUNE17 #CLONEME Cloning

对权值建主席树 然后对于区间[a,b],[c,d] 在主席树上二分排完序后从左第一个不一样的地方 以及从右第一个不一样的地方 这个可以Hash下权值的出现次数,也是可以相减的#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef unsigned long long ull;inlin

2017-06-13 20:19:59 459

原创 [提交答案题] UOJ #109 【APIO2013】TASKSAUTHOR

数据结构学傻 做做提答换换口味 最短路 case1 case3 卡掉floyd 101个点 没有边case2 case5 卡掉bellman 可以有重边 O(nm)O(nm)随便卡case4 case6 卡掉dij 这个dij没毛病? 负边 可以卡成指数级盗图自 fjzzq2002 orz图染色 case7 卡掉搜索? xjb随机就行了吧case8 放搜索过去? 二分图case1

2017-06-11 11:11:45 668

原创 [数位DP Lucas定理] 2017 计蒜之道 复赛 E. 商汤智能机器人

阿爷教导我 ∑∞i=0(Ai)∗(A+B−iA),A=x+y2,B=x−y2\sum _{i=0}^\infty \dbinom{A}{i}*\dbinom{A+B-i}{A},A={x+y\over 2},B={x-y\over2}然后就是数位dp+lucas定理的套路了 注意有减法要处理退位 一开始写的时候考虑的有点问题 调了很久很久 这个可以从低到高 也可以从高到低 因为意识模糊就

2017-06-11 08:13:52 1638 3

原创 [数位DP 莫比乌斯反演] 2017 计蒜之道 复赛 A. 阿里云秘钥池

大概可以推出来转移是 fx=∑d|xμ(d)∑⌊P−1d⌋i=1gid=∑d|xμ(d)G(d)f_x=\sum_{d|x}\mu(d)\sum_{i=1}^{\lfloor {P-1\over d}\rfloor} g_{id}=\sum_{d|x}\mu(d)G(d) 转移是O(nlnn)O(n\ln n)的 然后就直接数位dp咯#include<cstdio>#include<cst

2017-06-11 08:01:22 684 1

原创 [最短路] 2017 计蒜之道 复赛 D. 百度地图导航

直接最短路就好了 第一次写竟然只拆了一个点 样例输出一坨0 QAQ 没有拿到FB 不开心#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<cmath>#include<queue>#include<vector>#define cl(x) memset(x,0,sizeof(x

2017-06-11 07:57:01 345

原创 [DLX] IBM Ponder This May 2017 Letter gaps

裸的dfs随便剪剪就能跑出20多一点 这就启发我们直接上Dancing Link 列分别表示每个位置以及某个字符是否放了 行就枚举a-z和空格放在哪#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;const int N=205;const int M=200005;int ncnt;int

2017-06-09 14:56:26 460

原创 [最短路 虚树+线段树优化建图] BZOJ 4912 [Sdoi2017]天才黑客

sro clrs97老师:”T1特别好写” orz 听说SPFA被卡了 /点蜡这个东西跑最短路,状态肯定不能指记录点,还要记录是哪条边走过来的,那干脆就直接记录边 把边变成点,把点变成连在边之间的边我是把一条边拆成两个点,中间设为边的费用 lcp的费用在点变成的边上,这个东西裸的连,在原图一个点上是O(deg2)O(deg ^2)的肯定炸 那么就建一颗虚树,然后枚举lca,把lca是这

2017-06-09 14:51:39 1293

原创 [链分治 重链剖分 FWT] BZOJ 4911 [Sdoi2017]切树游戏

我链分治是从immortalCO今年论文学来的 就是一个序列上能够维护的东西,把他搬到重链上,先处理好儿子重链的答案,然后把对这条重链上的影响累加在这条重链上然后就是套路 FWT一下就能加和乘了 注意0没有逆元复杂度O(mnlog2n)O(mn\log^2n) 实际上树链剖分是跑不满的 rank1 开心 O(∩_∩)O~~#include<cstdio>#include<cstdlib>#

2017-06-09 14:44:47 2042

USACO全部译题

USACO全部译题,美国题库USACO全部译题,超经典的题目

2014-07-17

空空如也

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

TA关注的人

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