- 博客(34)
- 资源 (63)
- 收藏
- 关注
原创 POJ2594 最小路径覆盖
题意: 题意就是给你个有向无环图,问你最少放多少个机器人能把图全部遍历,机器人不能走回头路线。思路: 如果直接建图,跑一遍二分匹配输出n - 最大匹配数会跪,原因是这个题目和以往见到的题目不一样的,区别就在,之前很多题目给的都是全边,就是假如 a->b b->c ,那么他一定会给你一条 a->c,因为a->c也是有指向关系的,而这个题目就没有给a->c,这
2014-05-29 10:31:24 600
原创 POJ2226 不错的最小顶点覆盖
题意: 给你一个n * m 的矩阵,上面有" * " 和 " . " ,让你用少的木板吧所有" * "覆盖,木板宽度是1,长度随意,木板可以重叠,但是不能覆盖到" . "上。思路: 这个题目建图方式不错,回想下最基本的最小定点覆盖,也是在n * m 的矩阵上,覆盖某些点,但是可以覆盖" . "那样直接匹配行列就行了,这个如果是***
2014-05-29 09:17:44 651
原创 POJ3041 最小顶点覆盖
题意: 给你一个n * n 的矩阵,和X所在的坐标,问你最少放多少个**可以把图里的所有X都覆盖,每个**可以覆盖一行,或者一列。思路: 最小顶点覆盖,最小顶点覆盖=二分匹配,每一行最多放一个,每一列最多放一个,对于每一个点,他只要被一行或者一列照应就行了。所以直接把X所在的点的行和列连接在一起,(二分后对于当前点相当于只选择一个),这样最后每个点都会被
2014-05-29 09:03:39 676
原创 POJ1466 最大点权独立集
题意: 给你n个人,再给你每个人都喜欢哪些人,让你找到一个最大的集合数,要求这个集合里面任意两个人都不喜欢彼此。思路: 直接就是在问最大点权独立集元素个数,没啥解释的一遍二分图就行了,输出 n - sum / 2,说下为什么有的最大点权独立集合除以2有的不除吧,这个没什么固定的,比如说这个题给的边一定是双向的,也就是说 1 喜欢 2, 到2的时候也会喜欢1
2014-05-29 09:02:08 639
原创 POJ1422 最小路径覆盖
题意: 一个战场,往战场上投放伞兵,每个伞兵不能后退,只能往前走,问你最少多少个伞兵可以吧所有的点都占领。思路: 这个题是最小路径覆盖,最小路径覆盖 = n - 最大匹配数,首先说下什么是最小路径覆盖,给你一个有向无环图,问你最少用多少条无返回路径可以覆盖所有点,再说下为什么是n - 最大匹配数,想下,假如没有边,那么就是每个点放一个伞兵,假如只有一条边,那
2014-05-29 09:00:41 628
原创 POJ1125 Floyd
题意: 给你n个点,问你在哪里选择开会地点,使得到所有点的最长路径最短.思路: n很小,直接Floyd,然后暴力枚举就行了。
2014-05-29 08:59:04 597
原创 POJ2570 二进制,位运算,Floyd
题意: 给你一个有向图,两点之间有多种连接方式,然后每次询问都问你点A,B之间有哪些方式可以到达,每个小字母是一个方式.思路: 很巧妙的位运算和Floyd应用,借助Floyd的更新过程,去更新任意两组边组合起来的长边,如 map[i][j] 是由 map[i][k] 和 map[k]][j]接起来的,更新方式很容易理解,是map[i][j] = map[
2014-05-29 08:56:28 686
原创 POJ2446 二分匹配
题意: 给你一个n*m的格子,问你能不能用1*2的格子把他铺满,有的位置是不能被铺的。思路: 水题,直接把个相邻的并且都是可以铺的点连一条边然后匹配一遍就行了,提醒一个地方,就是输入不能铺的坐标的时候是 先输入列再输入行。#include#include#define N_node 1500#define N_edge 6000type
2014-05-27 16:55:05 471
原创 POJ2536 二分图匹配
题意: 有n只老鼠,m个洞,每个洞最多可以藏一只老鼠,每个老鼠的移动速度都是v,给你他们的当前坐标,和洞的坐标,突然老鹰来了,他们必须在s秒内跑到一个洞藏起来,问你最少有多少只老鼠被抓走了。思路: 二分图匹配裸题,关键就是那句一个洞最多容一只老鼠,对于每个老鼠连接能在s秒内到达的所有洞,然后一边最大匹配,得到的就是最大的藏起来的老鼠sum,输出n - sum就
2014-05-27 16:27:50 459
原创 POJ3692 最大点权独立集元素个数
题意: n个男孩和m个女孩,给你他们谁和谁彼此了解,问你要找到一个集合,使得这个集合中的男孩和女孩相互了解,并且人数最多。思路: 简单题目,其实就是在求最大点权独立集元素个数,先说下点券独立集的概念,就是给你一些关系,让你找到一个最大的集合,使得集合中的任意两个人之间都不会有关系,用的是匈牙利算法,对于这个题目我们可以吧不了解的连接到一起,这样得到的就是集合
2014-05-27 16:03:31 495
原创 POJ3757 01分数规划
题意: 有一个任务,给你提供n太服务器,让你在这n太服务器中选出k台完成这个任务,要求是每台服务器的工作时间相同,总的花费最小。思路: 题目中给出对于每台服务器有这个式子:Total time = Processing time + Transmission time = fi / pi + fi / bi转化后是: time = fi *
2014-05-27 15:26:07 992
原创 POJ 3621 最优比率生成环
题意: 让你求出一个最优比率生成环。思路: 又是一个01分化基础题目,直接在jude的时候找出一个sigma(d[i] * x[i])大于等于0的环就行了,我是用SPFA跑最长路判断的环,这里注意一点就是刚开始的时候吧每个点都入队,还有提醒一个盲区,就是有的人认为SPFA处理不了等于0的环,其实我们不用担心这个问题,因为最外层我们用的是二分,二分永远是找接近值,就算有等
2014-05-23 08:39:27 592
原创 POJ 2976 01分数规划基础题目
题意: 给你一组"数",一共n个,每个数有两个权值,价钱a[i],代价b[i],让你选择n - k使得 sigma(a[i]) / sigma(b[i]) * 100 最大;思路: 毫无疑问这个是01分数规划的最进本形式,唯一的限制就是取个数,那么我们直接sort以下,取出来就行了。没啥解释的,这个是自己的第一个01分数规划,一会要自己总结下01分数规划
2014-05-23 08:37:48 450
原创 POJ 2728 最优比率生成树
题意: 让你求一颗最小比率生成树。思路: 我总结过了,在这里: 提示几个地方,这个题目的最小树记得用普利姆,别用克鲁斯卡尔,克鲁斯卡尔会超时,在sort那个地方超时。别的没啥。
2014-05-23 08:36:21 519
原创 总结01分数规划
总结下01分数规划:01分数规划通常分为三类(1)基础01分数规划(2)最优比率生成树(3)最优比率生成环首先01分数规划是处理这样一类问题的,给你n个二元组,这个两个元素设为a[i] ,b[i], a[i]是得到这个物品所能得到的价值,b[i]是得到这个物品所付出的价值,让你求这样一个极值 R = sigma(a[i] * x[i]) / sig
2014-05-23 08:31:48 1908
原创 POJ 2762 单连通图
题意: 给你一个有向图,问你这个图是不是单连通图,单连通就是任意两点之间至少存在一条可达路径。思路: 先强连通所点,重新建图,此时的图不存在环,然后我们在看看是否存在一条路径可以吧所有点都覆盖了就行了,直接一遍拓扑排序,只要拓扑排序唯一就行了,拓扑排序唯一的条件是 每次最多只能有一个进队。
2014-05-22 19:41:21 702
原创 hdu2594 简单KMP
题意: 给你两个串,问你s1的前缀和s2的后缀最长公共部分是多少。思路: 根据KMP的匹配形式,我们求出s1的next,然后用s1去匹配s2,输出当匹配到s2的最后一个的时候的匹配位置就行了。
2014-05-22 19:36:56 669
原创 KMP中next数组的理解
next数组是KMP的核心,但对于next数组我们总是有时候感觉明白了,但有时候又感觉没明白,现在我就说下我自己对KMP中next数组的理解,首先next[i]上的数字的意义,next[i]表示的是当匹配到匹配串的第i个字母适配的时候,改跳到的位置,为什么要跳,是因为不想回到0重新浪费时间去比较,在深一点理解,我感觉next[i],里存的是 找两个相同的尽量长的字符串,一个是以从匹配串的第一个字母
2014-05-18 13:21:23 1551
原创 hdu 1867 求两个串的"和"最小 ,KMP
题意: 给你两个字符串,让你求str1+str2,就是把1的后面和2的前面重叠的地方只显示一遍就行了 abc + bcd = abcd,要求和的长度最小,和最小的前提下求字典序最小,还有就是两个串可以交换位置的,cdab + abcd = abcdab 而不是 cdabcd,交换位置后合并是最短并且字典序最小的。 思路: 首先得到两个next数组,然后用st
2014-05-18 13:16:55 451
原创 hdu3336 KMP + DP 前缀数组出现的次数
题意: 给你一个串,问你他的所有前缀子串在本串中的出现次数,注释:abc的前缀子串是a ab abc;思路: 还是利用了next数组,先对子串求出next数组,再开一个数组dp,初始化全是1,因为每个以当前i结尾的都至少是1,然后从后往前更新,把以i结尾的加到以next[i]结尾的上,运用的next数组的特点相当于 123123123 最后一个3加到倒
2014-05-17 23:54:46 548
原创 hdu1711 KMP模板
题意: 给你两个串,问你第二个串是从第一个串的什么位置开始完全匹配的。。思路: 裸的KMP,也是我的第一个KMP,说下对KMP的理解吧,首先对于非优化的方法求匹配,时间复杂度应该是O(n*m) ,而KMP则是O(n + m)(感觉会比这个长点,因为子串是不回溯,但是匹配串回溯了),但不管怎样,比以往的匹配快多了,KMP的关键就是处理匹配串,也就是给那个next
2014-05-17 23:52:06 455
原创 hdu1686 最大匹配次数 KMP
题意: 给你两个串,问你串a在串b中出现了多少次。思路: 直接匹配,KMP时匹配到匹配串的最后一个的时候不用跳出,直接匹配就行了,最后一个'/0'不会和目标串匹配,所以经过next[l2]就直接自动找到该去的位置了,怎么说呢,今天刚学的KMP,给我的感觉就是"记忆化搜索"。
2014-05-17 23:49:50 725
原创 hdu1358 最小循环节,最大循环次数 KMP
题意: 给你一个字符串,让你找到一些字符串,这个字符串是从第一个字母开始的,并且他可以分成1个一上循环子结构够成的,比如 abcabcabc 那么当前的这个串就是三个abc构成的,他的AK值就是3,对于输出的答案中就会包含当前这个状态,表示为9 3。思路: 就像最小路径覆盖是二分匹配的一个景点应用一样,这种循环节的也是KMP的一个应用,结论是 当 i
2014-05-17 23:48:12 772
原创 hdu3746 KMP的next数组应用,求项链首尾项链循环
题意: 给你一个项链,问你最少加多少个珠子能满足整个项链是一个循环的项链(首尾相连)思路: KMP的简单应用只要了解next数组的意义就好说了,下面总结下 next在循环方面的常用应用(1)i - next[i] 最小循环节(第一个字母开始)(2)next[i] 最大循环节中的第几位数(此时循环节可交叉)(3)next[i] != 0 && i
2014-05-17 23:42:36 416
原创 hdu4067 费用流(混合欧拉的宽展和延伸)
题意: 给以一个图,每个有向边都有两个权值,a,b其中a是保留这条边的花费,b是删除这条边的花费,让你删去一些边使图满足一下要求:(1)只有一个起点和一个终点(2)所有的边都是又向的(题目给的就是有向的)(3)对于起点,出度 = 入度 + 1(4)对于终点,入度 = 出度 + 1(5)其他的点 出度 = 入度 求满足要求时的花费最小。 思路:
2014-05-16 20:03:38 459
原创 hdu1501 记忆化搜索
题意: 给你三个字符串,问你前两个能不能拼成第三个串。思路: 直接记忆化神搜就行,思路水,看下代码就知道了。这个题目我感觉最大公共子序列dp的作法是错的,虽然有人ac了,随便一组数据比如 abc abc abccba。
2014-05-12 14:50:28 511
原创 hdu1316 大数
题意: 给你一个区间,问这个区间有多少个斐波那契数.思路: 水的大数,可以直接模拟,要是懒可以用JAVA,我模拟的,打表打到1000个就足够用了...
2014-05-11 20:54:49 408
原创 hdu4411 经典费用里建图
题意: 给以一个无向图,0 - n,警察在0,他们有k个警队,要派一些警队去1--n个城市抓小偷,问所有吧所有小偷全抓到然后在返回0的最小路径和是多少,当地i个城市被攻击的时候他会通知i-1城市,也就是说要么同时消灭他俩,要么消灭i-1在消灭i;思路: 经典的费用流建图 ,先来一遍floyd处理下图 ,首先虚拟出来源点s ,终点t ,超级源点ss,建
2014-05-08 21:27:50 556
原创 hdu4768 非常规的二分
题意: n个社团给同学发传单,同学一共有1--2^31这么多,每个社团有三个数A ,B ,C ,只有满足 A ,A + C ,A + C + C ...A + KC 思路: "题目保证给的测试数据要么没有奇数的,要么只有一个是奇数个传单." ,这句非常关键,我们二分枚举1--2^31,对于mid,算出0--mid一共发出去tmp张传单,如果tmp是偶数那么
2014-05-06 21:03:31 618
原创 hdu3313 最大流找关键点,或者最短路找关键点.
题意: 给你一个有向图,然后给你起点和终点,问你从起点到终点有多少个关键点,如果当前的这个点删除了就无法从起点到终点,那么这个点就是一个关键点..思路: 有两种做法,我用的是最大流的,另一种是先跑最短路然后搜索,不会所以不介绍另一种,最大流的很容易理解,首先我们拆点建图,每个点拆成两个点,限流是1,然后起点和终点的限流是2,点于点之间是INF,跑一遍最大流,如果
2014-05-05 17:05:51 1069
原创 hdu2899 三分
题意: 给你个函数,F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x ,给你一个y,x的范围是0--100问你最小的 F(x)思路: 本人推数学公式啥的没啥天赋,一看这个题目肯定是三分(自己感觉),然后直接敲完就ac了,估计正解什么的还要转换这个公式...然后...在然后..最后求一下2阶导函数,根据二阶但函数的正负判断什么凹凸性什么的
2014-05-03 19:49:55 519
原创 hdu1007 最近点对
题意: 给你n个点,让你求最近的两个点的距离是多少.思路: 这个题目我没思路,我在网上看的是什么分治 + 鸽巢原理,分治我知道,鸽巢原理我也知道,但是这个题目就是没有证明出来他和鸽巢原理有jm关系,总之就是先以x或者y优先sort一下,然后每次枚举每个相邻点的附近5个就行了(加自己一共六个),而且这个题目的前提好像还是什么数据必须是随机产生的吧,
2014-05-03 18:55:29 440
原创 hdu4662 简单搜索打表
题意: 给你一个初始串"MI",这个串有三种操作,(1)M后卖弄可以直接复制 ,MI -> MII(2)三个III可以变成一个U,MUIII -> MUU(3)连续的两个U可以直接删除,MIUUU -> MIU每次输入一个字符串,问你这个字符串是不是MI变过来的. 思路: 刚开始想都没想直接开个容器mark,然后搜索打表,控制的长度是1000000,
2014-05-03 18:48:18 545
原创 hdu3756 三分求最小圆锥
题意: 让你找到一个最小的圆柱去覆盖所有的竖直的线段..思路: 三分,直接去三分他的半径,因为想下,如果某个半径是最优值,那么从R(MAX->now->MIN)是的 V肯定是先增大然后减小再增大,也就是满足凹凸性,所以可以三分,三分的时候根据当前的半径我们可以枚举每一个点,通过相似三角形去找到最大的H作为当前的H,然后根据V三分搜索就行了,对于low的初始值
2014-05-03 18:34:08 596
内存清理工具(加速球)
2016-12-09
屏幕像素点获取并设置鼠标位置为制定像素(源码)
2016-12-07
程序速度齿轮
2016-11-20
服务提权工具
2016-11-20
重新封装了下node-mongo服务.zip
2019-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人