自定义博客皮肤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

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

原创 [边双连通分量 缩点 虚树 欧拉序列LCA] Codeforces 639F VK Cup 2016 - Round 1 F. Bear and Chemistry

这道题就是缩缩缩!先把原图缩成一个双连通树 然后查询的时候把所有关键点缩成一颗虚树 加完询问里的边 在缩一次双连通#include #include #include #include #include#include#define cl(x) memset(x,0,sizeof(x)) using namespace std; inline ch

2016-12-28 18:48:43 732

原创 [欧拉回路] Codeforces 429E #245 (Div. 1) E. Points and Segments

题解传送门:http://codeforces.com/blog/entry/12265#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,

2016-12-27 20:42:18 799

原创 [欧拉回路 dfs树] Balkan OI 2016 Acrobat

传送门:http://boi2016.ccs.org.cy/大概就是一个二分图 每次可以使一条xi-yj的边变换为xj-yi 或在y之间任意加边 使存在欧拉回路我们可以先把x侧都度数为偶数 我们发现 对于xi-yj进行变换 xi yi xj yj 奇偶性都发生变化然后呢 我们对 i-j 连边成为一个新图 那么就是找尽量少的边使每个点度数符合要求奇偶性 这个在任意一可生成树上贪心

2016-12-27 20:41:01 557

原创 [点分树] BZOJ 3924 [Zjoi2015]幻想乡战略游戏

%%%CLJ首先动态维护每个点的答案?动态树分治就好了怎么找重心对于分治结构的每一个点,我们枚举它的出边如果某条出边连向的点的距离之和小于当前点,那么答案一定在那条出边指向的子树中,分治做下去就行了这样是两个log再乘20的  实际上最优可以一个log跑的竟然还没有当年不懂事打的暴力快#include #include #includeus

2016-12-27 14:08:33 489

原创 [dfs树 神奇思路] Codeforces 730K NEERC16 Southern Subregional K. Roads Orientation Problem

这种思路是怎么想到的 学习新姿势https://wiki-new-meta.icpc-camp.org/2016-2017%20ACM-ICPC,%20NEERC,%20Southern%20Subregional%20Contest#include#include#include#include#include#define cl(x) memset(x,0,siz

2016-12-26 20:53:21 698

原创 [伪位运算生成树] HDU 5629 Clarke and tree

求边权and和最大生成树从高位到低位枚举 看这位为1的以及满足当前答案(答案上为1的位 则边权这一位也要为1)的边是否能构成一棵生成树#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) {

2016-12-26 20:49:18 412

原创 [莫比乌斯反演 高斯消元 数学技巧] BZOJ 3601 一个人的数论

推导过程直接拉过来不是很好 看这位神犇的吧http://www.cnblogs.com/jianglangcaijin/p/4033399.html#include#include#includeusing namespace std;typedef long long ll;const ll P=1e9+7;inline ll Pow(ll a,ll b)

2016-12-26 18:43:19 503

原创 [树上LIS 线段树合并] Codeforces 490F #279 (Div. 2) F. Treeland Tour

这道题数据好小啊 那么就可以暴力DP了这里有nlog2n的做法我们想一条链可以在他的LCA处统计每个点 我们对于以每个子树中的权值结尾的LIS LDS记录在线段树里我们可以向上合并线段树 答案在合并的时候更新就好了用 这一棵左儿子的lis和那一颗右儿子的lds 与 这一棵左儿子的lds和那一颗右儿子的lis 更新答案#include#include#includ

2016-12-26 15:01:59 1193

原创 [玄学分治 || 线段树] BZOJ 2675 Bomb & Tsin 1322 Bomb(李超)

玄学分治做法 %%% http://www.cnblogs.com/ccz181078/p/5603283.html三个点(x1,y1),(x2,y2),(x3,y3)的两两曼哈顿距离和为2(max(x1,x2,x3)+max(y1,y2,y3)-min(x1,x2,x3)-min(y1,y2,y3))四项三个点 由抽屉原理 必至少有两项是同一个点的那么最大值就是max

2016-12-26 14:57:02 647

原创 [分块 块的分裂 || 替罪羊树套线段树] BZOJ 3065 带插入区间K小值

省选时收了分块大师的教导于是用分块过了这题 当时竟然没有发上来具体快忘完了 只是记得分裂什么的#include#include#include#includeusing namespace std;typedef pair abcd; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;

2016-12-25 14:10:31 588

原创 [点分树 树状数组] BZOJ 3730 震波

线段树T成翔 只能用vector写BIT 痛苦的回忆啊思路不难想 先建出点分树 然后每个点对于他掌管的点的距离与权值建成BIT然后每次查询就是爬点分树这里有点注意往树上爬的时候不能中途break,不会因为有一个祖先爬不上去就终止,说不定有一个爷爷比爸爸还近#include#include#include#includeusing namespace std;

2016-12-25 12:06:55 552

原创 [点双连通分量 缩点 树链剖分] Codeforces 487E #278 (Div. 1) E. Tourists

点双连通分量的缩点技巧来自:http://blog.csdn.net/a_crazy_czy/article/details/52244069在这里我们使用这样一种方法:对于每一个点双连通分量,我们建一个新建点储存点双所有点的最小权值,然后该点向点双内所有不是深度最小的点连一条边,然后深度最小的点(大多情况为割点,当然树根不一定是割点)向这个新建点连边。 注意到这棵树一定是普通

2016-12-24 15:57:12 637

原创 [BFS Tarjan_LCA 生成树] CERC 2016 H Hangar Hurdles

就是题解写的这样了#include#include#include#include#define X first#define Y secondusing namespace std;typedef pair abcd;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;

2016-12-23 16:53:40 817

原创 [XOR最小生成树 分治 Trie || Prim 堆] BNUOJ 52318 Be Friends

关于位运算生成树问题 尛焱轟在APIO上专门讲过 一些杂七杂八的东西不过还是没怎么搞清楚这个可以分治 显然对于最高位 为0的一团 为1的一团 那么只需要找最小的一条边连接 这个可以在其中一半枚举 另一半建成Trie在上面查询然后分治到低一位#include#include#include#includeusing namespace std;typ

2016-12-23 16:20:18 916

原创 [AND最大生成树 分治 Trie || Kruskal] UOJ Goodbye Yiwei C #176. 新年的繁荣

这个直接上题解吧 :http://vfleaking.blog.uoj.ac/blog/1244Kruskal 用尛焱轟的话来说就是枚举边权 可以发现一种边权最多只有O(m)个联通块需要合并 O(m 2^m a(n))#include#include#includeusing namespace std;typedef long long ll;inli

2016-12-23 16:12:28 657

原创 [LCT 边双连通分量缩点] BZOJ 2959 长跑

一个边双连通分量肯定可以定向成一个环 那么就缩点每次连接 要是本来不连通 就连起来连通的话就把树上路径全缩起来询问就是树上路径的值#include #include #include #include #include #include using namespace std; typedef pair abcd; typ

2016-12-23 16:04:26 554

原创 [K短路 可持久化堆] HDU 5960 Subsequence

建图不难 然后直接上K短路 A*被完虐#include#include#include#include#include#include#define cl(x) memset(x,0,sizeof(x));using namespace std;typedef long long ll;inline char nc(){ static char buf[1000

2016-12-21 07:09:55 1064

原创 [K短路 可持久化堆 最短路径树] JDFZ 2978 第k短路(强)

链接:https://oj.jdfz.com.cn/oldoj/problem.php?id=2978鼎爷的【课件】堆的可持久化和k短路#include#include#include#include#include#include#define cl(x) memset(x,0,sizeof(x));using namespace std;ty

2016-12-21 07:06:27 936

原创 [LCT 动态最大生成树] HDU 5398 GCD Tree

一个数肯定是和自己约数连更优那么就是动态维护最小生成树两个log#include #include #include #include#include#include using namespace std; typedef pair abcd;typedef long long ll; inline char nc(){ static

2016-12-19 20:27:17 502

原创 [二分图染色判奇偶换 || 并查集] HDU 5215 Cycle

其实判奇偶环应该可以用带权并查集 不是很清楚 没有写过二分图无奇环 非二分图必有奇环偶环么 要是两个奇环有公共点必然可以变成一个偶环 那么在dfs树上打标记 看一个点被几个奇环包含标记先差分再向上传递 老套路了#include#include#include#include#pragma comment(linker, "/STACK:102400000,10240

2016-12-19 20:25:23 443

原创 [分层图 DP] HihoCoder #1147 时空阵

题解:http://blog.csdn.net/nlj1999/article/details/50413427?locationNum=4由于K于是乎边只能和上一层以及本层的节点相连。注意最后一层必有n 然后剩下的弄成一团 无所谓分不分层 放在n那一层的后面 #include#include#includeusing namespace std;

2016-12-19 20:21:07 562

原创 [贪心 构造] BZOJ 2943 [Poi2000]三臂起重机 Triple-Arm Crane

在BZOJ上蜜汁RE但是main上过了if p > q then swap(p,q)for I :=  1  to  n  do     if  i没有放  then     if  i + p没有放  then 放(i,i+p,i+p+q)      else  放(i,i+q,i+p+q)为什么这么做可行呢 可以证明对于每个循

2016-12-18 13:12:11 405 2

原创 [平面图 贪心 || 最大流] BZOJ 2939 [Poi2000]滑雪 Skiers

直接做最大流是可以的。不过可以发现,因为所有的路线不相交,故最左的路线尽量往左取显然是最优的。从左至右深搜此图即可得出答案。and the following k integers are their numbers, which are ordered according to the arrangement of glades leading to them, in eas

2016-12-18 13:06:45 656

原创 [博弈 图论] BZOJ 2922 [Poi1998]Chase

%%% BYVOID 注意到题上的一个看似无关紧要的条件,“不包括三角形”,这是一个突破口。由这个条件,我们可以证明,如果一个图不存在度数为1的顶点,B永远也追不上A。也就是B想追上A,必须让A“走投无路”。于是我们首先把原图处理一下,求出对于A来说的安全区。对于A来说的安全区,也就是一个没有度为1的顶点的最大子图。我们把这个安全区求出,并标记上。A要想不被B抓住,则一

2016-12-17 11:41:38 538

原创 [哈夫曼树 堆] BZOJ 2923 [Poi1998]The lightest language

详见BYVOID大神的blog可以看出这是一棵哈夫曼树的若干叶子节点 那么我们开始考虑从一棵空树扩展如果叶节点数小于n 那么取最小的扩展否则 如果取最小的扩展 答案更优的话继续 不优的话之后同样不会变优 扩展时记得删去一些最大的数 保持堆的大小#include#include#include#includeusing namespace std;inli

2016-12-17 11:39:59 629

原创 [数形结合 数位DP] BZOJ 2917 [Poi1998]Painter’s Studio

以左下角为(0,0)建立坐标系,考虑一个点a,b存在一个洞(称为yes(a,b))的条件为存在i使得a的第i个二进制位为0,b的第i个二进制位为1,故问题转化为求所有a,b使 a,b,a+x,b+y∈[0,2^n-1] and yes(a,b) and yes(a+x,b+y)    使用递推解决:    f[I,0..1,0..1]表示第i位至第n位,a是否得到了了前n-1位的进位,

2016-12-17 11:34:37 519

原创 [递推] BZOJ 2914 [Poi1997]ADDON

首先简述题意:找出最大的高度H,使得存在一个最小的稳定高度集合,它们能够组合出且只能够组合出不超过H的稳定高度。类似数学归纳法的递推,程序简单,但很巧妙。奠基:第1个数必然要取,并且显然可行。递推:前K个数取出某个最小的集合{a[1],a[2]……a[m]},且能且只能组合出不超过h[k]的稳定高度。      若对于h[k+1],存在某个高度x满足        h[k]

2016-12-17 11:31:26 2225

原创 [并查集] BZOJ 2919 [Poi1998]Word equations

所有的相同字母(包括0,1)的对应位置取值相等并且方程左右的对应位置取值相等,相等关系具有传递性,故我们使用并查集,每个位置作为一个元素,将所有取值要求相等的位置所对应的集合合并,那么有以下几种情况:1.  左右长度不等,ans=02.  1与0被合并至一个集合,ans=03.  设k=不包含1与0的集合的个数,ans=2^k#include#include#inclu

2016-12-17 11:28:45 486

原创 [贪心 归并排序] BZOJ 2920 [Poi1998]How to pack containers

对于容器从小到大考虑,首先将体积为i的方案与已有方案利用归排合并,然后若当前的方案不足T[i]个则无解,否则选取前T[i]个加两合并作为下一次的方案。#include#include#includeusing namespace std;typedef pair abcd;inline char nc(){ static char buf[100000],*p1=buf

2016-12-17 11:26:41 474

原创 [模型转化 最长下降子序列] BZOJ 2924 [Poi1998]Flat broken lines

将坐标系向左旋转45度,那么折线就要求x,y均不降,以x为第一关键字,y为第二关键字排序,那么一条折线就对应一个不降子序列。根据最小链覆盖=最长反链,故求出最长下降子序列的长度即可#include#include#includeusing namespace std;const int N=30005;struct abcd{ int x,y; void re

2016-12-17 11:25:22 411

原创 [FloodFill] BZOJ 2936 [Poi1999]降 水 Water

详见:http://blog.csdn.net/clover_hxy/article/details/52956172久闻Floodfill算法 对于矩形最外围的点必然是存不住水的,那我们可以从边界开始扩展。考虑什么样的地方能够积水,一定是他周围的格子都比他高,而最大的存水量,一定是根据他周围最低的格子确定的。所以我们每次从队列中选取积水量最小的点,

2016-12-17 11:19:29 433

原创 [区间DP 中位数] BZOJ 2933 [Poi1999]地图 Map

区间DP没什么好想的  mn2也懒得优化了中位数 这个递推好啊P[i,j]有定义式为P[i,j]=Sum{ Abs( S[k]-Mid(i,j) ) | i但是如果我们直接这样求,时间复杂度高达O(N^3 + N^2*M),关键在于求P[i,j]时浪费了太多时间。其实我们可以递推求出P[i,j]。递推式P[i,j]=P[i+1,j] + Mid(i,j) - S

2016-12-17 11:16:32 450 1

原创 [欧拉回路] BZOJ 2935 [Poi1999]原始生物 Primitivus

建图十分明显 就是求最短的路径覆盖所有边对于每个连通分量 要是存在欧拉回路 那么就是边数+1如果不存在欧拉回路 那么加边成为欧拉回路 然后任意拆一条边 所以就是边数#include#include#includeusing namespace std;const int N=1005;namespace Tset{ int fat[N],rank[N];

2016-12-17 11:12:56 1201

原创 [博弈] BZOJ 2927 [Poi1999]多边形之战 Polygons

设与R1相邻的三角形个数为k,那么先手胜当且仅当    (k =1)  or  (n-k-3)与k奇偶性不同 即(k=1)  or  n为偶数写法略丑 嘿嘿嘿嘿#include#include#includeusing namespace std;const int N=50005;int n,K;int a[N][3],b[N],c[N];

2016-12-17 11:08:52 402

原创 [几何 分治] BZOJ 2928 [Poi1999]飞弹 Rockets

算导上的经典问题n2logn啊 卡来卡去 卡时过 main上过不去 TLE每次找到两个点I,j连一条边,使它们连线左边黑点=白点,右边黑点=白点,然后对左右递归处理即可。由数学归纳法可证这样一定有解。时间复杂度关键在于划分的平衡性,以及找连线的复杂度未想到如何快速Devide#include#include#inclu

2016-12-17 11:07:01 460

原创 [高精度 递归] BZOJ 2930 [Poi1999]梦游者 Sleepwalker

我还能说什么呢#include#include#include#includeusing namespace std;const int con=100000000;const int wei=8;class Int{ public:long long a[100]; void getdata(int x){memset(a,0,sizeof(a));wh

2016-12-17 11:02:23 388

原创 [DP 状态稀疏性优化] BZOJ 2925 [Poi1999]单一阿拉伯数字表示法 Monodigital Representations

状态稀疏性优化?我也不知道是什么东西 反正就是乱搞f[i]表示得到i的最少的数字k  {i   f[k]=1 f[kk]=2 f[kkk]=3 ……   f[i] = min(f[j]+f[i-j],f[j]+f[i+j],f[j]+f[i*j],f[j]+f[i/j])优化:答案不超过8,易知可行状态不会很多(4000左右),使用类广搜实现即可。时间复杂度4000^2

2016-12-14 06:49:10 403

原创 [数位DP 高精度 拓扑排序 bitset] BZOJ 2913 [Poi1997]XOR Gates

先拓扑 再xor出输出的表达式然后就是数位DP了到底用不用高精度?#include#include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+f

2016-12-13 21:14:37 406

原创 [DP 压位] BZOJ 2915 [Poi1997] gen Genotypes

Tn3复杂度能过?搬题解逆向思维. 设d[i,j,c]为真当且仅当[i,j)的子串可以合成字母c. 递推时可枚举分裂位置k: 对于某个规则A1A2A3, 如果d[i,k,A2]与d[k,j,A3]均为真, 则d[i,j,A1]为真. 即:d[i,j,A1] = d[i,j,A1]OR (A[i,k,A2] AND A[k,j,A3])状态有cn2个, 转移有

2016-12-13 21:12:37 431

原创 [Notes] 集训队论文 阅读小结

前不久开始看集训队论文 收益很大 但是光看不刷题是不行的 虽然还有大半没看完 暂时告一段落了 整理分类了自己用心看过的论文留作纪念 亦作日后温习几何顾研《浅谈随机化思想在几何问题中的应用》★高逸涵《与圆有关的离散化方法》★金恺--极限法,解决几何最优化问题的捷径★数学李羽修--Hash函数的设计优化★潘震皓--置换群快速幂运算

2016-12-12 20:08:36 421

空空如也

空空如也

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

TA关注的人

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