
ACM 数据结构
文章平均质量分 85
百里屠猪
I'm an ACMer!
展开
-
线段树(堆式)[单点更新, 区间查询]
http://acm.hdu.edu.cn/showproblem.php?pid=1166first blood of seg-tree 单点增减 区间求和#include #include #include using namespace std;const int maxn=60000+123;int T[maxn*2];int M;int bit(int原创 2012-03-25 18:59:53 · 774 阅读 · 0 评论 -
hdu2586[lca离线tarjon算法][递归与非递归]
hdu2586[lca]tarjon 是离线的算法, 在线的话会有倍增法和rmq,其实这2个方法有一曲同工之妙#include #include #include #include using namespace std;const int maxn=100000+123;#define forg(p,x) for(p=x; ~p; p=edge[p].nex原创 2012-08-09 11:46:45 · 989 阅读 · 0 评论 -
2008年成都赛区(中山)
2474 Process scheduling a题 multiset multimap用法#include #include #include #include using namespace std;const int maxn=50000+123;struct Proc{ int a[10], r[10]; bool rls;}p[maxn];//in原创 2012-10-05 12:45:15 · 2126 阅读 · 0 评论 -
树形结构转换线性结构的方法(lca倍增)
这个讲的还不错的, 整理的很全 http://blog.youkuaiyun.com/lyhypacm/article/details/6734748hdu 3966dfs序是针对某条路径, 利用根到路径#include #include #include #include #include #include #include #include #includ原创 2012-08-18 20:05:11 · 1436 阅读 · 0 评论 -
树链剖分
http://blog.sina.com.cn/s/blog_7a1746820100wp67.html 别人转的讲解, 看的这个学的。感觉不是必要的方法, 其他方法也能做的, 一般要维护树种路径的最值时才需要这个算法spoj375对边权的路径剖分#include #include #include #include #include using names原创 2012-08-25 10:47:40 · 921 阅读 · 0 评论 -
dancing links X算法
hust 1017Exact cover就是knuth论文里拿来举例子的题, 算是精确覆盖的裸题了。#include #include /** 在01矩阵找一个行集合,使其精确覆盖所有的列所谓精确覆盖就是所有行中含1的列有且仅有一个,而重复覆盖允许有多个。**/const int maxn=100000+123;const int maxc=1000+5;int原创 2012-10-09 19:13:35 · 1485 阅读 · 0 评论 -
一些偏的数据结构整理【整理+复习】
BKTree:matrix67's bloghttp://baike.baidu.com/view/2020247.htm 划分树: http://blog.youkuaiyun.com/jxy859/article/details/7755201可持久化线段树:kd-tree:树状数组:1166 敌兵布阵http://bl原创 2012-08-01 11:10:03 · 690 阅读 · 0 评论 -
dlx 精确覆盖
dlx的合集比赛点击这里 hustpoj 3074 标准数独模版#include #include /**在计算科学理论中,这一类问题的解答被称之为NPC问题中的Hitting Set Problem,中文名应该叫做碰集问题。该类问题可以通过转换成为精确覆盖问题,其中以行表示概然,以列表示常规约束。在数独问题中,行所表示的概然状态很明显为(r,c,k)即行,列,放置的数原创 2012-10-11 21:43:04 · 691 阅读 · 0 评论 -
2013长春网络赛K题sword (hdu 4769)
本来只想出个中等难度题, 在题意上绕一下, 没想到到了网络赛的时候竟然没有队伍ac, 而且全场也只有2个队伍北大,华南师范尝试过提交,就连4小时就已经10题的清华都没在最后1小时有提交(估计他们10题之后就出去玩耍了吧),---------------------------------------------------------------------------------原创 2013-10-02 23:12:51 · 1643 阅读 · 0 评论 -
2012网赛长春赛区
a题 4267 A Simple Problem with Integers一直纠结在如何缩减区间, 后来发现直接更新就好了, 比如更新模10余1的在1到20区间上, 我们需要更新的是1和11, 在新区间上应该是【1, 2】 但是其实直接去更新模10余1那颗树上的【1,20】其实就可以, 因为查询除模10余1之外的数,是不会访问到这颗树的更新, 自然也不会影响其他位置的值int原创 2012-09-10 15:59:40 · 1788 阅读 · 0 评论 -
2012 Multi-University Training Contest 10[hdu4390~4399]
多校终于结束了, 开始从后往前整理4390 Number Sequence容斥原理, 比赛的时候把10^25理解成2^25以为不会超long long, wa了好几次,最后队友提醒才看到#include #include #include #include #include #include #include #include #include #原创 2012-08-24 20:49:42 · 1403 阅读 · 0 评论 -
划分树
划分树是一种基于线段树的数据结构。主要用于快速求出(在log(n)的时间复杂度内)序列区间的第k大值划分树的基本思想就是对于某个区间,把它划分成两个子区间,左边区间的数小于右边区间的数。查找的时候通过记录进入左子树的数的个数,确定下一个查找区间,最后范围缩小到1,就找到了。划分树定义为,她的每一个节点保存区间 [lft, rht] 所有元素,元素排列顺序与原数组(输入)相同,但原创 2012-07-17 15:30:23 · 636 阅读 · 0 评论 -
线段树[扫描线]
hdu1542 Atlantis POJ 1151(C++才能过, G++WA到死)求矩形面积并#include #include #include using namespace std;const int maxn=1000+123;//n=100struct Segm{ int ymin, ymax;//线段覆盖的区间,当然是离散后的坐标区间原创 2012-04-19 21:16:24 · 1347 阅读 · 0 评论 -
2012 Multi-University Training Contest 3[hdu4320~4330]
hdu4222 candy http://acm.hdu.edu.cn/showproblem.php?pid=4322费用流 看题解构图过的, 同时利用了边的费用和流量 题解这里, 【题目大意】有N颗糖果和M个小孩,老师现在要把这N颗糖分给这M个小孩。每个小孩i对每颗糖j都有一个偏爱度Aij,如果他喜欢这颗糖,Aij = k,否则Aij = 1。小孩i觉得高兴当且仅当ΣCij×A原创 2012-08-01 11:12:12 · 630 阅读 · 0 评论 -
zoj3509 Island Communication
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4352有题解给的是动态树 http://hi.baidu.com/xpycc/item/0e5b0feb827e203a86d9de92 自己一顿乱搞,双向链表 。#include #include #include #include #include原创 2012-07-21 16:05:56 · 468 阅读 · 0 评论 -
2012 Multi-University Training Contest 6[hdu4350~4359]
4351 Digital root4355 Party All the Time 两种解法, 一种三分,一种dp三分是要满足凹凸性的, 既二阶导数不变号, 这个很好证明的, 题目要求的是sigma|p-xi|^3*wi, 不妨对每项拆开讨论 :|p-xi|^3*wi ,当p>=xi时 原式为(p-xi)^3*wi 二阶导为(6p-6xi)*w原创 2012-08-09 18:29:38 · 810 阅读 · 2 评论 -
树状数组
http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=binaryIndexedTrees 超级讲解,hdu1166 敌兵布阵单点修改, 区间查询, (区间和)const int maxn=50000+123;int a[maxn], c[maxn];int n;int sum(int原创 2012-08-16 20:09:58 · 586 阅读 · 0 评论 -
2012 Multi-University Training Contest 8[hdu4370~4379]
4370 0 or 1就2种情况, 一种是1到n的最短路, 一种是包含1的环和包含n的环, 第一种情况直接sssp就好, 第二种比较好的处理方法就是枚举环的一个点, 然后用sssp得到的dist数组去求2个最小环, 相加即可,我的方法是再跑遍floyd, 不过要用dist优化一下, 提前排除不是最优解的情况, 1600ms水过#include #include #include原创 2012-08-16 18:24:26 · 764 阅读 · 0 评论 -
线段树(堆式)[区间更新]
区间更新是个坎。。。 堆式的区间更新是个大坎。。。hdu1698 Just a Hook解法1 还没理解自底向上的更新方法, 还是自顶向下的递归更新, 跑了859ms,悲剧。。。代码很丑, 不过自创了一个debug函数,可以看树的结构, 不错,不错。#include #include #include using namespace std;typedef lon原创 2012-04-12 21:43:45 · 1501 阅读 · 0 评论 -
2013南京 Onsite 代码(未提交)
4题第一名, 比赛的时候看的C,E,K, 都敲出来, 有机会交下, 我真是个逗逼, #include #include #include using namespace std;const int maxr = 103;const int maxc = 12;int dp[103][12][2048+123][22];char mp[maxr][maxc];const in原创 2013-11-06 19:56:01 · 1001 阅读 · 0 评论