- 博客(17)
- 资源 (61)
- 收藏
- 关注
原创 CodeForces 148D Bag of mice 概率DP
龙和公主从一个袋子里抓老鼠,谁先抓到白老鼠谁赢,如果最后谁都没有抓到白老鼠龙赢,龙每次抓老鼠都会又一只老鼠从袋中逃跑,问最后公主胜利的概率。假设dp[i][j]表示袋中有i只白老鼠,j只黑老鼠时公主胜利的概率,那么对于这个局面,会有4种不同的可能: 公主抓到白老鼠; 公主抓到黑老鼠,龙抓到白老鼠;(输,不可向后推进) 公主抓到黑老鼠,龙抓到黑老鼠,跑掉黑老鼠;
2016-05-31 19:45:09 329
原创 POJ 3071 Football 概率DP 二进制优化
这道题目所描述的情形和归并排序很类似,都是两两合并,实际上里面还包含了一些二进制的知识。我们设dp[i][j]表示在第i轮j组胜出的概率,那么很明显,j组必须在第i-1轮胜出,j本轮的竞争对手也一定要在i-1轮胜出,根据概率论的知识,我们可以知道在i轮胜出的概率就是他在那一轮战胜每一个对手的概率和,因为他只要赢一个队就能晋级。假设竞争对手为k,dp[i][j]=sigma(dp[i-1][
2016-05-23 20:12:31 435
原创 POJ 3711 Scout YYF I 概率DP + 矩阵快速幂
一段路上的某些位置有地雷,一个人从1开始,每一次走一步的概率是p,走两步的概率是1-p,问到达终点的概率。题目本身是一个概率问题。假设dp[i]表示到达i点的概率,那么dp[i]=p*dp[i-1]+(1-p)*dp[i-2],且dp[1]=1,dp[2]=p,但是从题目的数据范围来看,无论是时间还是空间都不满足。分析递推方程能看出,一个点的概率只与其前面的两个点有关,因此我们可以
2016-05-21 20:59:28 375
原创 HDU 3605 Escape 网络流最大流 合并点
表面上看这是一道很明显的网络流题目,只要把源点连到所有人上,每个人再连到星球上,星球再连接到汇点即可,但是由于点数太多导致边数也很多,最终超时。实际上每个人最多就只有10个星球可以选择,也就是1024种可能,那么只要人数超过1024,必定会出现重复的选择情况,而且重复的次数相当多,如果我们把这些选择相同的人合并起来,并且把对应的边的容量也合并起来,就可以将点缩减至1036个,从而降低时间复
2016-05-21 09:30:44 454
原创 并查集模板
并查集是一种较为常用的数据结构,主要用于确定元素之间是否属于同一个集合,下面给出非递归版本的代码,效率略高于递归版本。void make_set(int n) { int i; for(i=0;i<=n;i++) p[i]=i; } int find_set(int i) { int j=i;
2016-05-13 21:32:43 287
原创 HDU 4289 Control 最小割最大流 拆点
给出一个无向图,去掉每一个点都有一定的花费,给出一个起点一个终点,问最少花费多少使得这两个点之间不连通。实际上题目就是让我们求一个无向图的最小割,我们可以利用一个定理,即最大流最小割定理,不清楚的可以看看。于是,我们就需要求这个图的最大流,但是图中的权值在点上,因此我们需要拆点,把点上的权值转移到边上,我们假设一个点是p,我们将它拆成 p->p',这样的话当我们连接两个点p、q
2016-05-13 20:03:30 452
原创 最大流最小割定理
网络流不仅能解决网络流量图中的最大流量和最小费用问题,还能解决一些经典图论问题,比如网络流的最大流最小割定理。网络与流对于有向图D=(V,A),如果V中有一发点(源)Vs,一收点(汇)Vt,其余均为中间节点,且对A中的每条弧均有权W(Vi,Vj)!=0(简记为Wij,并称为弧容量),则称这样的赋权有向图D为容量网络,记为D=(V,A,W),通过D中弧(Vi,Vj)的物流量为fij,称为弧(
2016-05-13 17:23:05 645
原创 hi8pro 单安卓 32G分区教程
购买过双系统平板的朋友都知道,windows即使到了win10仍然对移动设备不太友好,超高的资源占用,恐怖的耗电,以及匮乏的移动应用资源,都决定了其在移动设备上的体验还不能和Android、IOS抗衡,因此许多人会选择刷单安卓系统,但是官方的刷机方案都是同时考虑了安卓和windows,因此安卓分区一般只有8G左右,剩下的空间无法使用,今天教大家如何对其进行重新分区,理论上这个教程适用于所有双系统平
2016-05-13 13:33:48 7389 3
原创 驰为Hi8 pro 安卓5.1 root
安卓不root和咸鱼有什么区别,今天就教大家如何root寨板驰为Hi8 pro 下载所需资源,recover,驱动程序 解压recover中的文件,并且安装驱动程序 在设置->关于平板电脑里,连续点击5次版本号,即可打开开发者模式 在开发者选项中打开OEM解锁和USB调试 检查电脑的设备管理器中是否有Intel Android Device,如果没有,重新插一下
2016-05-13 11:43:39 5612
原创 HDU 4292 Food 网络流最大流 拆点
在使用网络流之前,最重要的一件事就是构造流量图,必须保证从源点到汇点的一条路径是一个可行解才行。对于这道题目,由于每个人既要吃饭,还要喝饮料,因此就不能把一个人当成“一”个人看待,因为如果看成一个人,那么无论怎么建图,都无法保证从源到汇的路径是可行解,这时候我们就需要将一个人拆成两个,一个负责吃饭,一个负责喝饮料,然后再让吃饭的人指向喝饮料的人,容量为1。最后在建立食物与人的边喝人与饮料的
2016-05-13 09:21:16 444
原创 POJ 2159 Going Home 网络流 最小费用最大流
本题可以用网络流来解决,也可以用最大二分匹配,下面讲解一下网络流的思路。题意是在一个地图中一些人要到一些房子,每个人都要找到一个房子,每个房子只能容纳一个人,人每移动一步有花费,问最少话费。将人和房子都看成流量图中的节点,那么每个人到每个房子都有一条边,这条边的花费就是路径长度,因为每个房子的容量是1,因此这条边的容量也是1。这样就建出一个多源点多汇点的网络流量图,然后只需要在用一
2016-05-12 16:21:42 487
原创 POJ 2159 Going Home 网络流 最小费用最大流
本题可以用网络流来解决,也可以用最大二分匹配,下面讲解一下网络流的思路。题意是在一个地图中一些人要到一些房子,每个人都要找到一个房子,每个房子只能容纳一个人,人每移动一步有花费,问最少话费。将人和房子都看成流量图中的节点,那么每个人到每个房子都有一条边,这条边的花费就是路径长度,因为每个房子的容量是1,因此这条边的容量也是1。这样就建出一个多源点多汇点的网络流量图,然后只需要在用一
2016-05-12 16:01:13 315
原创 POJ 1087 A Plug for UNIX 网络流最大流
题意比较啰嗦。简单的说就是有n个插座,m个设备和k种插座转换器,问最多能同时插上几个设备。我们可以用网络流中的最大流来解这个问题。首先,我们要将设备名映射成一个唯一的数字,本来想用hash,但是范围太大,因此可以使用动态递增标记,每添加一个设备,为其分配一个编号,并且编号值增1,这个可以用map来解决。其次,不管是设备还是插座还是转换器,我们都将其视为图中的一个节点,并且让源点指向
2016-05-12 10:48:21 379
原创 ACM网络流入门
网络流是ACM图论当中比较重要和难懂的一块,万事开头难,我们还是需要从一个简单的问题引入,这就是网络流中最大流问题。网络流入门网络流的最经典应用就是最大流....给定一个图...给出每条边能流过的最大流量...求源点到汇点的最大流量....求解网络流的基本思想就是每次寻找增广路(就是源点到汇点的一条可行路)..然后ans+=增广路能流过的流量..更新剩余网络..然后再做增广
2016-05-11 23:58:25 1878
原创 POJ 3216 Repairing Company 最少路径覆盖+floyd最短路
不同的任务分散在不同的地点,每个任务都有开始时间和消耗时长,必须完成一个任务才可能接下一个任务,问最少需要几个人来完成这些任务。可以将任务当作点,那么两个任务a,b之间有一条边意味着完成a任务之后可以接着完成b任务,以此来建图。对于两个任务a,b,如果他们之间有一条边,那么首先a的开始时间加消耗时长再加上从a到b所花费的时间必须小于等于b的开始时间。但是题目给出的两点之间的距离并不
2016-05-11 19:12:20 427
原创 POJ 1584 Robots 最少边覆盖 二分图最大匹配
如果将机器人走过的路线视为一条边,那么这道题和POJ 2594如出一辙,任然是求最少路径覆盖问题,并且点仍然是可以重复走的,因此可以使用二分图最大匹配来做,下面说说思路。首先保存所有节点信息,然后由于机器人只能向右走或者向下走,因此我们对任意两个点a、b进行比较,如果由a可以走到b,那么就建一条有向边,然后对这个新建的图进行hungary即可,ans=n-hungary()。Robot
2016-05-11 06:27:28 464
原创 poj 2594 Treasure Exploration 最少边覆盖+传递闭包
给出一个有向无环图,问最少多少条边就可以覆盖所有的点,很明显的最少路径覆盖问题,但是点可以重复用,这与hungary算法不太一样,我们可以这样处理,假设a要经过b点到c,但是b点已经被访问过,为了保证a顺利到c,就让a直接飞过b到c,也就是说添加一条a到c的边,这其实就是求传递闭包,我们可以通过floyd算法求出。然后ans=n-hungary()。一开始用了邻接表的最大二分匹配,在求闭包
2016-05-10 23:20:57 666
sourceinsight4093-setup.zip
2018-03-26
secureCRT 8.1.4 x64 带注册机
2017-09-20
程序员面试宝典(第5版)第二部分
2017-08-10
程序员面试宝典(第5版)第一部分
2017-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人