随笔分类 - 数据结构
CCF 201512-3 画图 (DFS搜索+模拟)
摘要:问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术。例如,下图是用 ASCII 字符画出来的 CSPRO 字样。 ..____.____..____..____...___.. ./.___/.___||.._.\|.._.\./._.\. |.|.
阅读全文
CodeForces Gym 100685J Just Another Disney Problem (STL,排序)
摘要:题意:给定你大小未知的n个数,你允许有不超过一万次的询问,每次询问两个数,第i个数是否比第j个数小?然后后台会返回给你一个结果YES或者NO(即一行输入), 然后经过多次询问后,你需要给出一个正确的原未知序列的升序排列。 析:当时是真没看懂题意是啥意思,然后就放过了,如果看懂了,并不是很难么,这不就
阅读全文
HDU 2586 How far away ? (LCA,Tarjan, spfa)
摘要:题意:给定N个节点一棵树,现在要求询问任意两点之间的简单路径的距离,其实也就是最短路径距离。 析:用LCA问题的Tarjan算法,利用并查集的优越性,产生把所有的点都储存下来,然后把所有的询问也储存下来,然后从树根开始搜索这棵树, 在搜索子树的时候,把并查集的父结点不断更新,在搜索时计算答案,d[i
阅读全文
CCF 201403-3 命令行选项 (STL模拟)
摘要:问题描述 请你写一个命令行分析程序,用以分析给定的命 令行里包含哪些选项。每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔。这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序 不用对它进行处理。在工具名字之后可能会包含若干选项,然后可能会包含一 些不是选项的参数。 选项有两类
阅读全文
CCF 201403-2 窗口 (STL模拟)
摘要:问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。 当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有
阅读全文
UVaLive 7375 Hilbert Sort (递归,四分图,模拟)
摘要:题意:告诉你一条希尔伯特曲线的大小,然后给你n 个人,及n 个人的坐标,你的起点是左下角,终点是右下角,按照希尔伯特的曲线去走,按照这个顺序给n个人排序, 按顺序输出每个人的名字! 析:这就是一个四分图,每次都把当前的图分成四份,左下角的是顺时针旋转,左上角和右上角不变,右下角逆时针旋转90,那么我
阅读全文
UVaLive 7363 A Rational Sequence (二叉树)
摘要:题意:给定一个二叉树,并对每一个进行编号和规定,现在给你一个值,问你是第几个。 析:这个题,我想了好久才想出来,这个真是数据结构练的太差了,不够扎实,这个题,应该从下向上推,如果分子大于分母,那么这个编号就是奇数, 要加上1,如果是小于,就不用加.推到第一个就好。 代码如下:
阅读全文
CodeForces 706D Vasiliy's Multiset (字典树查询+贪心)
摘要:题意:最开始的时候有一个集合,集合里面只有一个元素0,现在有q次操作,操作分为3种: + x: 表示向集合中添加一个元素x - x:表示删除集合中值为x的一个元素 ? x:表示查询集合中与x异或的最大值为多少 析:这是一个字典树的应用,不过确实没看出来。。。。主要思想是这样,先用10进制数,转成二进
阅读全文
HDU 5441 Travel (并查集+数学+计数)
摘要:题意:给你一个带权的无向图,然后q(q≤5000)次询问,问有多少对城市(城市对(u,v)与(v,u)算不同的城市对,而且u≠v)之间的边的长度不超过d(如果城市u到城市v途经城市w, 那么需要城市u到城市w的长度e1≤d,同时城市w到城市v的长度e2≤d)。 析:一开始的时候,题意都读错了,怎么看
阅读全文
HDU 5437 Alisha’s Party (优先队列模拟)
摘要:题意:邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当最后所有人都到了还会再开一次门,让还没进来的人进来,每次都是礼物价值高的人先进。最后给出q个数,表示要输出第ni个进来的人的名字。 析:其实这就是一个模拟题,很容易知道是优先队列模拟,
阅读全文
HDU 5438 Ponds (DFS,并查集)
摘要:题意:给定一个图,然后让你把边数为1的结点删除,然后求连通块结点数为奇的权值和。 析:这个题要注意,如果删除一些结点后,又形成了新的边数为1的结点,也应该要删除,这是坑,其他的,先用并查集判一下环,然后再找连通环。 代码如下:
阅读全文
HDU 5444 Elven Postman (二叉树,暴力搜索)
摘要:题意:给出一颗二叉树的先序遍历,默认的中序遍历是1.、2、……n。给出q个询问,询问从根节点出发到某个点的路径。 析:本来以为是要建树的,一想,原来不用,其实它给的数是按顺序给的,只要搜结点就行,从根开始搜,如果要到的结点比根结点大,那么一定是向W走, 然后去第一个结点,然后接着判定,一直走,如果找
阅读全文
HDU 5443 The Water Problem (水题,暴力)
摘要:题意:给定 n 个数,然后有 q 个询问,问你每个区间的最大值。 析:数据很小,直接暴力即可,不会超时,也可以用RMQ算法。 代码如下:
阅读全文
CodeForces 681D Gifts by the List (树上DFS)
摘要:题意:一个家庭聚会,每个人都想送出礼物,送礼规则是, 一个人,先看名单列表,发现第一个祖先 就会送给他礼物,然后就不送了,如果他没找到礼物 他会伤心的离开聚会!告诉你m个祖先关系, 和每个人想给谁送!让你求出名单列表! 析:这个题,真是没想到啊,还是看的题解,首先要知道的是,如果自己和父结点送的人不
阅读全文
CodeForces 681C Heap Operations (模拟题,优先队列)
摘要:题意:给定 n 个按顺序的命令,但是可能有的命令不全,让你补全所有的命令,并且要求让总数最少。 析:没什么好说的,直接用优先队列模拟就行,insert,直接放入就行了,removeMin,就得判断一下队列是不是空的,然后再考虑getMin,这个是不是对应的值,如果队列中首元素比它大,那么就加上一个,
阅读全文
CodeForces 339D Xenia and Bit Operations (线段树)
摘要:题意:给定 2的 n 次方个数,对这些数两个两个的进行或运算,然后会减少一半的数,然后再进行异或运算,又少了一半,然后再进行或运算,再进行异或,不断重复,到最后只剩下一个数,要输出这个数,然后有 m 个询问, 每个询问有 p 和 b,要求把第 p 个数改成 b,再这样运算,输出结果。 析:这个题是不
阅读全文
CodeForces 687A NP-Hard Problem (二分图)
摘要:题意:给定 n 条边,然后让你把它分成两组,每组都有所有边的一个端点。 析:一开始我是先判定环,以为就不能成立,其实不是这样的,有环也行。用dfs进行搜索,并标记每一个端点,如果标记过并且和以前不一样,那么就是不能成立, 否则就能成立,并且标记上。最后分类输出就好。 代码如下:
阅读全文
UVa 1599 Ideal Path (两次BFS)
摘要:题意:给出n个点,m条边的无向图,每条边有一种颜色,求从结点1到结点n颜色字典序最小的最短路径。 析:首先这是一个最短路径问题,应该是BFS,因为要保证是路径最短,还要考虑字典序,感觉挺麻烦的,并不好做,事实用两次BFS, 第一次是倒序BFS,目的是得到从结点 i 到结点n的最短距离,然后再从第一个
阅读全文
UVa 506 System Dependencies (细节问题)
摘要:题意:输入几种指令,让你进行模拟操作,指令如下: 析:看到这个题,虽然是放在数据结构这一章里,没觉得有什么数据结构的东西,算法上并不难,只是操作麻烦一点,又是调了好长时间,开始用的1024vector, RE了,后来我加大了10倍,还有的是后来我看到网上样例不一样都过了,很明显是我没读懂题意,可能移
阅读全文