随笔分类 -  数据结构

摘要:把桥按照左边点坐标排序,左边相同按照右边。 然后依次插入树状数组,getsum就是在这个桥之前的桥,也就是这个桥产生的交点。 阅读全文
posted @ 2016-03-15 22:16 Helica 阅读(225) 评论(0) 推荐(0)
摘要:POJ 2299 Ultra-QuickSort 使用树状数组记录逆序对数。 把数组按照大小顺序插入,getsum(i)就是i前面的比他大的数。 阅读全文
posted @ 2016-03-15 22:13 Helica 阅读(159) 评论(0) 推荐(0)
摘要:树状数组的成段更新。 首先要明白,insert函数的意思是更新某一点值,query函数的意思是从起点到某一点的和。 更新[a,b]段时,在a点插入一个1,在b+1点插入一个-1。这时,query(a)...query(b)都是1,而query(1)...query(a-1),query(b+1).. 阅读全文
posted @ 2016-03-15 22:10 Helica 阅读(154) 评论(0) 推荐(0)
摘要:模拟黄金矿工这个游戏,给出每一个金子的位置和所需时间,计算在给定时间内最大收益。 刚看这道题以为金子的位置没什么用,直接DP就行,WA了一发终于明白如果金子和人共线的话只能按顺序抓。 这就是需要考虑先后关系问题。看了背包⑨讲之后以为是“有依赖关系的背包”,感觉解决方案很不明显,想不出来做法。 后来想 阅读全文
posted @ 2016-02-29 22:51 Helica 阅读(322) 评论(0) 推荐(0)
摘要:1 #include <cstring> 2 #include <algorithm> 3 #include <iostream> 4 #include <queue> 5 6 using namespace std; 7 8 typedef long long LL; 9 const int ma 阅读全文
posted @ 2016-02-21 17:08 Helica 阅读(264) 评论(0) 推荐(0)
摘要:维护一个relation数组,保留着此元素和根元素之间的性别关系。之后就可以判断gay了。 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn=2010; int 阅读全文
posted @ 2016-02-02 00:07 Helica 阅读(203) 评论(0) 推荐(0)
摘要:记录元素个数的并查集。 利用sz数组保存并查集的大小。每次union时,把小的集合并到大的中去,并更新sz数组。 #include <cstdio> #include <algorithm> using namespace std; int n,m,k; int fa[30010],sz[30010 阅读全文
posted @ 2016-02-02 00:03 Helica 阅读(219) 评论(0) 推荐(0)
摘要:模板题 对于每修复一台终端,就遍历所有其他已修复的终端,如果距离在d之内,就union。 之后看是否在一个并查集中。 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; int N,D,pos[ 阅读全文
posted @ 2016-02-02 00:01 Helica 阅读(169) 评论(0) 推荐(0)
摘要:一道有点复杂的STL模拟题,对STL迭代器不太熟悉改了好久,最后总算A了出来。感觉用数组更方便。。。但是为了练习STL嘛对比白书上的代码,我写的还是傻了点。一开始没有理解四个操作的意思,单纯的模拟。#include #include #include #include #include #inclu... 阅读全文
posted @ 2015-09-07 00:10 Helica 阅读(224) 评论(0) 推荐(0)
摘要:白书的一道水题。话说好久没认真做难题了。今天出了排名,所有队伍里倒数第一啊!代码没什么可说的了。#include #include #include #include #include #include #include #include #include #include #include #in... 阅读全文
posted @ 2015-09-07 00:07 Helica 阅读(308) 评论(0) 推荐(0)
摘要:给你插入,删除的操作,维护一个降序排列的表,查询所有下标模5等于3的元素和。2012年成都网络赛的一道签到题。但是还是搜了题解才做出来了,意志不坚定啊。。。这道题给10s的时间,做法多种多样。最暴力的方法是维护一个数组,插入删除靠移动元素实现,巧妙的姿势可以用8点多秒通过。注意G++过不了但C++可... 阅读全文
posted @ 2015-09-07 00:04 Helica 阅读(563) 评论(1) 推荐(0)