数据结构
fa茶
这个作者很懒,什么都没留下…
展开
-
计蒜客 京东的物流路径
http://nanti.jisuanke.com/t/444用的点分治,记录子节点到根节点的路径上的最小值和sum,按最小值从大到小排序,枚举右R端点,那么在1~R-1前面寻找与右端点不在同一颗子树内且sum值最大的点去更新答案.我们O(n)维护最大值和次大值#include <iostream>#include <cstring>#include <cstdio>#include <alg原创 2015-07-29 13:49:12 · 1168 阅读 · 1 评论 -
树套树:二维线段树初步:hdu1823——Luck and Love(单点修改,区间查询)
中文题不予解释。。。二维线段树,每个结点都是一棵线段树,那么单点更新时,要把包含所要修改的点的区间信息全部更新,区间查询,只要到对应的区间进行查询就行了。自上而下更新#include#include#include#include#define rep(i,n) for(int i=0;i<(n);++i)#define FOR(i,a,b) fo原创 2015-01-20 09:40:25 · 720 阅读 · 0 评论 -
POJ 2155——Matrix(树套树,二维树状数组,二维线段树)
MatrixTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 18460 Accepted: 6950DescriptionGiven an N*N matrix A, whose elements are either 0 or 1. A[i, j]原创 2014-08-26 10:42:07 · 731 阅读 · 0 评论 -
转战图论~~~
搞数据结构虽然有一段时间了,但是觉得自己没学到什么东西。学了忘,忘了学。。。先暂告一段吧。原创 2015-01-13 14:56:08 · 525 阅读 · 0 评论 -
POJ 2761可以练习无数种数据结构的题——动态区间求第K小
Teap:#include#include#include#includeconst int maxn=100010;using namespace std;struct node{ node *ch[2]; int v,r,s; int cmp(int x)const{ if(x==v) return -1; return原创 2015-01-12 20:09:09 · 639 阅读 · 0 评论 -
HDU 3487——Play with Chain(splay tree)
Play with ChainTime Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3979 Accepted Submission(s): 1631Problem DescriptionYaoYao is原创 2014-10-21 19:42:29 · 514 阅读 · 0 评论 -
spoj 1470——Another Sequence Problem(Splay Tree)
1470. Another Sequence ProblemProblem code: SEQ2You are to write a program to perform some operations on a given sequence.These operations are listed below:--------------------原创 2014-10-18 18:57:28 · 736 阅读 · 0 评论 -
HDU 1890——Robotic Sort(伸展树)
Robotic SortTime Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2511 Accepted Submission(s): 1112Problem DescriptionSomewhere dee原创 2014-11-03 20:48:30 · 605 阅读 · 0 评论 -
POJ 3580——SuperMemo(Splay树,经典题)
SuperMemoTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 9921 Accepted: 3201Case Time Limit: 2000MSDescriptionYour friend, Jackson is invited to原创 2014-10-30 20:56:40 · 657 阅读 · 0 评论 -
HDU 5057——Argestes and Sequence(树状数组+离线)
Argestes and SequenceTime Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 583 Accepted Submission(s): 147Problem DescriptionArgest原创 2014-10-02 22:01:49 · 557 阅读 · 0 评论 -
POJ 2482——Stars in Your Window(线段树+扫描线,二维区域最值转化为线段树-经典)最浪漫的题目
Stars in Your WindowTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 10044 Accepted: 2789DescriptionFleeting time does not blur my memory of you. Can i原创 2014-10-01 19:04:40 · 1028 阅读 · 0 评论 -
HDU 3642——Get The Treasury(线段树+扫描线+离散化+体积交多次)
Get The TreasuryTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1991 Accepted Submission(s): 617Problem DescriptionJack know原创 2014-09-30 22:44:55 · 828 阅读 · 0 评论 -
HDU 1075——What Are You Talking About(Trie树)
What Are You Talking AboutTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K (Java/Others)Total Submission(s): 14180 Accepted Submission(s): 4567Problem Descriptio原创 2014-10-09 01:09:40 · 554 阅读 · 0 评论 -
HDU 1671——Phone List(Trie树)
Phone ListTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10865 Accepted Submission(s): 3746Problem DescriptionGiven a list o原创 2014-10-08 21:11:53 · 500 阅读 · 0 评论 -
HUD 1255——覆盖的面积(线段树+面积并多次+离散化)
覆盖的面积Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3756 Accepted Submission(s): 1846Problem Description给定平面上若干矩形,求出被这些矩形覆盖原创 2014-09-29 11:42:40 · 699 阅读 · 0 评论 -
UVA Efficient Solutions (优势人群)——multiset、排序二叉树
Problem IEfficient SolutionsInput: Standard InputOutput: Standard Output"Our marriage ceremonies are solemn, sobermoments of reflection; also regret, disagreement,argument and mu原创 2014-11-10 20:40:55 · 685 阅读 · 0 评论 -
POJ 2828——Buy Tickets(树状数组,线段树——逆序遍历)
Buy TicketsTime Limit: 4000MS Memory Limit: 65536KTotal Submissions: 13496 Accepted: 6726DescriptionRailway tickets were difficult to buy around the Lunar New Y原创 2014-09-04 09:35:29 · 825 阅读 · 0 评论 -
HDU 3265——Posters(线段树+面积并+矩形分割)
PostersTime Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4685 Accepted Submission(s): 1062Problem DescriptionTed has a new hous原创 2014-09-25 23:35:09 · 637 阅读 · 0 评论 -
HDU5172GTY's gay friends——区间查询(区间内的数互不相同)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5172官方题解 一个区间是排列只需要区间和为len(len+1)2(len为区间长度),且互不相同,对于第一个问题我们用前缀和解决,对于第二个问题,预处理每个数的上次出现位置,记它为pre,互不相同即区间中pre的最大值小于左端点,使用线段树或Sparse Table即可在O(n)/O(nlogn)的原创 2015-02-15 16:46:16 · 1080 阅读 · 0 评论 -
Codeforces Round #291 (Div. 2)D.R2D2 and Droid Army——RMQ+二分
http://codeforces.com/contest/514n个机器人,每个机器人有m个属性,有k发子弹,每发子弹可以使所有机器人的某个属性减一。当某个机器人的m个属性都变为0时,该机器人视为被摧毁。 求在某段连续区间内消灭机器人数目最多的条件下,机器人的每个属性所需要的子弹数先二分枚举最长的连续区间,然后根据所得的区间长度,求出某个可行解#include<bits/stdc++.h>#d原创 2015-02-21 22:50:32 · 522 阅读 · 0 评论 -
HDU5239.Doom——线段树
http://acm.hdu.edu.cn/showproblem.php?pid=5239转:http://blog.csdn.net/zava_1087/article/details/46040747 任意数的平方,最多29次模上p,都会不变#include <bits/stdc++.h>#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1c原创 2015-05-30 12:17:45 · 942 阅读 · 0 评论 -
1047: [HAOI2007]理想的正方形——二维单调队列
http://www.lydsy.com/JudgeOnline/problem.php?id=1047对每一行维护一个单调队列,保存在lmin[][],lmax[][] 然后对每一列维护一个单调队列,最后n*n枚举#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#define clr(a,原创 2015-05-28 22:51:41 · 904 阅读 · 0 评论 -
POJ2823.Sliding Window——单调队列
http://poj.org/problem?id=2823求长度为k的子序列里面的最大值,最小值#include <iostream>#include <cstring>#include <cstdio>#include <vector>#include <algorithm>#define pk push_backconst int INF = 0x3f3f3f3f;const i原创 2015-05-28 16:49:50 · 727 阅读 · 0 评论 -
Codeforces Round #305 (Div. 2)——D
http://codeforces.com/contest/548/problem/DD. Mike and Feet 一个长度为n的序列,在长度为x的子序列中取最小值,所有中取最大值。 for x = 1 to ndp[i]表示以i为最小值的最长区间长度 g[i]表示区间长度为i时的最大值 sum[i]表示区间长度大于等于i的最大值那么对于某个询问x,答案为sum[x]单调栈搞dp[i],原创 2015-05-27 15:53:57 · 763 阅读 · 0 评论 -
UVA12003.Array Transformer——分块
http://www.bnuoj.com/v3/problem_show.php?pid=20421题目分析: 输入一个数组A[1,…,n]和m条指令,你的任务是对数组进行变换,输出最终结果。每条指令形如(L,R,v,p),表示先统计出A[L],A[L+1],…,A[R]中严格小于v 的元素个数k,然后把A[p]修改成uk/(R-L+1)。这里的除法为整数除法分析: 可以用嵌套数据结构 这里用原创 2015-05-10 22:06:18 · 544 阅读 · 0 评论 -
HDU2586.How far away ?——最近公共祖先(离线Tarjan)
http://acm.hdu.edu.cn/showproblem.php?pid=2586给定一棵带权有根树,对于m个查询(u,v),求得u到v之间的最短距离那么只要求得LCA(u,v),dis(u,v)=dis[u]+dis[v]-2*dis[LCA(u,v)],其中dis[i]表示节点i到根节点root的距离31MS 4104K 2186 B#include<iostream>#i原创 2015-03-14 13:00:01 · 660 阅读 · 0 评论 -
LCA(least common ancestors)最近公共祖先
http://blog.csdn.net/hnust_xiehonghao/article/details/9109295对于有根树T的两个节点u、v,最近公共祖先LCA(u,v)表示一个节点x,满足x是u,v的祖先,且x的深度尽可能大 如果把树看成图,就是求到u,v的最短距离时间复杂度为O(n+q),n为树的节点数,q为询问次数 离线算法Trajan算法基于深度优先搜索,对于新搜索到的一个节点原创 2015-03-12 20:46:19 · 575 阅读 · 0 评论 -
BestCoder Round #32.Negative and Positive (NP)——哈希
http://acm.split.hdu.edu.cn/showproblem.php?pid=5183sigma(a[i],a[j])=sum[j]-sum[i-1]=K;枚举起点: 设起点为x,分两种情况: 1.起点x为奇,a[j]-a[x-1] = K,即a[j] = a[x-1]+K。 2.起点x为偶,a[j]-(-K) = a[x-1],即a[j] = a[x-1]-K。由于枚举到一个原创 2015-03-09 20:37:51 · 451 阅读 · 0 评论 -
POJ1330.Nearest Common Ancestors——最近公共祖先(dfs+ST在线算法)
http://poj.org/problem?id=1330LCA转RMQ2596K 47MS C++#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<algorithm>const int maxn=10010;using namespace std;int rmq[max原创 2015-03-16 13:31:06 · 737 阅读 · 0 评论 -
POJ1330Nearest Common Ancestors——最近公共祖先(离线Tarjan)
http://poj.org/problem?id=1330给一个有根树,一个查询节点(u,v)的最近公共祖先836K 16MS#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#include<string>#include<set>#include<map原创 2015-03-13 12:12:17 · 646 阅读 · 0 评论 -
HDU4547.CD操作——最近公共祖先
http://acm.hdu.edu.cn/showproblem.php?pid=4547水题1419MS 12896K#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<string>#include<map>const int maxn=100010;const int max原创 2015-03-16 00:33:35 · 808 阅读 · 0 评论 -
动态逆序对,Dynamic Inversion,Uva11990(树套树)
给一个1~n的排列A,要求按照某种顺序删除一些数(其他数顺序不变),输出每次删除之前逆序对的数目。所谓逆序对数,就是满足iA[j]的有序对(i,j)的数目首先用O(nlogn)时间求出初始排列的逆序对数,则每次需要求出被删除的那个数左边有多少个数比它大,右边有多少个数比它小。TLE的代码,忧伤。。。#include#include#include#incl原创 2015-01-25 18:29:38 · 540 阅读 · 0 评论 -
郁闷的出纳员——动态统计(Treap,ST,Splay,BIT)
郁闷的出纳员Time Limit: 5000msMemory Limit: 65536KBThis problem will be judged on HRBUST. Original ID: 167064-bit integer IO format: %lld Java class name: MainPrev Submit Stat原创 2015-01-23 16:49:12 · 1293 阅读 · 0 评论 -
Codeforces Round #292 (Div. 2)E. Drazil and Park——线段树
http://codeforces.com/contest/515/problem/E具体解释看这个http://blog.csdn.net/u013654696/article/details/43898869每个节点维护3个域 A[rt]=2*h[l]+d[l-1] B[rt]=2*h[l]-d[l-1] s[rt]=max energy 其中d[l]表示1到l的距离 将环变为线性的1原创 2015-02-25 14:33:19 · 1043 阅读 · 0 评论 -
Spoj375.Query on a tree——树链剖分+线段树(基于边权)
http://www.spoj.com/problems/QTREE/模板题贴模板#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int maxn=10010;using namespac原创 2015-02-17 15:28:33 · 523 阅读 · 0 评论 -
HDU3966.Aragorn's Story——树链剖分+树状数组(基于点权)
http://acm.split.hdu.edu.cn/showproblem.php?pid=3966模板题贴模板 手动扩栈#pragma comment(linker, "/STACK:1024000000,1024000000")#include<iostream>#include<cstring>#include<cstdio>const int maxn=50010;using原创 2015-02-17 15:31:35 · 558 阅读 · 0 评论 -
Codeforces Round #291 (Div. 2)C.Watto and Mechanism——字典树+dfs
http://codeforces.com/contest/514n个字符串m个询问,判断询问的字符串能否通过修改其中的一个字符使得变成给定的n个字符串中的某一个注意:必须修改一个字符#include<bits/stdc++.h>const int maxnode=6e5+100;const int sigma_size=3;using namespace std;int n,m;int原创 2015-02-20 21:29:47 · 831 阅读 · 0 评论 -
HDU 2795——Billboard(线段树)
121原创 2014-09-03 16:14:30 · 449 阅读 · 0 评论 -
HDU 3397——Sequence operation(线段树,区间染色+区间异或+区间合并)
Sequence operationTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6270 Accepted Submission(s): 1862Problem Descriptionlxhgww原创 2014-09-17 01:02:59 · 843 阅读 · 0 评论 -
POJ 3264——Balanced Lineup(RMQ ,segment tree,树状数组)
RMQ原创 2014-08-13 10:08:16 · 574 阅读 · 0 评论