自定义博客皮肤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)
  • 收藏
  • 关注

原创 [Treap模拟 线段树] Codechef COT5 Count on a Treap

传送门Description在计算机科学中,Treap根据键值是一棵二叉搜索树,根据权值是一个堆(本题中为大根堆) 。 你的任务是维护一棵Treap,支持以下操作0 k w 插入一个新节点,键值为k,权值为w。1 k 删除键值为k的节点。2 ku kv 输出键值为ku和kv的两个点之间的路径长度。保证没有两个点键值相同或权值相同,并且删除一个点时该点存在。Analysis考虑如何是如何建T

2017-03-01 21:09:44 962

原创 [线段树 最长上升序列] BZOJ 2957 楼房重建

这个显然可以分块 但实际上线段树是这个模型的经典解法 考虑T[x]T[x]为仅考虑这个区间 上升序列的长度 那么T[x]T[x]肯定包含T[lsx]T[ls_x] 关键是怎么接上rsxrs_x的那一部分 关键在于这个函数 find(x,v)find(x,v) 表示xx这个区间 左边接一个vv 上升序列的长度是多少如果当前左儿子最大值M[lsx]<=vM[ls_x]<=v 区间左儿子一定会被

2017-03-01 20:53:21 881

原创 [Anti-Nim Anti-SG SJ定理] BZOJ 1022 [SHOI2008]小约翰的游戏John

我们直接分析吧 Nim博弈中如果规定最后取光者输,情况是怎样的? 初看起来问题要复杂很多(因为不能主动拿了,而要“躲着”拿,以免拿到最后一个物品),但对于Nim游戏来说,几乎是一样的:首先按照普通规则一样的策略进行,直到恰好有一个物品数大于1的堆x。在这样的情况下,只需要把堆x中的物品拿得只剩1个物品或者拿完,让对手面临奇数堆物品,这奇数堆物品每堆恰好1个物品。这样的状态显然是必败的。由于

2017-02-28 19:41:43 446

原创 [Every-SG 找规律] BZOJ 1393 [Ceoi2008]knights

题目 还是看官网吧 我们先分析单个游戏 nn很大 我们打表找规律 发现很有规律 最后一行一列要特判 写出来就是这样啦inline int SG(int x,int y){ if ((x%4==1||x%4==2)&&(y%4==1||y%4==2)) return 0; if (n%4==1 && ((x==n&&y!=n-1)||(y==n&&x!=n-1))) retur

2017-02-28 19:29:49 608

原创 [海盗分金] HDU 1538 A Puzzle for Pirates

久闻大名的海盗分金问题 详见HDU 1538 A Puzzle for Pirates(经典的海盗分金推理)#include<cstdio>#include<cstdlib>#include<algorithm>#define read(x) scanf("%d",&(x))using namespace std;int fac[]={1,2,4,8,16,32,64,128,256,51

2017-02-28 19:16:21 415

原创 [点阵图同构 Hash] POJ 1021 2D-Nim

做博弈做着做着做到了这样一道题 汗 对于每个连通块hash一下 大概有两种方法连通块内两两距离的平方和每个点向四个方向最多能走的距离的平方和的和具体 我没写过

2017-02-28 19:12:54 571

原创 [Multi-SG] POJ 3537 Crosses and Crosses & BZOJ 2940 [Poi2000]条纹

Multi-SG模型是指一个单一游戏又可以分裂成多个游戏 实际上并没有改变SG函数的实质 单一游戏的SG值是 它能分裂成的多个游戏的nim和 的mex 记忆化搜索下就好了POJ 3537画叉叉:两人在1*N的格子纸上轮流打叉,最先打出连续3个叉者获胜,问必胜者是谁?#include<cstdio>#include<cstdlib>#include<algorithm>#include<c

2017-02-28 17:56:52 396

原创 [阶梯博弈] POJ 1704 Georgia and Bob

这个对于两两之间的距离看做一堆石子 这就相当于是一个阶梯博弈 对于阶梯博弈 相当于几个奇数堆的石子在做Nim 因为把偶数堆移到奇数堆 那可以再移到偶数堆 对局面不造成影响#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;const int N=1005;int n,a[N];int main(

2017-02-28 17:50:35 282

原创 [删边游戏] POJ 3710 Christmas Game

详见组合游戏略述——浅谈SG游戏的若干拓展及变形 贾志豪 可证 叶子节点的 SG 值为 0 中间节点的 SG 值为它的所有子节点的 SG 值加 1 后的异或和对于这道题 通过分析发现了如下奇妙的性质:对于长度为奇数的环,去掉其中任意一个边之后,剩下的 两个链长度同奇偶,抑或之后的 SG 值不可能为奇数,所 以它的 SG 值为 1对于长度为偶数的环,去掉其中任意一个边之后,剩下的

2017-02-28 17:27:24 751

原创 [巴什博弈] HDU 2149 Public Sale & HDU 1847 Good Luck in CET-4 Everybody! & HDU 4764 Stone

2149简单的巴什博弈 需要抢占k+1k+1的倍数#include<cstdio>using namespace std;int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); int m,n; while (~scanf("%d%d",&m,&n)){ if (m<=n){ for

2017-02-28 07:51:17 458

原创 [圆的反演] HDU 4773 Problem of Apollonius

反演详见ACdreamer的blog反演的基本性质 不过反演中心的一条直线反演成一个过反演中心圆 反之亦然不过反演中心的一个圆反演成另一个不过反演中心的圆那题目就很显然了先把两个圆反演 变成两个圆 在求公切线 再反演回去可能用到的几何方法两圆的公切线两个相交圆的交点最后上几张图 #include<cstdio>#include<cstdlib>#include<algorith

2017-02-28 07:41:07 495

原创 [替罪羊树 动态点分治 替罪羊式重构] BZOJ 3435 [Wc2014]紫荆花之恋 & UOJ #55 【WC2014】紫荆花之恋

网上题解都说的很详细了吧 考虑点分治 dist(i,j)≤Ri+Rjdist(i,j) ≤ R_i+R_j 可以转化成Dj−Rj≤Ri−DiD_j-R_j ≤ R_i-D_i 其中DiD_i表示到重心的距离 开两颗平衡树维护 一颗统计 一颗去重 然后 因为要动态加点 点分树的性质不能保证 所以当一个子树的大小超过某个阈值时 就把点分树替罪羊式重构下 说起来真轻巧#include<cs

2017-02-26 19:19:02 582

原创 [带标号DAG计数 容斥原理 多项式求逆 多项式求ln] COGS 有标号的DAG计数系列

题目链接 传送门I 传送门II 传送门III 传送门IV 题解戳这里 大致解法和思想是同这里一样的DAG1找出一个入度为00的点 那么答案为C1n∗21∗(n−1)∗fn−1C_n^1*2^{1*(n-1)}*f_{n-1} 但是一张DAG里会有多个入度为00的点会重复计数 考虑容斥 得到 fn=∑k=1n−1k−1∗Ckn∗2k∗(n−k)∗fn−kf_n=\sum_{k=1}^n -1

2017-02-24 02:17:20 1054

原创 [FFT 模板题] UOJ #34 多项式乘法

主要就是想看看自己能写的多快 结果并不快#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;typedef double ld;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p

2017-02-24 01:48:46 418

原创 [Bell数] HDU 4767 Bell & BZOJ 3501 PA2008 Cliquers Strike Back

ACdreamer大牛的详细介绍Bell数 大概是这样的有递推公式 可以分治FFT求 生成函数很优美 可以用多项式科技求 是第二类斯特林数的和 可以用Bell三角形预处理 神奇的同余性质 可以计算对小质数取模的值 也可以CRT合并 这里的p是不大于100的素数 模素数p的周期 这里就是求bell模一个数的值 可以发现 95041567=31∗37∗41∗43∗4795041567 = 31*

2017-02-24 01:36:00 624

原创 [DP] BZOJ 1974 [Sdoi2010]auction 代码拍卖会 & 51Nod 1261 上升数

tls的题解 关键在于 对于一个上升数 比如 1123445 我们习惯性的把他纵向切割 1 1 2 3 4 4 5 但是只要我们转变一下 横向切割 变成 1111111+11111+1111+111+1 就会发现一些很好的性质 首先 最多被切割成9段 然后这些形似1111⋯1111\cdots的数取模肯定是有循环节的 把余数相同的合并成一组 做一个分组背包 记得因为10k−1910^{k

2017-02-24 01:22:15 527

原创 [可持久化可并堆 || ST表 点分治] BZOJ 3784 树上的路径

显然是用堆来维护 每弹出一个解 加入其后继 怎么定义后继 经典做法是点分后维护一个类似超级钢琴的东西 首先对这棵树进行点分治,在分治的时候将所有点到根的距离依次放入一 个数组qq中 对于一棵子树里的点,合法的路径一定是qlql到qrqr的某个数加上自己到重心的距离 定义五元组(v,l,m,r,w)(v,l,m,r,w),表示当前路径长度为vv,在[l,r][l,r]里选出最

2017-02-23 12:54:28 787

原创 [乱搞] Codeforces 73E Beta Round #66 E. Morrowindows

远古乱搞题 我们发现选择一个aia_i可以在所有aia_i的倍数后面切一刀 表示把他们分开了 那么我们的目标是 所有的数后面都得被切至少一刀 我们发现质数要被切显然只能选他本身 而我们选所有质数 也肯定是最少的 然后 就做完了 坑点多多 我是败在没有特判ai=1a_i=1上 其实还有aia_i有重复吧?#include<cstdio>#include<cstdlib>#include

2017-02-23 12:36:15 359

原创 [乱搞] BZOJ 1141 [POI2009]Slw

这也算个神题吧 也只有POI出的出来了 Po姐的题解很详细就不多说了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+

2017-02-23 12:31:42 368

原创 [Polya计数] BZOJ 3202 [Sdoi2013]项链

大数论题 可以分成三部分解决 求合法的珠子的方案数 这个可以用反演解决 求本质不同的项链 这个直接Polya 要求相邻不能相同 这个可以递推出每个长度的环的方案数 但是不够快 可以直接求出通项 这里有篇超具体的题解 我就懒得一步步具体写了 数学公式太多绝对是大工程 最后有个小trick n>Pn>P 那么nn可能是PP的倍数 那么就没有逆元 那么我们先模P2P^2 如果nn是PP的倍数

2017-02-22 18:16:31 678

原创 [母函数 泰勒展开] BZOJ 3028 食物

这个神题汉堡=x0+x2+x4+⋯=11−x2x^0+x^2+x^4+\cdots={1 \over {1-x^2}} 蜜桃=x1+x3+x5+⋯=x1−x2x^1+x^3+x^5+\cdots={x \over {1-x^2}} 面包=x0+x3+x6+⋯=11−x3x^0+x^3+x^6+\cdots={1 \over {1-x^3}} 鸡块=x0+x4+x8+⋯=11−x4x^0+x^4

2017-02-21 19:20:16 1063

原创 [Polya计数] SPOJ 422 TRANSP2 - Transposing is Even More Fun

以下来自JYT的ppt n个点的环 m种颜色 本质不同的染色为 ∑d|nϕ(nd)∗fd\sum_{d|n} {\phi ({n \over d })*f_d}#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc()

2017-02-21 19:06:42 728

原创 [Polya计数 图的同构] BZOJ 1478 Sgu282 Isomorphism

其实很久以前就做过了 还是安利这里 可以发现当只有两种颜色时就是本质不同的无向图的个数 以下来自JYT的ppt #include<cstdio> #include<cstdlib> #include<cmath> #include<algorithm>using namespace std;typedef long long ll;const int N=65; ll

2017-02-21 19:02:01 990

原创 [容斥原理] BZOJ 2839 集合计数

考虑容斥原理 计算交集大小至少为i的集合有多少种 首先需要选出ii个元素 方案为CinC_n^i 其它2n−i2^{n−i}个集合每个可选可不选 一共22n−i−12^{2^{n−i}}−1种 故答案为∑i=kn(−1)i−kCinCki(22n−i−1)\sum _{i=k}^n (−1)^{i−k} C_n^i C_i^k (2^{2^{n−i}}−1)#include<cstdio>

2017-02-21 18:48:22 688

原创 [指数型生成函数] HDU 1521 排列组合

对每种物品建EGF Ai(x)=∑i=0aixii!A_i(x)=\sum _{i=0}^{a_i} {x^i \over i!} 然后[xm]∏Ai(x)[x^m]\prod A_i(x)即为答案 这个题直接做一个背包就好了 而且爆搜也能过?#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>usin

2017-02-21 18:43:48 469

原创 [第一类斯特林数] HDU 3625 Examining the Rooms

nn个房间 每个房间的钥匙随机放在某个房间内 概率相同 有kk次炸门的机会 不能炸1号房间 求能进入所有房间的概率 钥匙与门的对应关系呈现出环。打开一个门之后,环内的所有房间都可以进入。 问题就转化成了nn个房间形成1~kk个环的概率。 题目还有一个特殊要求即,1号点不能单独成环。 所以答案就是 ∑ki=1s(n,i)−s(n−1,i−1)n!{ \sum_{i=1}^k s(n,i)-s

2017-02-21 18:37:12 349

原创 [多项式开根 模板题] BZOJ 3625 [Codeforces Round #250]小朋友和二叉树

令A(x)=∑i∈SxiA(x)=\sum _{i \in S} x^i 以及f(x)f(x)为答案的母函数 那么f(x)=A(x)∗f2(x)+1A(x)∗f2(x)−f(x)+1=0f(x)=1±1−4A(x)−−−−−−−−√2A(x)=21±1−4A(x)−−−−−−−−√f(x)=A(x)*f^2(x)+1 \\ A(x)*f^2(x)-f(x)+1=0\\f(x)={1 \pm \s

2017-02-21 18:31:24 1087

原创 [多项式求逆 模板题] BZOJ 4555 [Tjoi2016&Heoi2016]求和

推导不多说了 在很久之前就写过了 观察柿子gn=∑i=1n2∗Cin∗gn−ig_n=\sum _{i=1}^n 2*C_n^i*g_{n-i} 写成卷积的形式 gnn!=∑i=1n2i!∗gn−i(n−i)!{g_n \over n!}=\sum _{i=1}^n{2\over i!}*{g_{n-i} \over (n-i)!} 那么的话 分别令 f(x)=∑i=0∞gii!xif(

2017-02-21 18:19:42 1462

原创 [带标号无向连通图计数 容斥原理 多项式求逆 多项式求ln 模板题] BZOJ 3456 城市规划

可以通过容斥求出答案的表达式fi=2C2i−∑j=1i−1Cj−1i−1∗fj∗2C2i−jf_i=2^{C_i^2}-\sum_{j=1}^{i-1} C_{i-1}^{j-1}*f_j*2^{C_{i-j}^2} 其中前一部分表示i个点任意连边 后半部分枚举1所在的连通块然后容斥掉∑j=1ifj(j−1)!∗2C2i−j(i−j)!=2C2i(i−1)!\sum_{j=1}^i {f_j \o

2017-02-21 18:08:59 2641

原创 [树形DP] HihoCoder #1471 Challenge 27 拥堵的城市

大概就是f[i][j]f[i][j]表示ii子树中还有jj条链伸出来 子树合并进来转移一下 转移的时候枚举kk对边要配对 也就是不伸出去了 比赛的时候复杂度分析错 搞得自己一开始否定了这个转移 最后几十秒钟查出错还把代码给交错了 真的是整场比赛智商无下限 感谢整场带我的rxd大爷#include<cstdio>#include<cstdlib>#include<algorithm>

2017-02-19 21:37:13 495

原创 [二分 ST表] HihoCoder #1469 Challenge 27 福字

这个只要枚举左上角 然后二分最大值 xjb搞一下就好了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(bu

2017-02-19 21:32:38 876 4

原创 [置换 组合数学 基环内向树] AGC 008 E - Next or Nextnext

传送门这个 我也不知道怎么说啊 把 ii 向 a[i]a[i] 连边 因为点数等于边数 每个点入度至多为2 那么基环内向树和环组成的森林 由置换那一套理论可知 置换的开方 一些长度相同的环 可以合并 然后 枚举一下每种长度几对环合并 组合计数一下 剩下的不合并的环 如果是大于1的奇环 也是可以选择开方或不开方的 至于每棵基环内向树 可以看出不可以和其他树或环合并 且支链一定是一条直链 然

2017-02-19 14:32:15 1494 1

原创 [分块 阈值 离线] BZOJ 3351 [ioi2009]Regions

这个题啊 自己刚了三小时树分块 没什么卵用 我就说 怎么会有题出树分块那么的话 我们对询问 (a,b)(a,b) 按照 b 这种颜色在树上的出现次数分类 阈值设为n√\sqrt n如果b出现次数 < n√\sqrt n 那么我们暴力对每个为b的点询问一通 在dfs时边记录边询问可以做到 O(qn√)O(q\sqrt n)然后如果 b出现次数 > n√\sqrt n 那么这种b最多只有 n√\sq

2017-02-19 14:13:44 657

原创 [最小环 最小环计数 最大平均环 模板题] POJ 1734 Sightseeing trip & FZU 2090 旅行社的烦恼 & POJ 2949 Word Rings

不多说 网上有很多#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x,0,sizeof(x))using namespace std; const int N=105; const int oo=1<<29; int n,m,Ans; int

2017-02-17 21:49:26 606

原创 [斐波那契博弈] BZOJ 2275 [Coci2010]HRPA & HDU 2516 取石子游戏

证明时用到的斐波那契数列的性质#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;ll n,f[100];int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); sca

2017-02-17 21:48:15 551

原创 [矩阵树定理] BZOJ 3534 [Sdoi2014]重建

这里有个奇怪的词条 变元矩阵-树定理 也就是说 基尔霍夫矩阵的任意一个代数余子式是所有生成树的边权积的和 我们直接会得出∑T∏e∈Tpe\sum_T \prod_{e\in T} p_e 但这样不对 应该是 ∑T(∏e∈Tpe∏e∉T(1−pe))\sum_T ( \prod_{e\in T} p_e \prod_{e\notin T} (1-p_e) ) 所以我们变幻一下边权 求出∑T∏e

2017-02-17 21:45:15 913

原创 [矩阵树定理 模板题] BZOJ 1016 [JSOI2008]最小生成树计数 & HDU 4408 Minimum Spanning Tree

根据Kruscal算法的过程 我们可以得到一些结论 来自 这里如果 A,BA, B 同为 GG 的最小生成树,且 AA 的边权从小到大为 w(a1),w(a2),w(a3),⋯w(an)w(a_1), w(a_2), w(a_3), \cdots w(a_n),BB 的边权从小到大为 w(b1),w(b2),w(b3),⋯w(bn)w(b_1), w(b_2), w(b_3), \cdots w

2017-02-17 21:30:46 514

原创 [启发式合并 乱搞] 计蒜客 10447 立方数路径

可以在LCA处统计答案 然后考虑向上启发式合并 怎么统计答案 注意到 质因子的个数只有30个 我们用3303^{30}个数字来表示状态 然后就是每位在模3意义下的加减法 不过并没有想到什么好的方法 比如转化为位运算来实现 所以在rxd的指导下 对363^6打表 然后分五段查表 复杂度减小了些#include<cstdio>#include<cstdlib>#include<algorithm>

2017-02-17 21:22:26 417

原创 [LP对偶费用流] JAG Practice Contest 2015 J Longest Shortest Path

一个有向图 起点为s 终点为t 每条边有个初始长度de和边权ce。 可以花x*ce的代价将一条边的长度增加x 但是不能减小。 问不超过P的代价最大化s到t的最短路好题 就是不知道能不能直接线性规划艹过去 以下全部抄题解 balabala现列出限制然后对偶发现这个是流量的形式然后进行变量的变换变成由最小费用最大流的性质知 目标函数的一部分g(m)g(m)是下凸的有 ans=g(m)/mans=

2017-02-16 12:20:33 1168

原创 [凸包最大内接圆 二分 半平面交] POJ 3525 Most Distant Point from the Sea

二分答案 然后半平面向内缩 判断是否有交#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;typedef double ld;const double eps=1e-7;inline int sgn(ld a){ if (fabs(a)<eps) return 0

2017-02-16 12:07:08 464

空空如也

空空如也

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

TA关注的人

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