自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

It's the Climb

Ain't no mountain high enough

  • 博客(35)
  • 收藏
  • 关注

原创 【dicnic算法求最大流—匹配问题】座谈会的分配

这道题肝了好久。。。我感觉我一道题就没肝过这么久。。。气死了。。。。思路:就是用dicnic算法求最大流的问题,关键在于如何建图:如图(图中边权值都为1),尤其是箭头的指向、源点和汇点的设计!①箭头的指向:由员工指向外人,员工之间由不加班的指向加班的(这是为什么呢?我是用“抱过来”思想考虑的。因为你看看这个图嘛,其实是想把外人都“抱到”员工的座位上来,那么这样走过一条增广路就能解决一个外人的座位问...

2018-04-29 20:47:37 844

原创 【网络流入门-最大流算法】知识点讲解

网络流的一些基本名词概念:弧的容量:指的是一条弧(有向边)最大承受能力。弧的流量:实际通过这条弧的流量。(流量和容量的概念一定要区分开。之后我们画的图里弧上的那个数字,指的是容量!!)网络流:所有弧上流量的集合。源点:网络指定的起始点汇点:网络指定的终止点可行流:简单的说就是一张图能够实现的网络流。(满足弧流量限制条件(小于等于弧容量)和平衡条件(源点的净流出量为总流量,汇点的净流入量为总流量))...

2018-04-29 15:49:29 3655 1

原创 【匈牙利算法 最小字典序】距离序列

大致思路:(先copy一个讲解过来):这道题的关键在于对匈牙利算法过程的一个理解。首先我们可以建立二分图的模型:每个位置可以有2种取值,于是我们把位置作为左边的点,取值作为右边的点。然后进行二分图匹配,只要有完美匹配,完美匹配就是一个可行解。再考虑题面中最优性的要求。对于字典序问题,我们常常按照字典序枚举。于是这里也可以枚举:从上往下枚举左边的点,按照字典序枚举和右边的哪个点匹配,再看除开匹配了的...

2018-04-27 15:18:19 626

原创 【tarjan缩点】知识点讲解+两道典型例题

用我的话来说,tarjan缩点其实就是把图中的一个强联通分量直接缩成一个点。之后,其实就可以形似一个DAG(有向无环图),大致可以想象成单一有向的线性序列,比如:性质(结合上面这个DAG图):①如果超级点入度为0,并且图中只有一个入度为0的超级点,那么显然他可以到达其他任何点,而不能被任何点到达。②如果超级点出度为0,并且图中只有一个出度为0的超级点,那么显然他...

2018-04-25 19:31:11 1679 5

原创 【tarjan】知识点讲解+例题

讲解内容 via https://blog.csdn.net/jeryjeryjery/article/details/52829142?locationNum=4&fps=1 ,写得不错,让懵逼了半天的我看懂了。      在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通...

2018-04-24 19:56:18 1301

原创 【欧拉回路】讲解+判定+输出“点”路径

首先来系统地整理一下有关欧拉回路和欧拉路径的问题。什么是欧拉路径?在图上用一种走法经过所有的边一次且只有一次的路径叫做欧拉路径。即一笔画。如果这条路径的起点和终点重合,那么就是欧拉回路。如何判断图是否有欧拉回路或者欧拉路径?无向图:因为欧拉路径中,除了起点与终点以外,任意点的“进”“出”次数相等,所以除了两个点为奇点(度数为奇数的点)(终点和起点)以外,其它点的度数均为偶数。如果是欧拉回路,奇点的...

2018-04-22 20:42:40 2535

原创 【拓扑排序】回收元件

问题描述蒜头君在做一个高级的电学实验,工作面板上放了很多电子元件,这些电子元件可以看成直的导线。 实验结束,蒜头君想要回收这些元件,但是蒜头君不能直接接触他们把他们拿走,这样会导致元件的损坏,并且因为元件上还带有一些正负电荷,所以元件之间也不可以互相接触,否则可能发生短路。蒜头君现在有一个特制的设备,可以沿工作面板的一个边缘把元件一个一个依次吸走,而元件在吸走的过程当中不会发生旋转,也就是说元件是...

2018-04-22 14:10:02 406 2

原创 【拓扑排序】威虎山的分配

思路:首先是对题意的分析。因为它说a要比b多,给你很多这样的条件语句,就想到需要构建图,让小的指向大的,而且按照题意不会出现“环”(不是≥而一定是>),这样就可以用拓扑排序成线性序列,就可以挨个分配钱了。我想了下,如果条件是“≥”还能不能用拓扑排序,答案应该是不能,因为很可能出现“环”,而拓扑排序的前提就是“无环有向图”,如果有环的话,拓扑排序得到的线性序列是没有涵盖所有点的。因为环上每个点的入度...

2018-04-22 10:40:21 170

原创 【拓扑排序】知识点讲解+算法模板

拓扑排序定义:对一个 有向无环图 进行拓扑排序,是将G中的所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边< u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为 拓扑排序(其实我觉得不简单了…)。 算法思路: 拓扑排序算法主要由以下两步循环执行,直到...

2018-04-21 22:46:12 516

原创 【kruskal最大生成树+最大公共祖先lca】P1967 货车运输

题目描述A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。输入输出格式输入格式:输入文件名为 truck.in。输入文件第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道路。 接下来 m 行每行 3 个整数 x、 ...

2018-04-21 22:36:25 426

原创 【最近公共祖先lca】知识点讲解+算法模板

最近公共祖先(LCA)LCA问题:在有根树中,找出某两个结点 u 和 v 最近的公共祖先 算法:倍增法(大的不行试小的,小的不行试更小的) 算法思想:分治。 算法流程当已知两个点在树中的深度时,先让较深的结点向上走,直到两个结点深度一样;二分找出离他们最近的公共祖先。我们记一个结点的父结点为它的2^0=1倍祖先,它的父结点的父结点为它的2^1=2倍祖先,以此类推。接下来开始描述倍增算法的具体流程。...

2018-04-21 16:15:26 352

原创 【Kruskal求边权极差最小的生成树】高速公路

思路:这里不是求最小生成树了,而是求“边权值极差最小”的生成树,方法就是枚举每一个边,令他的边权最小,求最小生成树(所以边权比他小的边不参与),求与加入该生成树中的最大边权的极差即可。 我的代码:#include<iostream>#include<bits/stdc++.h>using namespace std;const int MAXN=105;const...

2018-04-20 23:59:26 667

原创 【Kruskal最小生成树】连线问题

思路:典型的Kruskal求最小生成树问题。重点还是在于建图给边赋权值,这里因为涉及得到坐标之间求距离,很明显需要在每个坐标点之间都连(双向)边。我的代码的思路就是每画一个点,都让它跟之前所画的所有点都连上边。注意,边中存储:权重、起点和终点。这里的起点和终点不能是我定义的point结构!因为你后面并查集算法取point就还得改,麻烦,还是存成“序号”比较好(这里存的点数组的下标)。我的代码:#i...

2018-04-20 17:45:52 225

原创 【Kruskal最小生成树】算法模板+例题

Kruskal最小生成树生成树 已知连通图G ,图上有N个顶点。生成树是指图G的一个极小(边最少)连通子图,生成树上有n个顶点、n-1条边,且任意两点之间都是连通的。 最小生成树 已知带权连通图G,图中有n个顶点,每条边都有权值。我们要从图中抽出一棵生成树,使得树上所有边权之和最小,这棵生成树就叫做 最小生成树。 常见变形应用: 1.要求找最大边权是最小的的生成树(多读几遍):直接找最小生成树即可...

2018-04-20 15:42:28 7721

原创 【Floyd求多源最短路】模板+例题x2

Floyd多源优点:多源时高效,好打,多源,可负权,稠密图效果更好。 缺点:时间复杂度比较高,不适合计算大量数据。 const int inf = 0x3f3f3f3f;int g[MAX_N][MAX_N]; // 算法中的 G 矩阵// 初始化 g 矩阵void init() { for (int i = 0; i < n; ++i) { for (in...

2018-04-20 14:05:38 690

原创 【差分约束系统】蒜头君的银行卡

大致思路:给你几个不等式,问你有没有解.....典型的差分方程判断有无解(负环)的题型。那我先想好,求最长路吧,那就得把所有不等式化为>=的形式,先由题意列不等式再转化:a比b至少多c元: a-b>=c    ------------>  a-b>=c  ------->add(b,a,c)a比b至多多cc元:a-b<=cc   ---------> b-...

2018-04-20 10:48:10 208

原创 【差分约束系统——spfa的应用】知识点+例题

(借鉴via:https://blog.csdn.net/consciousman/article/details/53812818 )差分约束系统的解法如下:1、  根据条件把题意通过变量组表达出来得到不等式组,注意要发掘出隐含的不等式,比如说前后两个变量之间隐含的不等式关系。2、  进行建图:首先根据题目的要求进行不等式组的标准化。(1)、如果要求取最小值,那么求出最长路,那么将不等式全部化成...

2018-04-20 10:39:37 318

原创 【动态规划】K序列

思路:网赛的时候完全就瞎写,因为当时在想类比最大上升子序列,思路就很乱,最后写了个dfs也跑不动。果然动态规划能行,但是由于思路限制(做dp的题做少了)也没想好。今天看的题解,豁然开朗。两个数组:dp和temp规模都是k,因为我只需要子序列和模k的情况(结果为0~k)对应的最大长度,又是求“最值”,于是联想到动态规划。dp[j]表示算上当前的这个数值,结果为j的最大长度;temp[j]表示不算上当...

2018-04-16 16:54:44 1011

转载 【spfa】成仙之路

问题描述有个蘑菇精想要成仙,但是他必须要收集10000个精灵宝石,不过他要是有花精灵的泪水,就只要8000个精灵宝石就可以了,或者如果他有花精灵的血滴,就只要5000个精灵宝石便可以成仙了。蘑菇精可以和森林里的其他精灵交换东西,但是修为等级差距过大的交换会影响 修炼 蘑菇精就跑到花精灵那里,向他索要泪水或血滴,花精灵要他用精灵宝石来换,或者替他弄来 其他的东西,他可以降低价格。蘑菇精于是又跑到其他...

2018-04-15 16:30:10 258

原创 【贪心】纸牌均分 + 堆泥堆

均分纸牌问题的分析:均分纸牌问题:有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若于张纸牌,然后移动。  移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。  现在要求找出一种移动方法,用最少的移动次数使每堆上纸...

2018-04-15 14:32:26 490

原创 【签到题】吃苹果

答案就是2^n。

2018-04-15 14:26:55 169

原创 【spfa】闯关

问题描述蒜头君在玩一个很好玩的游戏,这个游戏一共有至多 100 个地图,其中地图 1 是起点,房间 n 是终点。有的地图是补给站,可以加 ki点体力,而有的地图里存在怪物,需要消耗 ki 点体力,地图与地图之间存在一些单向通道链接。 蒜头君从 1 号地图出发,有 100 点初始体力。每进入一个地图的时候,需要扣除或者增加相应的体力值。这个过程持续到走到终点,或者体力值归零就会 Game Over。...

2018-04-15 09:44:15 213

原创 【SPFA单源最短路】知识点讲解 + 与dijkstra比较

·首先是转载的讲解:适用范围:给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。 我们约定有向加权图G不存在负权回路,即最短路径一定存在。当然,我们可以在执行该算法前做一次拓扑排序,以判断是否存在负权回路,但这不是我们讨论的重点。算法思想:我们用数组d记录每个结点的最短路径估计值,用邻接表来存储图G。我们采取...

2018-04-14 18:06:48 378

转载 【dijkstra改动】求次短路

USACO 2006 November Gold本题目的意思就是要求次短路。我用两种方法求解:(一)利用dijkstra算法进行适当修改,到某个顶点v的次短路:(1)其他某个顶点u的最短路加上u->v的边长;(2)其他某个顶点u的次短路加上u->v的边长。所以我们要求出到所有           顶点的最短路和次短路。因此对每个顶点,同时记录最短距离和次短距离(开两个数组记录,用dij...

2018-04-13 17:49:26 725

原创 【dijkstra堆优化】骑车比赛

问题描述蒜头君准备去参加骑车比赛,比赛在 n 个城市间进行,编号从 1 到 n。选手们都从城市 1 出发,终点在城市 n。 已知城市间有 m 条道路,每条道路连接两个城市,注意道路是双向的。现在蒜头君知道了他经过每条道路需要花费的时间,他想请你帮他计算一下,他这次比赛最少需要花多少时间完成。 输入格式 第一行输入两个整数\n,m(\1≤n≤1,000,1≤m≤5,000),分别代表城市个数和道路总...

2018-04-13 16:43:55 235

原创 【dijkstra求单源最短路 + 堆优化】知识点讲解和代码模板

重温了迪杰斯特拉求单源最短路的知识点,其实发现因为每次循环首先确定离源点为最短距离的那个点的最短路长度 然后以此更新嘛(术语叫“松弛”),其实有一点“动态规划”的路子,因为最短路才能更新出来下一个最短路嘛。而且,到每个点的距离之中,我只能确定离源点最短距离的那个点的最短路长度就是当前的估计值,而其他点当前的估计值不一定是最短路,因为可能会由我这次确定的这个点更新出来它们最终的最短路,所以不能这次不...

2018-04-13 15:59:03 423

原创 【费马小定理】判断素数

【知识点】·费马小定理:假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。(即a和p模p-1同余1)·同余性质(仅作了解):(1)对于同一个除数,两数的和(或差)于他们余数的和(或差)同余数。(2)对于同一个除数,两数的乘积与他们余数的乘积同余。(3)对于同一个...

2018-04-13 10:51:41 2391

原创 【KMP找最小循环节长度】ZOJ 3785

题目:What day is that day?                                      Time Limit: 2 Seconds                                    Memory Limit: 65536 KB                                                 It's Satur...

2018-04-13 10:14:44 579

原创 【博弈】尼姆堆 取球游戏

      尼姆游戏是一种两个人玩的回合制数学战略游戏。游戏者轮流从一堆棋子中取走一个或者多个,最后不能再取的就是输家。当指定相应数量时,一堆这样的棋子称作一个尼姆堆。问题一:取球博弈        今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。 我们约定: 每个人从盒子中取出的球的数目必须是:1...

2018-04-11 22:07:31 378

原创 【进制转换】天平称重

用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果只有5个砝码,重量分别是1,3,9,27,81则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码组合方案。例如:用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1要求程序输出的组合总是大数在前小数在后。可以假设用户的输入的数字符合范围1~121。...

2018-04-11 20:57:30 548

原创 【进制转化】奇怪的捐赠

地产大亨Q先生临终的遗愿是:拿出100万元给X社区的居民抽奖,以稍慰藉心中愧疚。麻烦的是,他有个很奇怪的要求:1. 100万元必须被正好分成若干份(不能剩余)。  每份必须是7的若干次方元。  比如:1元, 7元,49元,343元,...  2. 相同金额的份数不能超过5份。3. 在满足上述要求的情况下,分成的份数越多越好!请你帮忙计算一下,最多可以分为多少份?思路:其实是一个进制转化问题。把10...

2018-04-11 20:55:16 450

原创 【尺取法】几道例题

常用的解题技巧:尺取法 尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。之所以需要掌握这个技巧,是因为尺取法比直接暴力枚举区间效率高很多,尤其是数据量大的时候,所以尺取法是一种高效的枚举区间的方法,一般用于求取有一定限制的区间个数或最短的区间等等。当然任何技巧都存在其不足的地方,有...

2018-04-11 16:12:36 338

原创 【蓝桥杯真题lower/upper_bound函数】递增三元组

标题:递增三元组给定三个整数数组A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],请你统计有多少个三元组(i, j, k) 满足:1. 1 <= i, j, k <= N  2. Ai < Bj < Ck  【输入格式】 第一行包含一个整数N。第二行包含N个整数A1, A2, ... AN。第三...

2018-04-10 23:30:12 584

转载 INF=0x3f3f3f3f

转载请注明出处http://blog.csdn.net/jiange_zh https://blog.csdn.net/jiange_zh/article/details/50198097在算法竞赛中,我们常常需要用到一个“无穷大”的值,对于我来说,大多数时间我会根据具体问题取一个99999999之类的数(显得很不专业啊!)在网上看别人代码的时候,经常会看到他们把INF设为0x7fffffff,奇...

2018-04-10 23:20:43 259

原创 【蓝桥杯省赛真题】日志统计

标题:日志统计小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有N行。其中每一行的格式是:ts id 表示在ts时刻编号id的帖子收到一个"赞"。 现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度为D的时间段内收到不少于K个赞,小明就认为这个帖子曾是"热帖"。 具体来说,如果存在某个时刻T满足该帖在[T, T+D)这段时间内(注意是左闭右开区间)收到不少...

2018-04-10 23:18:47 7175 32

空空如也

空空如也

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

TA关注的人

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