自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白学病患者的专栏

失败并不可怕,可怕的是你还相信这句话。

  • 博客(51)
  • 资源 (5)
  • 收藏
  • 关注

原创 hdu 5424 Rikka with Graph II (哈密顿路判定)

给一个n条边,n个顶点的图,判定是否存在哈密顿路。如果存在哈密顿路,此时路径中含有n-1条边,剩下的那一条要么是自环(这里不予考虑,因为哈密顿路必然不经过),要么连接任意两个点。不考虑自环,此时图中的点度数为1的个数必然不超过2个,有如下三种情况:1、剩下的那条边连接起点和终点,此时所有点度数都是2,可以从任意一个顶点开始进行DFS,看能否找到哈密顿路2、剩下的那条边连接除起点

2015-08-29 22:23:32 1100

原创 hdu 5423 Rikka with Tree

问题描述众所周知,萌萌哒六花不擅长数学,所以勇太给了她一些数学问题做练习,其中有一道是这样的:对于一棵树TTT,令F(T,i)F(T,i)F(T,i)为点1到点iii的最短距离(边长是1). 两棵树AAA和BBB是相似的当且仅当他们顶点数相同且对于任意的iii都有F(A,i)=F(B,i)F(A,i)=F(B,i)F(A,i)=F(B,i).两棵树AAA和BBB是不同的当且仅当他们

2015-08-29 21:59:44 650

原创 hdu 3078 Network (LCA转RMQ)

题意:n个结点形成一棵树,每个结点有一个权值,两种操作:一、改变某个结点的权值。二、查询结点u到结点v的路径上第k大的权值。由于牵涉修改操作,因此不便用离线tarjan来做,这里采用LCA转RMQ的方法来求LCA。关于LCA与RMQ的相互转换建树之后DFS求出各个结点的深度dep、欧拉序列E、第一次在欧拉序列中出现的位置pos、以及前驱结点pre。然后可转化为RMQ

2015-08-29 14:51:02 483

转载 LCA倍增法

LCA-倍增法(在线)O(nlogn)-O(logn)1. DFS预处理出所有节点的深度和父节点inline void dfs(int u){ int i; for(i=head[u];i!=-1;i=next[i]) { if (!deep[to[i]]) { d

2015-08-28 09:28:27 415

原创 hdu 2874 Connections between citie(离线tarjan求LCA 前向星)

给一个森林,询问某两点之间的路径长度。由于所给图不存在父子关系,因此根据输入建立无向边。任选一个未访问的顶点作为某棵树的根节点开始进行DFS,注意DFS前vis数组必须清0。为什么选择前向星?因为用vector邻接表会爆内存。#include#include#include#include#include#include#include#include

2015-08-27 10:05:20 391

原创 hdu 2586 How far away ?(离线tarjan求LCA)

n座房子由n-1条道路连接,形成一棵树。给出道路长度,进行m个询问:两个房子间路径长度)树中不存在父子关系,因此建立无向边。选择任意一个结点(房子)作为根节点进行DFS,传入一个参数w表示该结点距离根节点的距离。同时开设一个数组d,用来记录各个结点到根节点的距离。那么对于查询的两个点u,v,其路径长度就等于d[u]+d[v]-d[LCA(u,v)]*2#include#i

2015-08-26 18:33:10 329

原创 poj 1330 Defragment (最近公共祖先)

给出一棵树的父子关系,求指定的两个结点的最近公共祖先。关于最近公共祖先(LCA)的资料如下:资料1LCA问题的tarjan算法由于存在父子关系,因此建图的时候建立的是有向边,在进行dfs前,需要找到根节点(入度为0),从该结点开始DFS。#include#include#include#include#include#include#incl

2015-08-26 18:25:36 393

转载 最近公共祖先(LCA)详解

LCA问题(Least Common Ancestors,最近公共祖先问题),是指给定一棵有根树T,给出若干个查询LCA(u, v)(通常查询数量较大),每次求树T中两个顶点u和v的最近公共祖先,即找一个节点,同时是u和v的祖先,并且深度尽可能大(尽可能远离树根)。LCA问题有很多解法:线段树、Tarjan算法、跳表、RMQ与LCA互相转化等。本文主要讲解Tarjan算法的原理及详细实现。

2015-08-26 11:09:12 3516

原创 poj 3648 wedding(2-sat 拓扑排序输出方案)

题意怪怪的,还不给输入规模_(:3 」∠)_,听说数据也是水的。。。。。n对夫妇,从0开始编号,其中0号为新郎和新娘,分别坐在两端。给出m对关系(i,j),i和j不能一起坐在新娘对面,这n对夫妇中任意一对不能坐在同一端。输出与新娘在同一端的其他n-1个人。建图:首先将0(新娘)和新郎(1)连一条边,表示新娘和新郎必须坐在不同端。然后对于关系(i,j),连接 2i->2j+1,2j-

2015-08-25 19:32:52 640

原创 hdu 3622 Bomb Game(2-sat 二分答案)

n个回合,每次给出两个点坐标,要求任选一个。对于选的每一个点确定一个半径作圆,要求面积不能重叠。最终获得的分数为所有圆中半径最小的那个。求:能够获得的最大分数。要让最小半径最大,很自然想到二分。建图:假设答案为D将每一个回合拆作两个点Ai,Ai+1,分别代表每一个回合中要选择的那两个点。对于任意两个回合i,j,如果Ai和Aj的距离Aj+1连一条边。建图后进行SC

2015-08-25 10:38:02 424

原创 poj 3678 Katu Puzzle (2-sat)

题目大意:给出一个含n个点(顶点从0开始编号),m条边的无向图,每条边有一个权值c,取值为0或1,并且每条边对应有一个操作op(and,or,xor),问能否给每一个顶点i一个值Xi,取值为0或1,使得每一条边(i,j,c,op),都有Xi op Xj = c。建图:1、每一个顶点只有两种取值1,0,那么将其拆作两个顶点Ai,Ai+1。2、对于每一条边(i,j,c,op),考虑

2015-08-24 22:56:37 332

原创 poj 3207 Ikki's Story IV - Panda's Trick( 2-sat判定性问题,SCC缩点)

题目很难读懂。大致是说一个圈上顺时针地放了n个点,然后告诉你已经用线连接的m对顶点(不相交),可以从圈内部连接,也可以从外部,可以是直线,也可以是曲线。问能否使得这m条线不相交。建图:1、一条线,要么在圈内部,要么在外部。于是可以考虑将m条线拆作2*m个点,对于第i条线,拆作Ai,Ai+1两个点,分别表示内部、外部。2、对于两条线i,j,如果是交叉的(即其中一条线的端点

2015-08-24 19:12:51 335

原创 uva 11324 the largest clique (2-sat 二分答案)

n架飞机,有早、晚着陆两种方式选择。让你安排着陆方式使得相邻两个着陆时间间隔的最小值尽量大。求该最大值。建图:每架飞机i的两个着陆时间视为两个点Ai、Ai+1设最后答案是T,那么当对于两架飞机,若Ai-Aj Aj+1连一条边二分答案,再按照上面方式建图求解即可。时间复杂度为O(n^2logT)#include#include#include#inc

2015-08-24 15:22:46 326

原创 hdu 1814 Peaceful Commission (2-sat入门)

专题和资料#include#include#include#include#include#includeusing namespace std;#define maxn 20005#define maxm 100005struct Edge{ int to,next;}edge[maxm];int cnt,head[maxn],S[maxn],t

2015-08-24 13:53:38 294

原创 uva 3713 Astronauts (2-sat)

n个宇航员,A、B、C分配3种任务,m对关系(i,j)表示宇航员i和宇航员j相互讨厌,二者不能分配同一任务。给出宇航员年龄,设平均年龄为x只有年龄大于等于x的宇航员能够分配A任务,年龄小于X的才能分配B任务,C任务无限制。问能否使得每个宇航员都有任务?输出方案。建图:注意到每个宇航员只有两种任务可选。将每一个宇航员i拆作两个点Ai和Ai+1。Ai+1表示选择任务C,

2015-08-24 13:43:41 104

原创 UVA 11248 Frequency Hopping (最大流)

有向图,问是否存在一个从1到n,流量为C的流,若不存在,能否修改某一条边的容量,使其存在。先求一下最大流,看最大流是否至少为C。然后每次修改一条满容量的边,使其容量增加到C,再看最大流是否至少为C。两个优化:1、将上一次增广后的流量保留下来,在此基础上增广。2、每次无需将最大流求出,只要当前流量大于等于C即可。#include#include#include#

2015-08-23 20:29:33 334

原创 uvalive 2957 Bring Them There(最大流)

题目大意:n个星球,编号为1~n,m条双向通道,任意两个星期之间最多只有一条通道。现有k个计算机从S送往T,每条通道每次只能送一台计算机,花费1天。问最少需要多少天才能把k个计算机全部从S送到T。题目保证有解。一、建图:1、将N个星球作为点,拆为T+1个点,u0,u1,u2,……uT,ui表示在第i天时的星球u2、ui到ui+1连一条边,容量为无穷。这样可以使前一天

2015-08-23 20:18:40 707 1

原创 hdu 5418 Victor and World (floyd+状压dp)

题目大意:可重复访问顶点的TSP问题。解法:点击打开链接坑点:n=1#include#include#includeusing namespace std;#define maxn 17#define inf 0x3f3f3f3fint Map[maxn][maxn],dp[maxn][1<<maxn|1],n;void floyd(){ for(in

2015-08-22 22:33:09 2829 9

原创 hdu 5417 Victor and Machine

题目:Victor有一个机器,这个机器每次开启的瞬间会弹出一个小球,之后每隔ww秒会弹出一个小球。因为机器不是很完善,该机器每开启xx秒就得关闭yy秒进行调整,在机器关闭的瞬间可能会有小球弹出,关闭之后一直到下一次开启之前都不会有小球弹出。00时刻,机器第一次开启,Victor想要知道第nn个小球弹出的时刻,你能够告诉他吗?分析:当x当x>=w时,每个周期(

2015-08-22 22:15:18 475

原创 uva 3353 Optimal Bus Route Design (费用流/KM)

题目大意:n个点,问能否找出若干个圈,使得所有的点都在某个圈上且一个点只能属于一个圈。若能,求最小花费。法一:最佳完美匹配(KM算法)每个点都属于一个圈,则每个点的后继唯一确定,由此拆点构图,为每个点寻找匹配的后继使得花费最小。法二:费用流同样根据每个点的后继唯一确定的性质来建图:1、将每个点拆为两个点,分别编号为1~n、n+1~n+n。2、根据输入

2015-08-22 16:18:25 376

原创 poj 2516 Minimum Cost (费用流)

N个店主,M个供应商,K种商品,已知供求关系以及商品的运费,问能否满足需求,若能,求最小花费。一、关于能否满足需求:直接根据输入进行判定即可。二、在能满足需求的条件下,考虑某一种商品,即若只有一种商品,可以这样来建图:       1、将店主、供应商都视为1个点。店主编号为1~N,供应商为N+1~N+M       2、添加源点0,到所有店主连一条边,花费为0,容量为该商品

2015-08-22 13:24:45 355

原创 poj 2195 Going Home (费用流/KM)

给出n个人,n个房子的坐标,每个人移动1格需要花费$1,求n个人分别进入n个房子所需最小花费。法一:最佳完美匹配(KM算法) O(n^3)建图:求出各个房子和人的曼哈顿距离作为边权值,求最优匹配就好了。法二:费用流建图:1、将人编号为1-cntM,房子编号为cntM+1到cntM+cntH2、每个人到每个房子连一条边,容量为1,边权为二者曼哈顿距离。

2015-08-21 20:01:26 264

原创 uva 3353 Optimal Bus Route Design(费用流)

题目大意:无向图,从点1到点n,再从n回到1,边不能重复访问,求最小距离。分析:由于是无向图,因此,从n到1,可看作从1到n。一开始想到求两次最短路,然后发现是行不通的。因为第一次求出最短路之后需要将最短路上的边去掉,然而去掉之后可能会造成不再存在1到n的路径了,而实际上原图中是存在两条由1到n的边不重复的最短路的。比如一个有一条对角线的矩形,起点和终点分别为非对角线上的两个点,第一次求出

2015-08-21 15:53:18 98

转载 关于排序的稳定性

这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。      首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的

2015-08-20 19:42:26 343

原创 快排求第K大的数O(n)

关于各类排序的详细说明#include#include#include#include#include#include#include#include#include#include#include#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;typedef

2015-08-20 19:30:22 1856

转载 ISAP算法详解

求解最大流问题的一个比较容易想到的方法就是,每次在残量网络(residual network)中任意寻找一条从  s  到  t  的路径,然后增广,直到不存在这样的路径为止。这就是一般增广路算法(labeling algorithm)。可以证明这种不加改进的贪婪算法是正确的。假设最大流是  f  ,那么它的运行时间为  O( f⋅∣E∣) 。但是,这个运行时间并不好,因为它和最大流  f

2015-08-19 17:28:27 1858

原创 sgu 185 Two shortest(最短路+最大流)

一开始读错题啦,以为是求所有的最短路。原来是求边不重复的最短路条数。这样的话就和hdu 3599一样一样的了。建图:点击打开链接唯一不同的是,需要输出两个方案来。那么就作两次DFS就好了,第一次DFS访问时,同时将边给删掉。#include#include#include#include#include#include#include#incl

2015-08-19 17:17:47 379

原创 ZOJ-2587 Unique Attack(最小割是否唯一判定)

关于最小割:点击打开链接#include#include#include#include#include#include#include#include#include#include#include#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;typede

2015-08-19 12:44:37 455

原创 poj 3469 Dual Core CPU (最大流)

题目大意:给出n个任务分别在机器A、B上运行所需花费,再给出若干任务对,表示该两个任务若不在同一机器上运行,会多花费C,求完成所有任务的最小花费。建图:1、n个任务视为一个点,可拆点也可以不拆(实质是一样的)2、新建源点和汇点,源点与所有任务连一条有向边,边权为任务i在机器A上的运行花费;各个任务到汇点连一条边,边权为任务i在机器B上的花费。3、根据输入,任务之间连一条

2015-08-19 10:17:29 289

原创 poj 3281 Dining (最大流)

n头牛,F种食物,D种饮料。给出每头牛喜欢的食物和饮料,问最多能满足多少牛的需求。和3436有点类似,不过这题必须拆点来做。把食物、饮料都看作一个点,牛拆作两个点。编号:1~F为食物,F+1~F+N为牛,F+N+1~F+N+N为牛',F+N+N+1~F+N+N+D为饮料。建图:1、添加源点0,和汇点2*N+F+D+12、源点到每个食物连一条边,根据输入,食物和对

2015-08-18 16:29:24 239

原创 hdu 5294 Tricks Device (最短路+最大流)

给一个无向图,问:1、至少拆掉多少边可使得1到n无路径。2、最多拆掉多少边可使得1到n仍然有路径。对于第1问,同hdu 3599,点击打开链接对于第2问,求出边数最少的最短路,总边数减掉该边数即可。#include#include#include#include#include#include#include#include#include#i

2015-08-18 09:09:03 324

原创 hdu 1142 A Walk Through the Forest(最短路)

给一个无向图,求满足要求的最短路条数。能够从a到达b,当且仅当从a出发到达终点的最短路大于从b出发到达终点的最短路。以终点为起点,起点为终点跑一遍最短路,求出各个顶点到终点的最短路。然后根据条件进行dfs即可求出答案。#include#include#include#include#include#include#include#include#in

2015-08-17 21:57:08 56

原创 大数据算法学习笔记(七):外存算法

当数据量巨大时,传统随机存储模型无法适用。一、存储结构标准计算理论模型:1、无限内存2、统一访问代价3、模型简单分层存储:1、存储量得到较大提升,较慢的层次远离CPU2、以块为单位的数据移动可扩展性问题:大多数程序在RAM模型中运行,操作系统按需访问块。但如果程序分散地访问磁盘数据,即便是好的操作系统也无法利用数据块存取优势。

2015-08-17 21:23:46 2769

原创 hdu 3599 War(最短路+最大流)

求一个无向图中边不重复的最短路条数。建图:1、先利用spfa或者dijkstra求一次最短路,记录起点到每个点的最短距离。2、根据起点到每个点的最短距离d[i]重新建图,如果某条边的权值为w,两个顶点为u,v,若low[u]+w=low[v],即满足u到v最短,那么u到v连一条有向边,其边权为1。3、求出新图中的最大流,即为所求的最短路条数。超级大坑

2015-08-17 21:07:23 438

原创 大数据算法学习笔记(六):数组有序性判定

问题:N个数的数组,x1,x2,……,xn,判定该数组是否有序。定义ε远离:必须删除大于εn个元素才能保证剩下的元素有序。亚线性算法:for k=1 to 2/ε do     选择数组中第i个元素xi     用xi在数组中做二分查找     if ixj then return falsereturn true时间复杂度:O(1/ε*logn)

2015-08-17 10:06:58 1931

原创 hdu 5392 Infoplane in Tina Town (置换循环长度)

给一个置换,求循环长度,结果对3221225473取模。有一个莫名其妙的定理:点击打开链接根据该定理求最小公倍数就好了,用欧几里得算法求的话会TLE.将每个循环长度分解质因子再求就好了。坑点:模数用int是存不下的。#include#include#include#includeusing namespace std;#define maxn 30

2015-08-16 21:39:42 647

原创 大数据算法学习笔记(五):生成树权重

1、问题:无向简单图,求最小生成树的权重。精确解:prime、kruskal2、亚线性算法基本思想:用特定子图联通分量的数量估计MST的权重。假设某个无向图中所有边的权重都是1或者2,求MST的权重。则其MST的权重=N1+N2(N1:MST中权重至少为i的边的数量)显然N1=n-1,n为顶点数。而N2为权重为1的边构成的导出子图的联通分量个数-1,即把MST中边权

2015-08-16 19:43:33 7047

原创 大数据算法学习笔记(四):数据流模型

一、数据流模型:1、数据只能顺序扫描1次或几次。(超过O(n)的算法不可行)2、能够使用的内存是有限的。(空间亚线性)3、希望通过维护一个内存结果来给出相关性质的一个有效估计。二、基础知识:1、频繁元素:数据流中同一个元素可以出现多次,出现最频繁的元素。n:不同元素个数。m:数据流中元素个数。2、zipf原则:典型的概率分布是高度倾斜的。只有少数

2015-08-16 12:53:52 2742 2

原创 hdu 3594 Cactus (仙人掌图判定/SCC)

判断一个有向图是不是仙人掌图。即强连通且每条边只属于一个环。利用tarjan求强连通的同时找环。即访问某个顶点的时候,记录该顶点的上一个节点,当某个顶点被第二次访问时,说明有环存在。每次找到一个环,就将该环上的所有顶点度数+1,如果某个顶点度数超过1,则说明其属于两个环。#include#include#include#include#include#

2015-08-14 20:04:23 1262

原创 poj 3436 ACM Computer Factory (最大流)

题意很复杂。。大意:n个机器生产电脑,电脑有p个部件。每台机器能够将含某些部件的电脑转换为含另一些部件的电脑。已知各个机器的最大生产速率以及转换条件,0表示该机器不需要该部件,1表示需要,2表示可有可无。问怎样安排流水线生产,使得生产速率最大。一、建图:1、将每个机器视为一个点。2、添加一个源点,转换条件及产出均为0;添加一个汇点,转换条件及产出均为1.3、对于

2015-08-14 17:16:43 364

计算机网络课设-邮件客户端实现(含源码、报告)

开发平台:VC6.0 MFC 开发语言:C++ 内容:包含源程序和源代码以及相关报告。

2017-02-21

网络编程大作业(邮件客户端实现,含源码)

网络编程大作业(邮件客户端实现,含源码)

2017-02-21

计组课设(基于FPGA的CPU设计)

含数据通路图、状态转换图、相关文档、verilog源码以及测试代码

2015-09-08

用MFC开发的扫雷游戏程序(含源码)

仿制windows自带的扫雷程序。

2015-09-08

MFC开发的多功能高精度计算器(含源码

【版本说明】 1、增加运算符填写功能 2、增加进制转换功能(500位数有效) 3、增加数据统计功能 4、增加运算精度调节(仅针对除法和圆周率的计算) 5、增加单位转换功能 6、增加输入结果按钮,可将上一次运算结果作为数值输入 7、增加线性方程组求解功能 8、优化求圆周率的算法,可精确到9000位以上 9、修正了之前版本的一些bug 10、美化界面 【版权说明】 未经编写人员许可,任何单位及个人不得以任何方式或理由对该产品进行复制、修改、抄录、传播或与其它产品捆绑使用、销售。

2015-09-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除