- 博客(35)
- 资源 (3)
- 收藏
- 关注
原创 最短路专题练习
一、入门难度1、HDU 2544(一级)【题意】给出n个顶点m条边,以及每条边的权值为w,求1到n的最短路【思路】裸题2、HDU 2066 (一级)【题意】因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车(好可怜啊~)。【思路】这道题其实一次Dijkstra就可以了,我们将草儿的家看做0,从草儿家到相邻镇的花费看做0,那么我们就只需要求草...
2018-10-23 15:31:18
506
原创 BZOJ 1002: [FJOI2007]轮状病毒
题解:基尔多夫矩阵推出一个递推式:f[i]=f[i-1]*3-f[i-2]+2#include #include using namespace std; struct data{ int a[101],len;};int n;data mul(data a,int k){ for(int i=1;i<=a.len;i++) a.a[i]*=k;
2017-09-27 15:32:07
203
原创 BZOJ 1001: [BeiJing2006]狼抓兔子
题解:最小割转最短路=平面图转对偶图#include#include#include#define M 2000001using namespace std;int n,m,nm;struct data{ int to,next,v;}e[4*M];int dis[M],q[M],head[M];bool flag[M];int ne;void insert(in
2017-09-27 15:26:52
239
原创 【codevs 1003】电话连线
题解: prim 分析:从输出要求中就可以看出本题是Prim算法求最小生成树,所以,只需要实现就可以了。那么,我们来回顾一下Prim算法1.设有2个集合V1{1},V2{2,3,4,5}(默认有5个点)2.在图中找到离当前第一个点最近的点,我们假设是2,然后用2去松弛每一条边3.重复第2步直到循环n-1次那么题目就解决了,由于题目要求0边已经建造,所以我
2016-06-27 23:07:15
648
原创 【codevs 1002】 搭桥
题解: 第一问:dfs求连通块个数。一个连通块就是一座城市,两座城市搭桥即是连通块之间连边,注意的是连通块中有n个点,那就得连n条边,连边的时候方向是不变的,即搭的桥不能转弯,而且方向是可以偏移一行的…… 对于连通块中的一个点,将其向正右(x,i),右上(x-1,i),右下(x+1,i),正左(x,i),左上(x-1,i),左下(x+1,i),正上(i,y),上左(i-1,y),上右(i+1,y),正下(i,y),下右(i+1,y),下左(i-1,y)单一方向寻找,如果路径上
2016-06-24 09:14:07
823
原创 【codevs 1001】 【bzoj1050】舒适的路线
题解:1.边按权值排序,标号1~m2.初始化一个枚举起点sta=13.初始化并查集4.从sta开始顺推,利用并查集加边,直到s与t连通5.记录当前边编号为r6.初始化并查集7.从r逆推,利用并查集加边,直到s与t连通8.得到当前边编号,记为l9.[l,r]是一组比较优的可行解,更新答案10.枚举起点sta变为l+1,返回第3步继续执行
2016-06-20 18:02:47
973
原创 【codevs1540】 银河英雄传说
题解 我们可以把战场的每一列看作一个集合,初始时每个集合中只有一个元素。M指令可以看作合并集合,这令我们想到并查集。定义father数组,s数组和sum数组,分别表示并查集中每个元素的父亲,距自己的父亲的距离和该集合中的元素个数。只需要合并和路径压缩的时候注意一下就可以了。C指令可以利用类似前缀和的思想。
2016-06-20 17:23:44
597
原创 【vijos】P1022 Victoria的舞会2
题解#include #include using namespace std;int father[300];int a[300];void init(int n){ for(int i=1;i<=n;i++) father[i]=i;}int find(int x){ if(x!=father[x]) father[x]=find(father[x]); re
2016-06-19 21:53:37
491
原创 【rqnoj】PID343 mty的考验
题解#include #include #include using namespace std;int father[1000+10];int a[1000+10];void init(int n){ for(int i=1;i<=n;i++) father[i]=i;}int find(int x){ if(x!=father[x]) father[x]=fi
2016-06-19 21:30:08
370
原创 【codevs】1073 家族
题解#include #include using namespace std;int father[5000+100];void init(int n){ for(int i=1;i<=n;i++) father[i]=i;}int find(int x){ if(x!=father[x]) father[x]=find(father[x]); return f
2016-06-19 21:12:18
288
原创 【codevs】1503 愚蠢的宠物
题解:#include #include #include using namespace std;#define maxn 1000000+100int father[maxn];int a[maxn],b[maxn];int main(){ int n,x,y; memset(a,0x3f,sizeof(a)); memset(b,0x3f,sizeof(b));
2016-06-19 20:24:29
322
原创 【codevs】1069 关押罪犯
题解 简单#include #include #include using namespace std;int n,m,father[40100],x,y;struct data{ int a,b,c;}e[100001];int compar(const data &a,const data &b){ return a.c>b.c;}void init(in
2016-06-19 09:32:07
424
原创 并查集小结
1. 简述 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 需要实现的操作有:合并两个集合,判断两个元素是否属于一个集合。 这里介绍的主要是普通的并查集,很多情况下使用的并查集是需要扩展的,根据使用情况的不同,有很多差别,这里仅仅是最基本的算法。2. 复杂度 T=O
2016-06-19 09:12:19
241
原创 【codevs】1074 食物链
题解题目要求我们判假,如果我们用并查集来做这道题,应该何从下手呢?首先,很显然的是,我们必须维护一个点与点关系的集合,通过这个关系集合来判假。原始的并查集只能用于维护“属于同一类“的这种关系,但是这道题却还要求我们维护吃的关系,这样才能针对每一个给出的论断进行判断。维护属于同一组的这种信息很容易实现,但是又如何体现捕食的关系呢?稍加思考,可以这样来转化。针对每只动物,为他们分别创建三个元素
2016-06-18 14:15:58
544
原创 CCF青少年计算机程序设计评级标准(六)
六级标准1.1 定义 掌握基本的数据结构知识,能够根据实际需求设计算法编写程序,解决问题。1.2 知识要求 1. 树、图的存储 2. 哈希表、集合数据结构 3. 图的最短路、生成树算法,有向图的拓扑排序算法。 4. 动态规划常见模型,分治策略,各种排序算法。
2014-12-18 08:56:00
1702
原创 CCF青少年计算机程序设计评级标准(五)
五级标准1.1 定义 掌握简单数据结构知识,并结合已学算法和数学知识编写程序,解决问题。1.2 知识要求 1. 指针类型。 2. 一般线性表,队列,堆栈,二叉树的存储和遍历。 3. 排列与组合,高精度数值处理。 4. 二分算法,快速排序,深度优先搜索,宽度优
2014-12-18 08:52:21
1485
原创 CCF青少年计算机程序设计评级标准(四)
四级标准1.1 定义 了解几种常用的算法,并运用这些算法编写程序,解决问题。1.2 知识要求 1. 结构类型,文件操作。 2. 数据类型的内在含义。 3. 贪心法,递归,回溯法,模拟算法。 4. 简单的字符串处理。 5. 集合及集
2014-12-17 18:44:29
1245
原创 CCF青少年计算机程序设计评级标准(三)
三级标准1.1 定义 具有较强的程序实现能力,使用一种计算机程序设计语言编写程序,解决问题。1.2 知识要求 1. 数制及其转化,信息编码,位运算。 2. 字符串类型。 3. 子程序。 4. 递归。 5. 逻辑运算,整数的质因数分
2014-12-16 17:22:41
1186
原创 CCF青少年计算机程序设计评级标准(二)
二级标准2.1 定义 了解什么是算法,能够用程序设计语言实现简单算法,解决问题。2.2 知识要求 1. 逻辑表达式。 2. 条件嵌套,循环嵌套,数组。 3. 枚举,简单排序,简单查找算法。 4. 素数与合数,最大公约数,最小公倍数,互质数。2.3 能力
2014-12-16 17:20:10
1307
原创 CCF青少年计算机程序设计评级标准(一)
一级标准1.1 定义了解什么是计算机程序,能够编写计算机程序解决简单问题。1.2 知识要求1. 程序的基本结构2. 标识符与关键字。3. 常量和变量。4. 算术表达式和关系表达式。5. 整除,求余运算,常用数学函数。6. 赋值语句,输入输入语句,复合语句,条件语句(不嵌套),循环语句(不嵌套)。
2014-12-16 17:13:51
1475
原创 第一章 C++的初步知识
1.1 了解计算机硬件和软件1.1.1 计算机和信息技术的发展1.信息与信息技术(1)信息是以适合于通信、存储或处理的形式来表示的知识或消息。(2)信息的特征:可识别性、可存储性、可扩充性、可压缩性、可传递性、可转换性、特定范围有效性。(3)信息技术(InformationTechnology,IT)是主要用于管理和处理信息所采用的各种技术的总称。2.计算机的数学模型现
2014-12-15 11:49:05
623
帮助文档\JAVA、PHP、JS、HTML、XML、CSS、WEB CHM工具手册打包下载.rar
2012-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人