
*Data Structure
WANSNIM
NULL.
展开
-
HDU 1542 Atlantis(扫描线求矩形面积并+离散化)
http://acm.hdu.edu.cn/showproblem.php?pid=1542题意就是给n个矩形,这些矩形可能存在覆盖的地方,求矩形面积并。这种题目要用到扫描线,同时还要用到离散化(一时因为数据特别大,二是因为题目中存在浮点数)。扫描线:一根虚拟的线,从下往上(或者从左往右)扫所求的图形,如下图所示,一条从下往上的直线扫到该4条线,并将图形分成三个部分分别来求面积。扫描线解法(从下往上原创 2015-08-14 22:53:37 · 653 阅读 · 0 评论 -
HDU 2473 Junk-Mail Filter (并查集的删除操作)
并查集的删除操作中心思想:初始化的时候,假使每个节点的root[i]=i(每个点的父节点都是它自己),然后删除某个父节点的时候,该节点可能有多个子结点,就不能保证该节点的其他节点仍然在这个集合里面。解决方法是:将这些点的父节点指向别的数,删除该点时将该点的父节点指向集合以外的数。(说不清楚,详情见代码)对于样例: 5 6 M 0 1 M 1 2 M 1 3 S 1 M 1 2 S 3我原创 2015-08-12 00:24:52 · 416 阅读 · 0 评论 -
Codeforces 381E Sereja and Brackets(线段树)
http://codeforces.com/contest/381/problem/E Sereja and BracketsSereja has a bracket sequence s1, s2, …, sn, or, in other words, a string s of length n, consisting of characters “(” and “)”原创 2015-12-02 21:47:15 · 795 阅读 · 0 评论 -
Codeforces 617E ( 莫队算法 Mo's algorithm )
原文链接:http://blog.anudeep2011.com/mos-algorithm/本文是参考了上文的链接并做了很大改动。这个算法在Codeforces Div.1的C或D中比较常见。本文将从按以下几个步骤来了解Mo’s algorithm:引出一个问题用一个简单的方法以O(n^2) 来解决这个问题轻微修改上面的算法,它仍然运行在O(N ^ 2) 解释该算法来解决以上问题CF 6原创 2016-01-28 18:06:49 · 1463 阅读 · 0 评论 -
Codeforces 620E New Year Tree (哈希 + 线段树)
http://codeforces.com/problemset/problem/620/E New Year TreeThe New Year holidays are over, but Resha doesn’t want to throw away the New Year tree. He invited his best friends Ke原创 2016-01-29 23:00:59 · 933 阅读 · 0 评论 -
2016 UESTC Training for Data Structures
A - 卿学姐与公主单点更新,查找区间最值 可线段树,可树状数组,也可RMQ。#include <iostream>#include <cstdio>#include <algorithm>using namespace std;#define lson l,mid,i<<1#define rson mid+1,r,i<<1|1typedef long long ll;const in原创 2016-04-29 16:40:46 · 520 阅读 · 0 评论 -
HDU 4366 Successor(dfn序 + 线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=4366Problem Description Sean owns a company and he is the BOSS.The other Staff has one Superior.every staff has a loyalty and ability.Some times Sean will fir原创 2016-05-17 16:37:46 · 628 阅读 · 0 评论 -
POJ 2823 Sliding Window(单调队列模板题)
http://poj.org/problem?id=2823Sliding WindowDescriptionAn array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. Y原创 2016-08-06 15:37:39 · 504 阅读 · 0 评论 -
Codeforces 703D Mishka and Interesting sum (树状数组求区间内不同的数的异或和)
http://www.codeforces.com/contest/703/problem/DLittle Mishka enjoys programming. Since her birthday has just passed, her friends decided to present her with array of non-negative integers a1, a2, …,原创 2016-08-18 23:03:33 · 753 阅读 · 0 评论 -
HDU 1251 统计难题(字典树模板题)
题意:先输入单词再输入前缀,统计有相同前缀的单词有多少个。 坑点:一定要用c++交,用g++就T;以前写的字典树从来没有delet这个环节,后来发现自己真是太戳了,借了人家的内存居然不还,补充一下delet模板void del(struct Node *proot){ for(int i=0;i<26;i++) if(proot->next[i]!=NULL)原创 2015-08-16 11:00:24 · 460 阅读 · 0 评论 -
POJ 2299 Ultra-QuickSort(树状数组求逆序数)
http://poj.org/problem?id=2299用树状数组求逆序数和用线段树求逆序数方法类似。 输入9 1 0 5 4,那么C[i]树状数组的建立是在, 下标 0 1 2 3 4 5 6 7 8 9 数组 1 1 0 0 1 1 0 0 0 1。 因此二者都需要离散化。 然后大概思路就是边更新边求值。#include <iostream>#include <cs原创 2015-10-21 15:59:04 · 524 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number(线段树求逆序数)
http://acm.hdu.edu.cn/showproblem.php?pid=1394求循环逆序数的最小值。 先介绍用线段树求逆序数的方法:开始时将树的每个节点置为空,tr[i]=0,然后输入一个数就update一次,将输入的 x 放在树中且保证这个节点的 tr[i] = 1,tr[i].l = tr[i].r = x ,每次update完之后再query一次,查询区间是 (x+1,N),原创 2015-08-17 10:15:37 · 469 阅读 · 0 评论 -
字典树模板
字典树:用于统计,排序和保存大量的字符串(但不仅限于字符串)。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。其基本操作有:查找、插入和删除,当然删除操作比较少见原创 2015-08-01 10:10:35 · 338 阅读 · 0 评论 -
HDU 1598 ( find the most comfortable road )
并查集 克鲁斯卡尔 hdu 1598 find the most comfortable road原创 2015-07-26 15:00:47 · 612 阅读 · 0 评论 -
树状数组求第K小元素
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <set>#include <vector>#include <map>#include <queue>#include <stack>#include <algorithm>using namespace std;typ原创 2015-10-23 13:55:06 · 551 阅读 · 0 评论 -
POJ 3264 Balanced Lineup(RMQ求区间最值)
区间查询最大值或者最小值神模板加神题解: http://blog.youkuaiyun.com/liang5630/article/details/7917702http://blog.youkuaiyun.com/liang5630/article/details/7917706博主很懒,什么都不想留下..原创 2015-08-01 10:38:01 · 381 阅读 · 0 评论 -
POJ 3667 Hotel (线段树求最长连续子序列)
http://poj.org/problem?id=3667题意:有一个线段,从1到n,下面m个操作,操作分两个类型,以1开头的是查询操作,以2开头的是更新操作1 查询操作,找一段长度为W的没被覆盖的最左的区间 2 更新操作,将(x,x+D)连续的区域清空引用巨巨的题解: http://www.cnblogs.com/scau20110726/archive/2013/05/07/306541转载 2015-08-15 17:29:31 · 559 阅读 · 0 评论 -
HDU 5441 Travel (带权并查集)
http://acm.hdu.edu.cn/showproblem.php?pid=5441题意是一个无向图,每个点之间都有一个权值。然后有Q次询问,每次询问输入一个值x,如果两点之间的权值不大于x,那么该条路可走。对于每次询问输出一共有多少组走法。开始想到的是用类似最短路的算法处理一下每两个点之间的距离,然后对每次询问都之间枚举两个点的权值是否小于x即可。但是点,边都特别大,显然不是好的方法。后来原创 2015-09-14 20:07:02 · 509 阅读 · 0 评论 -
HDU 3016 Man Down(线段树区间单点查询+DP)
http://acm.hdu.edu.cn/showproblem.php?pid=3016题意: 是男人就下100层。这个男人开始在最顶层,并且拥有100的能量,如果他能下到他下面的横木上,他将无条件获得横木的val。他只能从横木的左端点和右端点下落。要是中途他的能量小于或等于0,he will die~解题思路:要求到达最后一层的能量最大值,显然要用DP。一开始自然而然能够想到将这些横木按照从大原创 2015-08-19 15:29:12 · 728 阅读 · 0 评论 -
POJ 2528 Mayor's posters (线段树+离散化)
http://poj.org/problem?id=2528这题一定要写个题解。Orz。 不信看图,五月多做过一次,一直RE。现如今来做,仍然RE多发。题意:在墙壁上贴广告,广告的版面有大有小,并且贴广告有先后之分,后面贴的广告会覆盖前面的广告,求解最后能看到的广告面。本题数据太大,要用到离散化,意思是将区间范围很大的数据集映射到较小的数据集。 离散化的步骤:读取一对区间(x,y),用一个结构原创 2015-08-12 15:44:26 · 417 阅读 · 0 评论 -
2743: [HEOI2012]采花 (求区间内出现至少出现两次的数的个数)
http://www.lydsy.com/JudgeOnline/problem.php?id=2743Description萧芸斓是Z国的公主,平时的一大爱好是采花。 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花。花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一排的,以便于公主采花。公主每次采花后会统计采到的花的颜色数,颜色数越多她会越高兴!同时,她有一癖好原创 2016-09-02 10:49:47 · 1034 阅读 · 0 评论