次短路径与次小生成树问题的简单解法

[次短路径] 次短路径可以看作是k短路径问题的一种特殊情况,求k短路径有Yen算法等较为复杂的方法,对于次短路径,可以有更为简易的方法。下面介绍一种求两个顶点之间次短路径的解法。 我们要对一个有向赋权图(无向图每条边可以看作两条相反的有向边)的顶点S到T之间求次短路径,首先应求出S的单源最短路径。遍历有向图,标记出可以在最短路径上的边,加入集合K。然后枚举删除集合K中每条边,求从S到T的最短路径,记录每次求出的路径长度值,其最小值就是次短路径的长度。 在这里我们以为次短路径长度可以等于最短路径
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

生成树的计数 Matrix-Tree(矩阵树)定理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/62045182 信息学竞赛中,有关生成树的最优化问题如最小生成树等是我们经常遇到的,而对生成树的计数及其相关问题则少有涉及。事实上,生成树的计数是十分有意义的,在许多方面都有着广泛的应用。本文从一道信息学竞赛中出现的例题谈起,首先介绍了一种指数级的动态规划算法,然后介绍了行列式的基本概念、性质,并在此基础上引入Matrix-Tree定理,同时通过
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

最小树形图——朱刘算法(Edmonds)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/62045479 定义:一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图。 朱刘算法实现过程: 【在选出入边集后(看步骤1),若有向图中不存在有向环,说明该图就是最小树形图】 1,选入边集——找到除root点之外,每一个点的所有入边中权值最小的,用数组in[]记录下这个最小权值,用pre[]记录到达该点的前驱;(若
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

哈希 — 康托展开

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/64441848 http://blog.csdn.net/fuyukai/article/category/2898321/1 图论、次小生成树,差分约束,双连通 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。 全排列: 1,2,3三个数的全排列:
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

最近公共祖先(LCA)的三种求解方法

转载来自:https://blog.andrewei.info/2015/10/08/e6-9c-80-e8-bf-91-e5-85-ac-e5-85-b1-e7-a5-96-e5-85-88lca-e7-9a-84-e4-b8-89-e7-a7-8d-e6-b1-82-e8-a7-a3-e6-96-b9-e6-b3-95/ 简述 LCA(Least Common Ancestors),即最近公共祖先,是指这样一个问题:在有根树中,找出某两个结点 u 和 v 最近的公共祖先(另一种说法,离树根
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

网络流 最大流—最小割 之SAP算法 详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/65632002 首先引入几个新名词: 1、距离标号: 所谓距离标号 ,就是某个点到汇点的最少的弧的数量(即边权值为1时某个点到汇点的最短路径长度)。 设点i的标号为level[i],那么如果将满足level[i]=level[j]+1的弧(i,j)叫做允许弧 ,且增广时只走允许弧。 2、断层(本算法的Gap优化思想): gap[i]数组表示距离标
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

OI/ACM 刷题网站 人气OJ简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/68957780 SPOJ简介 SPOJ是波兰最为出色的Online Judge之一,界面和谐,题目类型也非常丰富,适合有一定基础的选手练习,对高手而言也是个提高能力的良好平台。   SPOJ题目分类:classical,challenge,partial,tutorial。   1)classical:ACM题型,通过所有数据才能算AC   2)
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

POJ 3279(Fliptile)题解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/73650579 【题意】 给定长宽的黑白棋棋盘摆满棋子,每次操作可以反转一个位置和其上下左右共五个位置的棋子的颜色,求要使用最少翻转次数将所有棋子反转为黑色所需翻转的是哪些棋子。 【题目分析】 这题刚开始被放到搜索的分类下了..然而这和搜索有什么关系..没经验所以想了各种和搜索沾边的方法,结果没想出解法,直到看了网上的题解,压根不是搜索。 具体解
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

Windows批处理之修改文件名

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/79266785 用途 可以将任意的文件名批量修改有规律的文件名,如下: rename by keith.gif 使用方法 新建一个文本文件(.txt),将下面代码复制进去,保存,最后将文件后缀改成.bat,放到想要批量操作的文件所在的文件夹,直接双击就好. 实现代码 @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSIO
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

搞IT,算法编程不错的学习网址 & 一些专栏博客大神的地址(汇总)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/44752577 博客专栏大神 王晓华(算法的乐趣) 算法系列:http://blog.csdn.net/orbit/article/category/830251 PostgreSQL深入理解内核系列:http://blog.csdn.net/beiigang/article/category/947307 Hadoop集群系列(虾皮博客园):h
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

MoreWindows 微软认证专家博客目录(白话算法,C++ STL,windows编程)

为了方便大家查找和学习,现将本人博客中所有博客文章列出目录。 (http://blog.csdn.net/morewindows) 一. 白话经典算法 目前有17篇,分为七大排序和经典面试题讲解两大类 1. 《白话经典算法系列之一 冒泡排序的三种实现》 2. 《白话经典算法系列之二 直接插入排序的三种实现》 3. 《白话经典算法系列之三 希尔排序的实现》 4. 《白话经典算法系列之四 直接选择排序及交换二个数据的正确实现》 5. 《白话经典算法系列之五 归并排序的实现》 6. 《白话经典算法系
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

*** 竞赛中的各种低级错误,及编程常见错误小结 *** 欢迎童鞋们跟帖

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/68511503 编写代码常见错误: 1.递归时隐藏的修改了全局变量例如点分治重心 →每次复制一遍 2.测试数据时未将空间开到题目要求,隐藏的空间倍数关系例如无向图2倍 →RE 3.除数是个减法式子 整数→RE 浮点数→WA →特判 4.离线并查集的重复操作 →只有第一次才需要unite 5.回溯暴搜的复杂度是阶乘级或者指数级 →看到正常数据的题再
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

【个人网络整理】NOIP / 省选 /NOI 知识点汇总

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txl16211/article/details/71504478 NOIP知识点汇总 加*号是选学,加粗为重点,重要值排序不分先后 基础算法 贪心、枚举、分治、二分、倍增、*构造、高精、模拟 图论 图 最短路(dijkstra、spfa、floyd),差分约束 最小生成树(kruskal、prim) 并查集(扩展域) 拓扑排序 二分图染色,*二分图匹配 tarjan找scc、桥、割点,缩点 *分
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

windows中的fopen_s,fprintf_s,fscanf_s等安全增强操作函数

一 、安全增强函数 VS中进行编程时,经常会遇到 使用fopen不安全,建议使用fopen_s替代的警告: 因为 CRT(C运行时库)中的很多函数并不进行参数的越界检测。因此windows提供了对于这些函数的安全增强版本。就是对旧版本加后缀_s ("secure") 。其中有对于文件操作的有fopen_s,fprintf_s,fscanf_s等。还有sprintf_s,strcat_s,strcpy_s等。 这些安全增强函数并没有避免错误。只是在原来的基础上增加了安全检测。在越界时,返回错误码
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

UNIX系统 文件操作接口

一、文件描述符 对于内核而言所有打开的文件都是通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。当读或者写一个文件时使用open或creat返回文件描述符标识该文件,将作为参数传递给read或write UNIX系统shell把文件描述符0与进程的标准输入关联,文件描述符1与标准输出关联,文件描述符2与标准错误关联。这是各种shell以及很多程序使用的惯例,与UNIX内核无关。 在符合POSIX.1的应用程序中。幻数0、1、2以
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

文件偏移量与C语言中的流定位

一、文件偏移量 1、每个打开的文件都有一个与其相关联的“当前文件偏移量”。它通常是一个非负整数,用以度量从文件开始处计算的字节数。 2、内核为所有打开的文件维持一张文件表。文件表项包含文件偏移量。 3、默认情况下,当打开一个文件时,除非指定O_APPEND选项,否则偏移量为0。 4、读、写操作都是从当前文件偏移量处开始,并使偏移量被设置为0. 5、两个进程打开同一个文件时,每个进程都会有自己的文件表项(只有一个V节点),都有自己对该文件的当前文件偏移量。 6、文件的定位可以大于文件的当前长度,
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

C语言中的二进制I/O:fread、fwrite

在链接:利用标准C库函数进行文件读写中介绍了使用getc或putc一次读写一个字符和使用fgets或fputs一次读写一行。 但是如果进行二进制文件I/O操作,我们更愿意一次读写一个完整的结构。如果使用getc或putc那么必须循环通过整个结构,每次循环处理一个字节会非常麻烦而且耗时。如果使用fputs和fgets,那么因为fputs在遇到NULL字节时就停止,而在结构中可能含有NULL字节,所以不能使用它实现°结构要求。类似的如果输入数据中含有NULL字节或换行符,则fgets也不能正确工作
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

C语言动态内存分配:(一)malloc/free的实现及malloc实际分配/释放的内存

一、malloc/free概述 malloc是在C语言中用于在程序运行时在堆中进行动态内存分配的库函数。free是进行内存释放的库函数。 1、函数原型 #include <stdlib.h> void *malloc( size_t size ); void free( void* memblock ); 2、返回值 成功时,返回所分配存储空间的起始地址;返回值类型为void*,在C语言中可以把void*直接付给具体的类型,但是在C++中必须进行强制类型转换 失败时(内
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

C语言动态内存分配:(二)malloc/calloc/realloc/aligned_malloc

1、函数原型 (1)malloc用来分配size字节的内存 void *malloc( size_t size ); (2)calloc分配n个size大小的连续的空间 void *calloc( size_t num, size_t size ); (3)realloc用于修改一个已经分配的内存块的大小 void *realloc( void* memblock, size_t size ); (4)_aligned_malloc:在一个特定的对齐
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0

C动态内存分配:(四)malloc与new分配内存大小查看函数:_msize()/malloc_usable_size

_msize()为windows下检测堆上动态分配的内存块的大小。malloc_usable_size为LINUX下进行检测的函数。 1、_msize (1)函数原型 size_t _msize( void* memblock );(2)函数说明 1)参数memblock为一个堆内存块的地址。不能传入栈上的地址(例如a[10],_msize(a)) 2)函数返回指针所指内存块的大小。malloc分配的函数返回的地址不包含首部,因此使用_msize()函数测得的也不包含首部大小。 (3
分类: 其他 发布时间: 10-30 23:42 阅读次数: 0