2012年3月24日

spoj 2939 Query on a tree V 动态树分治

摘要: 题意:给一棵树,树上的节点黑白染色,初始时全黑。每次操作可以改变一个节点的颜色,或者查到某点最近的白点距离。 1 #include<iostream> 2 #include<cmath> 3 #include<cstdio> 4 #include<cstring> 5 #include<algorithm> 6 #include<queue> 7 using namespace std; 8 #define NMAX 100010 9 struct node 10 { 11 int num; 12 node *next; 阅读全文

posted @ 2012-03-24 17:10 myoi 阅读(540) 评论(0) 推荐(0) 编辑

spoj 2666 Query on a tree IV 动态树分治

摘要: 题意:给一棵有边权树,树上的节点黑白染色,初始时全白。每次操作可以改变一个节点的颜色,或者查询最远的两个白点的距离。思路:同zjoi 2007 hide 1 #include<iostream> 2 #include<cmath> 3 #include<cstdio> 4 #include<cstring> 5 #include<algorithm> 6 #include<queue> 7 using namespace std; 8 #define NMAX 100010 9 struct node 10 { 11 in 阅读全文

posted @ 2012-03-24 17:07 myoi 阅读(1089) 评论(0) 推荐(0) 编辑

zjoi 2007 hide 捉迷藏 动态树分治

摘要: 题意:捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。 游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的时候,所有的灯都没有被打开。每一次,孩子们只会躲藏在没有开灯的房间中,但是为了增加刺激性,孩子们会要求打开某个房间的电灯或者关闭某个房间的电灯。为了评估某一次游戏的复杂性,Jiajia希望知道可能的最远的两个孩子的距离(即最远的两个关灯房间的距离)。 我们将以 阅读全文

posted @ 2012-03-24 17:03 myoi 阅读(1150) 评论(0) 推荐(0) 编辑

2012年3月19日

sgu 208 Toral Tickets polya定理

摘要: 题意:给你N和M,对于一个N*M的单面方格纸你可以对它的每个个格子黑白染色,然后把方格纸的长边卷起来,卷成一个圆柱体,然后再把两个短边形成的圆也接起来,形成一个游泳圈的形状(我们染的色只在游泳圈的外表面)。如果对于两种黑白染色方案,通过卷成这样的游泳圈后,是一样的,则这两种方案也是一样的。给定N,M<=20 ,求染色方案总数.思路:polya定理.当n!=m时,每一列上下可以滚动,每一行左右可以滚动,整个游泳圈可以上下倒置(也就是把游泳圈翻过来,明显此时左右也倒置了),所以总共有N*M*2种置换;当n=m时,游泳圈不存在长边与短边,所以你可能第一次是把行卷成圆柱,也可能是先把列卷成圆柱, 阅读全文

posted @ 2012-03-19 21:09 myoi 阅读(529) 评论(0) 推荐(0) 编辑

2012年3月11日

CEOI 2004 sweets 容斥原理

摘要: 题意:有n种糖果,第i种糖果有mi个,求吃掉至少a个,不超过b个糖果的方案数模2004。数据规模:n ≤ 10;mi≤ 10^6; a ≤ b ≤ 10^7思路:原题可转化为不等式 xi≤mi a≤Σxi≤b 的解的个数可新建一个变量 xn≤b-a则可变为 xi≤miΣxi=b因为n非常小 容斥原理求解 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 #define mod 2004 7 i 阅读全文

posted @ 2012-03-11 08:31 myoi 阅读(550) 评论(0) 推荐(0) 编辑

2012年3月10日

noi 2007 生成树计数 矩阵乘法

摘要: 题意: 有一个N个顶点的无向图,N个顶点编号为1~N。点i与点j之间有一条无向边当且仅当|i-j|<=k,求这个无向图的生成树个数mod 65521的值。思路:以连续k个点的连通情况作为状态 1 #include<iostream> 2 #include<map> 3 #include<string> 4 using namespace std; 5 #define mod 65521 6 long long n; 7 int m,t,top; 8 map <int,int> home; 9 struct matrix 10 { 11 lo 阅读全文

posted @ 2012-03-10 21:14 myoi 阅读(969) 评论(0) 推荐(0) 编辑

2012年3月4日

poj 1741 Tree 树的分治

摘要: 题意:给定一棵边带权的树,求多少对点之间的距离小于k 1 #include<iostream> 2 #include<cmath> 3 #include<cstdio> 4 #include<cstring> 5 #include<algorithm> 6 using namespace std; 7 #define NMAX 10010 8 struct node 9 {10 int num,weight;11 node *next;12 };13 node *graph[NMAX];14 node memo[2*NMAX];15 阅读全文

posted @ 2012-03-04 21:52 myoi 阅读(388) 评论(3) 推荐(0) 编辑

spoj 2798 Query on a tree again! 树链剖分

摘要: 题意:给定一棵树,每个节点颜色是黑色或者是白色。初始时,全白。定义两种操作0 i 改变第i个节点1 v 询问从1到v的路径上,第一个黑节点 1 #include<iostream> 2 #include<cstring> 3 #include<cmath> 4 #include<cstdio> 5 using namespace std; 6 #define MAXN 100010 7 #define INF 987654321 8 struct node 9 { 10 int r; 11 node *next; 12 }; 13 struct 阅读全文

posted @ 2012-03-04 19:47 myoi 阅读(340) 评论(0) 推荐(0) 编辑

spoj 913 Query on a tree II 倍增

摘要: 题意:给定一棵边带权树定义两种询问DIST a b: a b之间距离KTH a b k: a b之间的路径的第k个数 1 #include<iostream> 2 #include<cstring> 3 #include<cmath> 4 #include<cstdio> 5 using namespace std; 6 #define MAXN 10010 7 struct node 8 { 9 int num,weight; 10 node *next; 11 }; 12 node *graph[MAXN]; 13 node memo[2*M 阅读全文

posted @ 2012-03-04 09:00 myoi 阅读(391) 评论(3) 推荐(0) 编辑

2012年3月3日

spoj 375 Query on a tree 树链剖分

摘要: 树链剖分 模板题 1 #include<iostream> 2 #include<cstring> 3 #include<cmath> 4 #include<cstdio> 5 using namespace std; 6 #define MAXN 10010 7 #define INF 987654321 8 struct tree_node 9 { 10 int left,right; 11 int num; 12 }; 13 struct node 14 { 15 int r,id; 16 node *next; 17 }; 18 nod. 阅读全文

posted @ 2012-03-03 21:23 myoi 阅读(923) 评论(2) 推荐(1) 编辑

导航