
——数据结构——
文章平均质量分 66
chen_minghui
这个作者很懒,什么都没留下…
展开
-
Rails stack
输入一个数n,由1~n顺序进栈,输入一列栈顺序,如何能够实现这种出栈顺序,那么输出yes 否则输出no#include#define MaxSize 1001using namespace std;int data[1001];struct Sqstack{ int data[MaxSize]; int top;}st;void init(){ st.top=-1;}原创 2016-11-27 16:50:29 · 286 阅读 · 0 评论 -
codeforces 799C Fountains 线段树
题意:购买喷泉有两种方式,用硬币或砖石,都有对应的价格,和美丽度。给定初始的硬币和砖石数,要求买两个喷泉且美丽度之和最大。如果不能买两个输出-1思路:三种情况:两种都用C或D,CD各一个。C,D各一个只要选择能够买得最大美丽度的喷泉。两种都用C或D,选择了一个之后,另外一个能够买得范围就确定了。#include#include#include#define ll long long原创 2017-06-21 21:02:44 · 534 阅读 · 0 评论 -
POJ 2236 Wireless Network 并查集
题意:地震之后所有的电脑之间的通讯都断了,给定n电脑的坐标,然后给一些修复操作,和一些询问。如果两台电脑之间的距离不超过d就能互相通讯。询问是否连通。思路:最多大概2*1e7次循环,这个还真没想到,所以直接用并查集暴力一个一个的扫,把已修好的全部判断一遍看距离是否小于d,加入集合就行了。#include#include#includeconst int maxn = 1010;in原创 2017-07-17 21:20:45 · 245 阅读 · 0 评论 -
POJ - 2492 A Bug's Life 种类并查集
题意:给定一些昆虫的交配关系,问是否存在同性恋。思路:同食物链,这里是分成两个种类,n乘个2继续用挑战上的思路#includeconst int N = 2010;int f[2*N];int Find(int x){ return f[x]==x?x:f[x]=Find(f[x]);}bool same(int x,int y){ return Find(x)==F原创 2017-07-17 21:02:46 · 241 阅读 · 0 评论 -
POJ 1182 食物链(并查集)
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 X Y",表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地原创 2017-07-17 20:51:36 · 349 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers 线段树模板区间更新
题意:区间更新,输出查询结果带有延时标记的区间更新更到你时就停住,用到你时候向下更:我的理解:例如更新[0-3],更新时找到[0-2],[3-3]这两个区间,修改整个区间的信息,如若区间结点的值代表整个区间的最小值,对[0-3]这个区间的操作是每个元素加1,那么更新时只需要修改[0-2]和[3-3]结点的值,两个节点最值加1,并给它们加上标记(它更到这儿就停止了,叶子节点并原创 2017-06-06 19:44:26 · 233 阅读 · 0 评论 -
811B - Vladik and Complicated Book 归并树
题意:给定n个数,m个区间l,r及一个位置p,l=思路:判断p位置左端到l比p大的数,与p位置右端到r比p小的数。两个相等位置不变,否则变了日了吉娃娃了,水题被我想得巨复杂,没想到这样也能过#include#includeint a[10100];int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { memset(a,0原创 2017-05-28 09:51:06 · 352 阅读 · 0 评论 -
hdu 1166 敌兵布阵 线段树模板
1,单结点更新HDU http://acm.hdu.edu.cn/showproblem.php?pid=1166#include#includeusing namespace std;const int maxn = 5*(1e5+5);int a[maxn];struct segtree{ int val;}segnode[2*maxn+1];void build(i原创 2017-05-31 08:48:33 · 807 阅读 · 0 评论 -
hdu 2795 线段树应用 单结点更新
题意:给一个h*w的公告栏,另有n条广告,它们是一个1*wi的矩形,按照输入的顺序,从左到右,从上到下,贴在公告栏,问它能贴在第几行,如果不能,输出-1.思路:线段树应用:每个结点l,r代表高度(h)区间,val代表这个区间最大宽度。#include#include#define Max(a,b) (a)>(b)?(a):(b)using namespace std;const i原创 2017-05-31 11:30:13 · 229 阅读 · 0 评论 -
hdoj1671:phone list 字典树
#include#include#includeusing namespace std;struct node{ node *next[10]; bool ex;// = false; 结构体声明时并没有分配内存空间不能在里面初始化 // bool vis; //= false; node() { // this->vis = fa原创 2016-08-20 15:20:45 · 281 阅读 · 0 评论 -
POJ 2503 Babelfish 字典树
#include#include#include#include#include#includeusing namespace std;struct node{ node *next[26]; char str[13];};node root,*cur;void insert(char *b,char *a){ node *cur = &root;原创 2016-08-14 21:50:10 · 340 阅读 · 0 评论 -
hdoj 1213 How Many Tables 并查集模板
简单的并查集应用How Many Tables#includeusing namespace std;int f[1001];int findroot(int x){ if(x == f[x])return x; else return findroot(f[x]);}void unionset(int x,int y){ x=findroot(x);原创 2016-08-06 17:41:48 · 270 阅读 · 0 评论 -
HDU1548:A strange lift( BFS)
也可以用Dijkstra算法做,交了两次都超内存,发现没有做访问标记,第二次犯这种错误,唉。题意:有一个奇怪的电梯,电梯里只有up 和 down 两个按钮,每层楼i都有一个ki值,如果在第I层按up则会上升到I+ki,按down则会降到I-ki,要保证移动后的楼层在1~N范围内,否则不会起作用。现在要求由A到B楼层,如果能够到达,找出按按钮次数最少的方法,并输出,否则输出-1#inclu原创 2017-01-23 00:07:44 · 294 阅读 · 0 评论 -
uva boxs in a line 12657
题意:n个盒子从1~n编号,从左到右排好,现在有m条命令,包含下面4种1 x y :代表将x移到y的左边2 x y :代表将x移到y的右边3 x y :代表将两个盒子的位置交换4 :代表将反转所有盒子,最后一个到第一个,第一个到最后一个,一次类推#include#include#includeusing namespace std;const int max原创 2017-03-04 21:55:58 · 338 阅读 · 0 评论 -
hdu 1237 简单计算器
#include#include#include#include#includeusing namespace std;const int maxn = 201;char s[maxn];char lastexp[maxn];//后缀表达式串 bool Operator(char a){ if(a=='+'||a=='-'||a=='*'||a=='/')return tru原创 2017-02-25 22:01:16 · 394 阅读 · 0 评论 -
CF 567B Berland National Library
题意:图书馆门口装了一个特殊装置,每当从门口进入一个人,每个人都有唯一的编号,编号在指定的范围内,就会记录 一条(+ 编号),每当一个人出去,就会记录(- 编号),在装置开启前或者关闭后馆内可能有人,为了让这个机器起到实际的作用,开发特殊装置的人想用装置的记录来推测馆内最小容量.输入为n,表示n条记录思路:模拟进出的过程.如果出去一个人,则检查这个是否之前进入过,之前没有记录进入,则容量计原创 2017-01-23 15:08:20 · 369 阅读 · 0 评论 -
POJ 2823 Sliding Window 单调队列
题目:http://poj.org/problem?id=2823单调队列,顾名思义,就是队列中的元素是单调的。单调队列的维护:以单调递增队列来举例:1、如果队列的长度一定,先判断队首元素是否在规定范围内,如果超范围则增长队首。2、每次加入元素时和队尾比较,如果当前元素小于队尾且队列非空,则减小尾指针,队尾元素依次出队,直到满足队列的调性为止#include#include原创 2017-01-23 14:50:45 · 383 阅读 · 0 评论 -
uva11988 broken keyboard (悲剧文本)
你有一个破损的键盘,所有键都能正常工作,但是home 和 end键有时会自动按下,你并不知道这一问题的存在,专心打稿子,甚至屏幕都没有开,当你打开屏幕时,屏幕上是悲剧文本,你的任务是计算出这段悲剧文本。样例输入This_is_a_[Beiju]_text [[]][][]Happy_Birthday_to_Tsinghua_University样例输出BeijuThis_is_原创 2017-01-19 13:27:01 · 625 阅读 · 0 评论 -
”今日头条杯“湖北省赛 I. Five Day Couple 可持久化01字典树
题目链接https://www.nowcoder.com/acm/contest/104/H题意不带修改区间询问,每次给定一x,l,r。问x与a[l~r]中哪个数异或最大,输出这个最大值。思路对每一个前缀a[1~i] 建立一颗树,根结点为rt[i]。树中包含这个区间的所有数,结点中额外加个域cnt,记录有多少个数走到过这个节点。对于查询l,r。我们同时查询树rt[l-1]与树rt[r]。两颗树中的结原创 2018-05-02 20:08:03 · 342 阅读 · 0 评论