ACM-数据结构
文章平均质量分 73
wsniyufang
这个作者很懒,什么都没留下…
展开
-
POJ 1195 二维树状数组
/*二维树状数组模版题*/#include#include#include#includeusing namespace std;int c[1030][1030];int Row,Col;inline int Lowbit(const int &x){原创 2011-07-22 20:01:26 · 511 阅读 · 0 评论 -
从第K 元素看数据结构
从第K 元素看数据结构这篇文章讨论的是序列中第K 大或第K 小元素,由于第K 大元素可以转化为求第N-K+1小元素(N 为序列的长度),所以,本文专注于讨论第K 小元素。本文讨论的几个问题:1. 对给定整数序列,求该序列中第K 小的元素。2. 对某一整数序列,转载 2011-08-30 10:31:14 · 1185 阅读 · 0 评论 -
集训队例赛——20110925 解题报告
//注释不是很多,读懂代码需要耐心。。。。。。读不懂可以在下面留言,我尽量回复。//希望大家都写赛后总结——写在自己人人或者空间博客内,没写出1002和1004的应该反思一下最近的状态了。。。/*1001开始用dfs递归,爆栈了后来模拟又因为 出迷宫的条件一直wa,细原创 2011-09-25 22:30:16 · 1273 阅读 · 0 评论 -
POJ 2761 树状数组离线+离散化 附:线段树解法
#include #include #include #include #include #include #include #include #include#includeusing namespace std;const int N=100009;c原创 2011-08-30 19:09:56 · 1135 阅读 · 0 评论 -
HDU 2852 树状数组解决第K小数 附线段树解法
/*题意:三种操作0 x:向容器里加入x;1 x: 在容器内删除x,不存在x则输出“No Elment”2 x y:在容器中找到大于x的第y个数,没有则输出“Not Find”题解: 树状数组操作1:直接add(x,1)操作2:查找sum(x)和sum(x-1),原创 2011-08-30 18:29:23 · 2059 阅读 · 0 评论 -
HDU 3938 离线并查集
/*离线并查集,边按小到大排序,询问也按小到大排序;对于询问x,答案就是询问x-1的值加上询问x-1的L1和询问x的L2之间的边合并带来的值对于一条属于L1和L2之间的边,如果端点u,v在一个集合中,忽略,否则新开的路是u所在集合的大小乘上v所在集合的大小*/#inc原创 2011-09-27 15:21:19 · 940 阅读 · 0 评论 -
Dancing Link 精确覆盖模版
#include#include#includeconst int Row=9;const int MAX_COLOUMN = Row*Row*4+2;//最多出现列数const int MAX_ROW = Row*Row*Row+2;//最多出现的列数 int c原创 2011-10-09 18:17:35 · 695 阅读 · 0 评论 -
poj 3076 Dancing Link
#include#include#include#include#include#include#includeconst int MAX_COLOUMN = 16*16*16;//最多出现列数const int MAX_ROW = 16*16*16+2;//最多原创 2011-10-09 17:38:12 · 948 阅读 · 0 评论 -
HDU 3231Box Relations 拓扑排序
/*分别对x,y,z topsort就ok了注意有公共部分的时候的建边*/#include #include #include #include #include #include #include #include #includeusing namespace std;int n,r;char s[3];int x,y;int inx[1009*2];int原创 2011-10-20 11:16:15 · 1391 阅读 · 0 评论 -
HDU 3234 Exclusive-OR 并查集变形
/* 转自:http://www.cppblog.com/Yuan/archive/2010/09/02/125667.html?opt=admin稍许改写 有n(n<=20000)个未知的整数X0,X1,X2Xn-1,有以下Q个(Q<=40000)操作: I p v :告诉你Xp=v I p q v :告诉你Xp Xor Xq=v Q k p1 p2 …转载 2011-10-20 11:11:39 · 1769 阅读 · 1 评论 -
hdu 4107 Gangster 线段树
/*操作a b c:[a,b]区间上的节点加上c,若节点的值已经超过P(包括等于),则加上2*c最后求每个节点的值和hdu3954很类似,具体参考:http://blog.csdn.net/wsniyufang/article/details/6702560每个区间设定min_dis;当区间中有一个点超过P时,释放lazy*/using namespace std;const in原创 2011-10-30 21:26:01 · 1403 阅读 · 0 评论 -
hdu 4109 Instrction Arrangement 拓扑排序 关键路径
/*给定一个关系网,A B C表示B必须在A后,间隔为C,允许多线程同时操作最后求最短的时间把所有任务完成解法:关键路径topsort维护每个节点最早可以完成的时间*/#include#include#include#include#includeusing namespace std;struct node{ int y,t;}edge[10009];in原创 2011-10-30 21:30:22 · 1868 阅读 · 3 评论 -
CodeForces Round #112 Div2 165 D. Beard Graph
/*题目给定一棵树,这棵树很特殊,只有根节点的度可能超过2有三种操作 1.把编号为x的边染成黑色2.把编号为x的边染成白色(此时这条边不可以走)3.询问x,y之间的距离(不能走到输出-1)*/#include#include#include#include#include#include#include#includeusing namespace std;con原创 2012-03-26 14:40:36 · 2295 阅读 · 0 评论 -
poj 4047 Garden 2012金华邀请赛 线段树
/*三种操作0 x y 把x位置的值改成y1 x y 交换x与y位置的值2 x y 统计[x,y]中连续k个值的最大值我们把1-k的和值作为b[1],2-(k+1)的和值作为b[2],以此类推那么可以建立一棵[1,n-k+1]的线段树求连续k个和的最大值,退化为求某个区间的最值问题线段树中有延迟操作,优化时间效率*/#include #include #include #原创 2012-07-07 21:00:31 · 3439 阅读 · 0 评论 -
HDU4331 Image Recognition 树状数组+扫描线
#include#include#include#include#include#includeusing namespace std;const int maxn=1009;int c[maxn];int m[maxn][maxn];int L[maxn][maxn],R[maxn][maxn],U[maxn][maxn],D[maxn][maxn];int n;stru原创 2012-08-04 21:28:52 · 2228 阅读 · 0 评论 -
HDU 4339 Query 树状数组
#include#include#include#include#includeusing namespace std;const int maxn=1000009;int c[maxn];char s1[maxn],s2[maxn];struct bit{ int lowbit(int x) { return x&-x; } v原创 2012-08-04 21:31:05 · 2108 阅读 · 0 评论 -
ZOJ 3508 The War
/*水贪心,不解释*/#include #include #include #include#include#includeusing namespace std;int n,m;struct point{ int Min,Max;}p[40009];原创 2011-08-28 22:02:07 · 633 阅读 · 0 评论 -
STL set和multiset的使用
C++ STL set和multiset的使用1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。 set和multiset的区别是:set插入的元素不能相同原创 2011-08-28 22:00:46 · 543 阅读 · 0 评论 -
矩形面积并
#include #include #include #includeusing namespace std;typedef double Type;#define ll double#define maxn 200200// 垂直线段struct VLine原创 2011-09-22 20:56:43 · 1645 阅读 · 0 评论 -
scu 四川大学oj 2745 零序列 典型线段树
典型线段树,模版题 #include#include#include#include#include#include#include#include#includeusing namespace std;#define MAX 100001struct node{ int原创 2011-07-10 23:50:19 · 1492 阅读 · 1 评论 -
POJ 2481Cows 树状数组
/*这个题大概是计算,一个区间会被多少区间覆盖的问题:标准做法:套用别人写的给定 n 个区间 (l, r),问每个区间被多少个另外的区间所包含。包含的定义 (l1, r1), (l2, r2),如果 l1 <= l2 < r2 <= r1 && (l1, r1) !=原创 2011-07-23 01:30:57 · 641 阅读 · 0 评论 -
HDU 3874 Necklace 2011 Multi-University Training Contest 4 - Host by SDU 树状数组+离散化
/*题意为查找区间去重后的和用树状数组离线处理将所有查询以右端点从小到达排序按次顺序边去重边查询前面的去重就不会影响到后面的结果了*/#include #include#include#include#include#include#includeus原创 2011-07-28 03:00:22 · 1049 阅读 · 0 评论 -
scu四川大学oj 3099 A Simple Problem with Integers
题目出处http://cs.scu.edu.cn/soj/problem.action?id=3099线段树题目中有一个操作是为某个区间的所有成员加上c;用 d表示此时整个区间所有元素的增量 #include using namespace std;#define ll long原创 2011-07-10 23:57:20 · 3683 阅读 · 1 评论 -
HDU 3887 Counting Offspring 树状数组
/*题意:1-n在一棵树上,给定边的关系。要求得到每一个顶点的后继节点中比它值小的个数题解:树状数组。dfs过程中,进入一个节点x前求一次sum(x-1),然后add操作,递归返回节点x后再求一次sum(x-1) 两次sum操作的差值就是比x小的个数本题数据量大原创 2011-08-28 11:35:13 · 1208 阅读 · 6 评论 -
HDU 3974 Assign the task 2011 Multi-University Training Contest 14 - Host by FZU 线段树
/*题意:给定点的上下级关系,规定如果给i分配任务a,那么它所有的下属(直接或间接)都得放弃手上任务开始进行任务a 给你一个序列,T a b,把任务b分配给a节点,C a 查询a正在进行的任务。 非常经典的线段树题目 从树的根节点向下递归并对每个节点i按序编号为le原创 2011-08-27 18:41:05 · 1168 阅读 · 0 评论 -
HDU 3890 Apparent Magnitude 树状数组+离散化
/*我们要找到在a,b左下方点的个数和权值和,只需要把x坐标不大于a的y值插入树状数组,然后统计y值小于b的个数个他们的权值和就行了。所以要得到正确答案,必须插入和查询同时进行(离线操作)——只有只插入x不大于a的y值的情况下统计出来才是正确答案。当然,由于y值范围大,值可能原创 2011-08-23 12:42:28 · 933 阅读 · 0 评论 -
hdu 1824 && hdU 3062 2-SAT经典
/*HDU 3062*/#include #include #include #include #include #include #include #include using namespace std; co原创 2011-09-02 01:05:44 · 1774 阅读 · 1 评论 -
hdu 3622 2-sat经典问题
/*典型的2-sat题目二分半径两点x,y有冲突,就把x连一条到yy(即y的对立点),y连一条到xx然后求强联通分量,如果存在x到xx属于一个联通分量,则不符合条件*/#include #include #include #include #inclu原创 2011-09-01 23:25:50 · 1219 阅读 · 0 评论 -
hdu 4000 Fruit Ninja 树状数组+统计
/*比赛的时候没有写出来,赛后请教大牛后写的可以先求出(xyz,xzy)的总数量只需出去x后面多少个比它大的个数n,C(n,2)就是了然后求出xyz的个数,对于a,求出比a小的个数low[a],比a大的个数high[a],low[a]*high[a]就是答案可以借助树原创 2011-09-02 21:32:29 · 1392 阅读 · 0 评论 -
coj 1123 带区间操作的线段树(lazy)
Light SwitchingTime Limit:3000MS Memory Limit:65536KTotal Submit:183 Accepted:42DescriptionFarmer John尝试通过和奶牛们玩益智玩具来保持他的奶牛们思维敏捷. 其中原创 2011-08-06 01:43:27 · 818 阅读 · 0 评论 -
树状数组模版
struct bit{ int c[maxn] ; void init(){ memset(c , 0 ,sizeof(c)); } int lowbit(int x){ return x&(-x);原创 2011-08-30 17:43:38 · 589 阅读 · 0 评论 -
HDU 3911 Black And White 2011 Multi-University Training Contest 8 - Host by HUST 线段树应用
/*1表示黑,0表示白,0 a b 表示询问区间[a,b]中最长连续黑石子的数目1 a b 表示翻转区间[a,b]内的黑白*/#include #include#include#include#include#include#include#include原创 2011-08-06 16:32:15 · 759 阅读 · 0 评论 -
poj 1986 LCA离线模版 并查集模版
//临时学的tarjan离线LCA,解题报告有空补上,ps:并查集类很给力#include#include#include#include#include#includeusing namespace std;const int V=40010,E=V*2,Q=20原创 2011-09-03 00:39:56 · 1367 阅读 · 0 评论 -
HDU 3954 Level up 2011 Alibaba Programming Contest 线段树
/*参考:http://hi.baidu.com/yy17yy/blog/item/3fbaaced633cc3cb2e2e21c8.html线段树的变形,比赛的时候一直tle和mle交替,后附tle和mle的代码和经典的线段树区间lazy操作相比,区间传递的是经验系数,每原创 2011-08-19 17:06:47 · 2024 阅读 · 3 评论 -
zoj 3602 Count the Trees 树的同构
/*二叉树的同构 把每棵子树映射为一个整数如节点n的左右孩子为L,R,那么取子树L对应的整数Ln子树R对应的整数Rn,把pair(Ln,Rn)对应为一个整数就是当前子树的映射*/#include#include#include#include#include#include#includeusing namespace std;const int maxn=10000原创 2012-08-06 00:54:35 · 3227 阅读 · 0 评论