数据结构
kryi
这个作者很懒,什么都没留下…
展开
-
Ural 1028. Stars
看树状数组课件的时候见到过 这个题,给出恒星的坐标,Y轴从小到大有序,那么按y轴的顺序修改树状数组的值,求1-x的区间和就是在恒星左下的恒星数。 #include #include #include #include #include using namespace std; const int maxn=15010; const int maxm=32010; int num[max原创 2013-08-01 21:30:17 · 743 阅读 · 0 评论 -
Ural 1090. In the Army Now
#include #include #include #include #include #include #include using namespace std; const int maxn=10010; int sum; int f[maxn*4]; void Build(int n) { sum=0; n=n<<2; for(int i=0;i<=原创 2013-08-01 21:36:05 · 633 阅读 · 0 评论 -
Ural 1306. Sequence Median
求一个数列的中位数,最多有250000个数。 看了discuss才知道用优先队列,先压栈N/2+1个然后边压栈边弹栈。 N为奇数就是栈里的弹一个,N为偶数就从栈里弹两个。 #include #include #include #include using namespace std; priority_queue que; int main() { //freopen("in","r原创 2013-08-01 22:01:59 · 739 阅读 · 0 评论 -
Ural 1654. Cipher Message
删掉连续的相同两个字母,直到不存在两个连续且相同的字母。 模拟一个栈即可。 #include #include #include #include #include #include #include #include #include #include using namespace std; #define eps 1e-7 #define INF 0x3ffffff原创 2013-08-01 20:55:53 · 579 阅读 · 0 评论 -
Ural 1126. Magnetic Storms
题好难读,输出长度为k的区间内的峰值。 单调队列的应用。 单调队列的插入就是把一个元素加入,从队尾开始到比第一个他的大的元素位置之后,在之后的元素全部抛弃。 删除就是从对头找到第一个满足可在队列中的元素作为对头。 #include #include #include #include #include #include #include using namespace s原创 2013-08-01 21:46:51 · 692 阅读 · 0 评论 -
Ural 1037. Memory Management
看到网上有用堆做的,我是用线段树做的,根据noclyt的思想。 把30000个内存建树,记录区间内最早到期的内存时间。 当申请内存时,查询编号最小的空闲内存。 当访问内存时,先查询内存块时候已经到期,否则更新内存块的到期时间。 #include #include #include #include #include #include #include #include #i原创 2013-08-01 21:54:34 · 623 阅读 · 0 评论 -
Ural 1019. Line Painting
在0到10^9的线段上,一开始颜色全白,然后修改多次子区间颜色或黑或白。求最终状态下的白色最长区间。 主要就是离散化,然后就直接用线段树了。刚刚开始学线段树,代码很挫。 #include #include #include #include #include using namespace std; const int maxn=10010; int col[maxn],x[ma原创 2013-08-01 21:23:24 · 658 阅读 · 0 评论 -
Ural 1003. Parity
给出在一个区间内1的奇偶性,输出在第一次出现矛盾位置。 个人感觉是一个比较难也比较好的并查集的题目,一开始并没有看出来,囧。 把给出的区间转化为前开后闭区间,查询区间的短点是否为同一个祖先,若是,则判断奇偶性是否正确。 若不在同一个区间把区间短点合并。 注意两点: 1.记录当前区间短点到最远祖先这段区间的奇偶性。 2.合并的时候,是把要合并的区间端点的两个祖先合并。路径压缩的时候修改祖原创 2013-08-01 21:15:42 · 717 阅读 · 0 评论 -
Ural 1471 Tree
询问一棵树的任意两个节点的最短距离。 裸的lca。 #include #include #include #include #include #include #include #include using namespace std; const int maxn=500001; struct Node{int val,to,next;}node[2*maxn]; int head[ma原创 2013-10-06 18:51:59 · 476 阅读 · 0 评论