
CDQZ信息学竞赛——lemonoil
文章平均质量分 93
本专栏为个人信息学竞赛心得体会、部分刷题目录,如有误或者有大神愿意点播本蒟蒻,希望能够与之共勉。
lemonoil
竞赛党一枚
展开
-
C++ STL--stack/queue 的使用方法
1、stackstack 模板类的定义在头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack s1;stack s2;stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是转载 2016-01-25 11:50:20 · 526 阅读 · 0 评论 -
只有五行的Floyd最短路算法
暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问题。转载 2016-01-25 14:45:46 · 606 阅读 · 0 评论 -
线段树
线段树博客分类: 算法 线段树的构造思想 线段树是一棵二叉树,树中的每一个结点表示了一个区间[a,b]。每一个叶子节点表示了一个单位区间。对于每一个非叶结点所表示的结点[a,b],其左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2,b]。 例如: 线段树的运用 线段树的每个节点上往往都增加了一些其他的域。在这些域中转载 2016-01-25 15:09:34 · 670 阅读 · 0 评论 -
树状数组
引用请注明出处:http://blog.youkuaiyun.com/int64ago/article/details/7429868 写下这个标题,其实心里还是没底的,与其说是写博帖,不如说是做总结。第一个接触树状数组还是两年前,用什么语言来形容当时的感觉呢?……太神奇了!真的,无法表达出那种感觉,她是那么的优雅,10行不到的代码,却把事情干的如此出色!没有了解她原理的前提下即使把转载 2016-01-25 15:12:08 · 490 阅读 · 0 评论 -
树状数组(2)
1,用途 树状数组是一种非常优雅的数据结构.当要频繁的对数组元素进行修改,同时又要频繁的查询数组内任一区间元素之和的时候,可以考虑使用树状数组. 换句话说,树状数组最基本的应用: 对于一个数组,如果有多次操作,每次的操作有两种:1、修改数组中某一元素的值,2、求和,求数组元素a[1]+a[2]+…a[num]的和。 2,复杂度 最直接的算法可以在O(1)时间内完成一次修改,但是转载 2016-01-25 15:15:22 · 543 阅读 · 0 评论 -
【C++ STL】算法 <algorithm>中各种算法解析
一,巡防算法 for_each(容器起始地址,容器结束地址,要执行的方法)[html] view plain copy#include iostream> #include algorithm> #include vector> using namespace std;转载 2016-01-25 15:22:24 · 1047 阅读 · 0 评论 -
【线段树】线段树入门之入门
线段树的入门级 总结 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。 使用线转载 2016-01-25 19:36:21 · 386 阅读 · 0 评论 -
【完全版】线段树
转载自:http://www.notonlysuccess.com/膜拜之。。。【完全版】线段树很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pku打广告,但是现在我自己都不太好意思去看那篇文章了,觉得当时的代码风格实在是太丑了,很多线段树的初学者可能就是看着这篇文章来练习的,如果不小心被我培养出了这么糟糕的风格,实在是过意不去,正好过几天又要转载 2016-01-25 20:03:23 · 537 阅读 · 0 评论 -
数据结构专题——线段树
线段树转载请注明出处,谢谢!http://blog.youkuaiyun.com/metalseed/article/details/8039326 持续更新中···一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每转载 2016-01-25 20:53:51 · 1026 阅读 · 0 评论 -
<algorithm.h>中sort对结构体排序的用法
sort好用大家都知道的,废话不多说。试过直接用数组,是会出现问题的,所以建议和容器一起用。下面提供一种用法例子 [cpp] view plain copy#include #include #include #include using namespace std; struct Pearl转载 2016-01-25 21:33:56 · 577 阅读 · 0 评论 -
并查集详解 (转)
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点转载 2016-01-26 16:44:54 · 509 阅读 · 0 评论 -
图---邻接表(建立,深度遍历,广度遍历)
图的邻接表表示法类似于树的孩子链表表示法。对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency List)。以下代码测试过,为图的邻接表表示方式。 C++ Code 123456789101112131415转载 2016-01-27 09:45:45 · 863 阅读 · 0 评论 -
最短路径问题
出处:http://www.cnblogs.com/hxsyl/一.问题引入 问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径——最短路径。解决最短路的问题有以下算法,Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法,另外还有著名的启发式搜索算法A*,不过A*准转载 2016-01-27 14:23:11 · 902 阅读 · 0 评论 -
最短路算法详解(Dijkstra/SPFA/Floyd)
Dijkstra单源最短路算法,即计算从起点出发到每个点的最短路。所以Dijkstra常常作为其他算法的预处理。 使用邻接矩阵的时间复杂度为O(n^2),用优先队列的复杂度为O((m+n)logn)近似为O(mlogn)(一) 过程每次选择一个未访问过的到已经访问过(标记为Known)的所有点的集合的最短边,并用这个点进行更新,过程如下:Dv为最短路,而Pv为前面的顶点。转载 2016-02-20 21:14:44 · 829 阅读 · 0 评论 -
NOIP2013火柴排队
题目描述 Description涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:,其中 ai表示第一列火柴中第 i 个火柴的高度,bi表示第二列火柴中第 i 个火柴的高度。每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这个最小的距离,最少原创 2016-07-11 21:44:48 · 803 阅读 · 0 评论 -
NOIP2013转圈游戏
描述n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。按照顺时针方向给 n 个位置编号,从 0 到 n-1。最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推。游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第n − m号位置上的小伙伴走到第 0 号位置,原创 2016-07-11 21:50:00 · 865 阅读 · 0 评论 -
NOIP2013 day2
积木大赛题目描述 Description春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为 n 的大厦,大厦可以看成由 n 块宽度为1的积木组成,第i块积木的最终高度需要是hi。在搭建开始之前,没有任何积木(可以看成 n 块高度为 0 的积木)。接下来每次操作,小朋友们可以选择一段连续区间[L,R],然后将第 L 块到第 R 块之间(含第 L 块和第 R原创 2016-07-12 20:10:51 · 661 阅读 · 0 评论 -
对六种平衡树的研究与探索【全面】【更新中】
对平衡树的研究与探索四川省第七中学(高新校区) 李明洋 对平衡树的研究与探索摘要关键字 二叉搜索树 treap splay sbt rbt 替罪羊树 AVL正文一引言二各类平衡树的基本介绍平衡二叉树treap基本介绍补充替代rand可持久化核心的步骤旋转插入删除和选择第k小项操作及模板sbt节点大小平衡树基本介绍补充与标准版的比较插入人字形数据后退化的SBT原创 2017-02-10 13:53:27 · 10939 阅读 · 1 评论 -
配对堆
原创没看懂:http://blog.youkuaiyun.com/pi9nc/article/details/11841995转载看懂了:http://blog.youkuaiyun.com/luofeixiongsix/article/details/50640668一、特性:配对堆是一种比较实用的斐波那契堆,它的优势是在进行DecreaseKey的时候速度快于其他堆结构。1.在这里,每转载 2017-01-16 12:08:07 · 568 阅读 · 0 评论 -
CDQZ 高新2016级ACM模拟赛第一套
CDQZ 高新2016级ACM模拟赛第一套result结果如上,因为人数问题,我们队只有两人但规则上允许每人都拥有一台电脑。 这次比赛还是蛮有意思的,在过程中能看见其他人的进度对自己也是一种鼓励(特别是看了自己A了四块深绿)。 深绿胜者可获得笔记本。。。。(没有电脑)一个。一共九道题,难度(对于自己来说)F>J>I>C>G>B>A>D>E>H。 于是乎我还是按照字典序发题解吧。A A - Q原创 2017-02-12 21:40:11 · 749 阅读 · 0 评论 -
可持久化并查集(二)——从镜像到动态
uva 11987 题目连接 code#include<cstdio>#include<string>#include<iostream>#include<algorithm>using namespace std;const int MAXN = 100010;int n,m;int father[MAXN];int sum[MAXN],num[MAXN];templat原创 2017-02-25 17:23:29 · 4018 阅读 · 0 评论 -
可持久化并查集(一)——从阿克曼函数到镜像
noip2010 以下题目可以跳过。关押罪犯(prison.pas/c/cpp) 【问题描述】 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监原创 2017-02-25 17:37:43 · 5614 阅读 · 0 评论 -
数据结构专题
最后一题无语(有序链剖……)Problem 1. rotinv 题解#include <cstdio>#include <iostream>using namespace std;const int N = 1000000 + 10;template<class T>inline void readin(T &resez){ static char ch; while((c原创 2017-03-18 17:11:25 · 1164 阅读 · 0 评论 -
最强平衡树——Treap[以我的最弱击败你的最强]
以我的最弱战胜你的最强!!——Treap本人蒟蒻,在平衡树坑中深陷数年。为了早日逃离此天坑,特作此文。什么是平衡树?度娘传送门 什么是treap?ACdreamers%%% 注:本篇所有代码都在片尾!!(醒目)CMP那么了解了这些,我们先列出一个list NAME 优势 劣势 splay LCT,序列之王 常数大,代码量稍大 RBT 自适应深度平衡树,速度在同类BS原创 2017-05-13 15:20:32 · 785 阅读 · 1 评论 -
浅谈竞赛中的部分树(块、点、链)【长期更新】
[toc] 本文会从链剖讲起,涉及其变形进阶,之后也会讲到DFS序,树上分块,块状树,点分治与边分治,LCT,仙人掌与仙人球,伪top_tree(AAA树),top_tree。 本文重点讲述思维,至于例题虽会有涉及,但还是请读者自行百度(毕竟OI是不缺题的。。。。) 详略在文章中体现,如有错误,请各位读者指正。从树链剖分讲起其实我是先会LCT,再会链剖的,所以说比较尴尬。。。 但是自我学习了原创 2017-07-05 17:11:32 · 4650 阅读 · 0 评论 -
SPOJ QTree 1
树链剖分+线段树裸题,注意边权维护的细节。#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>#define clr(x) memset((x),0,sizeof(x))const int N=200020,inf=~0U>>1;using namespace std;char cmd[10];stru原创 2017-07-07 08:11:46 · 528 阅读 · 0 评论 -
SPOJ QTree2
仍然是上一道题的模板, 这道题重点是要学会倍增来查找路径上的点。即kfa()#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>#define clr(x) memset((x),0,sizeof(x))const int N=200020,inf=~0U>>1;using namespace std;原创 2017-07-07 08:14:23 · 478 阅读 · 0 评论 -
SPOJ QTree again!
直接上第一道题的模板, 关键是转化颜色到具体数值的思想很重要。 详细关于黑白分析的细节看代码。 吐槽一句:样例乱打都能过。。。#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>#define clr(x) memset((x),0,sizeof(x))const int N=200020,inf=0x原创 2017-07-07 14:16:02 · 271 阅读 · 0 评论 -
SPOJ QTree4
4.5hours的艰苦奋斗。。。。。 好想爆粗口。。。堆转手写set,树链剖分上加点入set,线段树维护set信息。。我想死。。。#include<bits/stdc++.h>const int N=100020,inf=1<<29;using namespace std;char cmd[8];struct Set{ priority_queue<int> a,b; vo原创 2017-07-07 14:21:10 · 469 阅读 · 0 评论 -
SPOJ QTree系列【长期更新】
SPOJ QTree1树链剖分版LCT版SPOJ QTree2树链剖分版LCT版SPOJ QTree again!树链剖分版LCT版SPOJ QTree3主席树版本SPOJ QTree4树链剖分版LCT版SPOJ QTree5树链剖分版点分治版LCT版SPOJ QTree6树链剖分版LCT版SPOJ QTree7树链剖分版LCT版原创 2017-07-07 14:29:55 · 647 阅读 · 0 评论 -
BZOJ 2957 楼房重建 [分块][线段树]
这道题的线段树做法很是奇巧,正常考试中那种维护的方式还是比较难想到,所以说我先是用分块做的。#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <algorithm>using namespace std;const int maxn=110000;int n,m,siz,ans,原创 2017-07-07 14:42:17 · 310 阅读 · 0 评论 -
BZOJ 1036 三种做法 [树链剖分][LCT][块状树]
三种数据结构的细将在这里 这里只是放代码。 LCT的代码是借用hzwer学长的(既优美又简洁),我写不出比这更好的code了(其实是懒吧。。。) 块状树#include<algorithm>#include<cstdio>#include<cmath>const int maxn=30000,inf=~0U>>1;using namespace std;char cmd[10];s原创 2017-07-07 15:52:30 · 352 阅读 · 0 评论 -
BZOJ 2821 作诗 [区间众数]
类似的有BZOJ 蒲公英 区间众数这种线段树解决不了的题,用分块暴力准没有错。#include<bits/stdc++.h>using namespace std;const int N = 100005;int l,r,cnt[N],a[N],sum[N][320],n,siz,m,belong[N],ans[320][320],last_ans;inline void read(int原创 2017-07-07 15:56:55 · 681 阅读 · 0 评论 -
BZOJ2733 永无乡 [启发式合并]
Problem 2733. – [HNOI2012]永无乡2733: [HNOI2012]永无乡Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3578 Solved: 1922[Submit][Status][Discuss]Description永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n原创 2017-07-07 16:45:02 · 365 阅读 · 0 评论 -
SPOJ QTree5 [点分治][堆]
点分治模板题,我有个max细节没注意到,root一直取错,小数据AC,大数据就TLE了。。。。找了半天才发现。。。 MD 点分治+堆维护路径值(与QTree4很像)。 code#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>#include<queue>const int N=200220;usi原创 2017-07-08 07:39:14 · 801 阅读 · 0 评论 -
后缀平衡树
本是打算研究后缀结构,但是发现不管是倍增还是DC3都异常容易错,知道最近才学习到了倍增算法的简易写法,但是仍然不爽,于是乎进入了后缀平衡树这样一个大坑。 风雨,残花,遇见你首先遇到的一个问题就是treap常数太大,虽然网上的裸题可以过,但是却异常的缓慢。。。。 以bzoj3682为例 用treap解决为2400ms#include<cstdio>#include<cstring>#incl原创 2017-07-09 15:48:00 · 1872 阅读 · 1 评论