自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 POJ 1815 最小割 拆点 枚举

求一个最小割点集,拆点,连一条自己出点到入点的容量为1的边,s,t连无穷边,保证不被割集割到,然后从1到N枚举删除点,求最小割,如果求得的最小割变小,则更新最小割,并且将该点记为删除,以后枚举的是偶构图不考虑该点,然后记录答案要注意0的时候不要输出序列的那一行#include #include #include #include #include #include #inclu

2013-09-09 21:30:28 605

原创 POJ 1637 || ZOJ 1992 混合图欧拉回路 最大流

题意是混合图是否有欧拉回路引用一下别人的题解。。混合图欧拉回路用的是网络流。把该图的无向边随便定向,计算每个点的入度和出度。如果有某个点出入度之差为奇数,那么肯定不存在欧拉回路。因为欧拉回路要求每点入度 = 出度,也就是总度数为偶数,存在奇数度点必不能有欧拉回路。现在每个点入度和出度之差均为偶数。将这个偶数除以2,得x。即是说,对于每一个点,只要将x条边反向(入>出就是变入,出>入

2013-09-06 14:40:04 502

转载 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)的比较

http://www.iteye.com/topic/614070此少侠总结的特棒,直接收藏了。我们这个专题介绍的动态查找树主要有: 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)。这四种树都具备下面几个优势:(1) 都是动态结构。在删除,插入操作的时候,都不需要彻底重建原始的索引树。最多就是执行一定量的旋转,变色操作来有限的改变树的

2013-08-31 21:59:36 503

原创 ZOJ 1456 最短路 输出路径

这题本来觉得比较简单的 可是一直WA 后来看别人解释找到原因了“这题难就难再要字典序输出,要是单单floyd的话,无法保证最后得到的路径字典序最小,一个简单的反例就是如果6 5 7 8 9和6 8 1 2 9以及6 10 1 2 9同时是6-9的最短路的话,如果忽略相等情况下的更新,6 8之间是不会被7作为中间节点而更新的,但是不忽略的话,又可能被中间比较大的节点更新了。所以直接floyd(采

2013-08-18 00:22:38 484

原创 ZOJ 2725 SG函数 DP

给一个长度为6的有前导零的数字,每次可以使一位减少,最少减少1,最多减少到0,也可以在0右边的数字和0本身都删除,两人轮流操作,问先手是否必胜一开始看错题,写了半天都不对,一种是SG函数的,发现SG函数vis数组范围是SG的选择,另一种是顺推的DP,DP要快很多SG函数 1680ms#include #include #include #include #include #i

2013-08-16 23:29:14 436

原创 POJ 2318 2398 计算几何

求叉积根据叉积的正负,判断点在哪两个线段之间,二分即可#include #include struct Point{ int x, y; Point(int a = 0, int b = 0) { x = a; y = b; }};Point tp[5555], bt[5555];int cnt[5555];int n;

2013-10-03 21:21:34 418

原创 ZOJ 3022 数学题

将对几个的概率记录下来,然后依次递推#include #include int n;double dp[2][20];void solve(){ char str[20]; memset(dp, 0, sizeof(dp)); int i, j, k, wc, kc; wc = kc = 0; dp[0][n] = 1; int

2013-10-03 19:02:23 583

原创 POJ 2443 位压缩加速

转化为01矩阵,将30行的每一列合并成一个int,对于某个询问进行与运算#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI

2013-09-27 15:14:50 549

原创 HDU 4749 KMP + BIT HASH

求串A和串B偏序匹配的所有位置。偏序匹配就是保持大小关系的离散化后两个串一模一样。1≤|A|,|B|≤10 5 ,1≤A i ,B i ≤25 昨天网络赛的B题,我们当时随便弄了个 25∗(|A|+|B|)  的hash就过了,后来在Vani那听说有n lg k(k为字符集大小)的做法,想了一下总算明白了。记录一下。其实满足以下两条性质的匹配关系都能KMP:

2013-09-25 20:50:27 541

原创 2013 成都网络赛

最后四题C题没什么说的,J题区间统计一下就行,D题一开始推前几项没找到规律就一直放弃着,到后来又回头来找,浪费了不少时间,还是缺少做题的感觉,G题数位dp,注意可以静态求解,一开始TLE.

2013-09-14 20:35:23 544

原创 HDOJ 4717 三分法

两个点列式展开后发现距离的平方是二次函数, 之中取最大值仍然是个二次函数, 三分法即可#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const doub

2013-09-12 21:55:45 399

原创 2013 成都邀请赛重现

1001 1012水题1007数位dp1005一开始当做求三角形外接圆,后来才发现是最小覆盖园1010直接做SPFA,由于边太多TLE了 重新构图 每一层多加一个点,将每层的点,如果上一层有点,对本层的每一个点连一条到上一层的额外点,边权为C, 下层也是如此,然后每层的额外点连接一条到本层的边权为0的边,上面的边都是有向边.1011枚举开头的组合是否能构成不由0构成的最大的数,

2013-09-12 21:13:46 485

原创 ZOJ 2788 最小割

虽然是自己做出来的,不过为什么这么构图感觉说不清,别人的解法写的挺好的.解法:显然这是一个集合的分割问题,即求这样的一个割:使得终点房间与某些存在人的房间的一个分割,题中求的最少的人就是求解一个最小割。将问题转化为网络流求解。通过建立从超级源点到存在人的一些房间,那么从汇点反向遍历寻找这样的一个割。如果从源点到有人房间的边满流,那么反向遍历一定不会将这个节点划分到汇点集合里面去,如果该边不满流

2013-09-10 16:21:37 419

转载 最小割的一些理解

一、基本问题:1.到底什么是割:原始点集为V,选出一些点集S使得s∈S,T=V-S,t∈T,则S到T的边为S到T割,记做[S,T]。2.什么是最小割:图中所有的割中,边权值和最小的割为最小割!3.割得容量容量和流量计算的区别:割[S,T]的容量为∑(边(u,v)的容量和),其中u∈S,∈T。也就是说割的容量不计算反向的边!!而流量为正向的和反向的代数和。4.最大流-最小割定理:最大

2013-09-10 15:25:51 931

原创 ZOJ 2587 最小割唯一性

判定最小割唯一性,先做一遍最大流,然后正向遍历得到集合S, 反向遍历得到集合T,如果ST不想交切相加等于全集,那么就是唯一的反向遍历是容量取边edge[i^1].cap, 感觉非常巧妙#include #include #include #include #include #include #include #include #include #include usin

2013-09-10 15:25:47 608

原创 Code forces 199 div 2 A B C

写了ABC三个水题..A: 126 136 124 三种组合判断是否够用#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI

2013-09-08 21:01:00 438

原创 POJ 3308 最小割

改成log计算值 将乘法转化为加法#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);templ

2013-09-06 16:04:13 390

原创 POJ 3469 最小割

两个CPU为原点和汇点,每个任务为一个顶点,在两个CPU上的花费分别连边,不能共享资源的额外花费连无向边构图的解释。。虽然还是有点不理解这样,该图的最小割中,原点和模块节点之间的边,或者模块节点与汇点之间的边至少一条在割之中。同时,如果数据交换的结点选择了不同的核,那么他们之间的中边一定也在割集中    (如果不在,那么可以构造出更小的割)。如果选择了相同的核,那么模块节点之间的那

2013-09-06 15:31:17 465

原创 POJ 2391 网络流最大流

首先想到floyd,然后二分最大距离加边,但是会有问题 如果1->3 距离110 1->2距离40 2 ->3距离70 ,当最大距离是70时1->3仍然可走,所以需要拆点.把每个点拆成一个来源一个去向然后来源和去向连一条无穷的边 #include #include #include #include #include #include #include #include

2013-09-04 14:53:41 344

原创 POJ 1087 网络流 最大流

设置源点和汇点,每个需要使用的设备插座,连接源点到该插座的设备个数,连接会场提供插座到汇点,容量为个数,然后连接插座转换边,容量为无穷注意转换插座可能是之前没出现过的#include #include #include #include #include #include #include #include #include #include using namespa

2013-09-04 11:52:06 388

原创 POJ 2513 欧拉路判定

用Trie树记录单词,然后再用度数判定#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);tem

2013-08-31 14:26:47 472

原创 ZOJ 2016 欧拉路判定

判定联通 出度入度即可#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);template inline T MAX(T a, T

2013-08-31 12:09:36 416

原创 ZOJ 3508 贪心

士兵按照右边界从小到大排序,然后依次寻找武器中最小的满足区间的#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);template i

2013-08-26 15:11:17 369

原创 2013-08-19

今天还行吧,虽然课表是八节,但是实际只有五节,明天还有多校,27天

2013-08-19 23:58:09 336

原创 POJ 3169 差分约束

只要建立成d[u] 图不连通输出-2有负环输出-1#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-

2013-08-19 21:48:45 357

原创 POJ 1364 差分约束

判断差分约束是否存在#include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);template inline T MA

2013-08-19 19:07:02 424

原创 ZOJ 1508 差分约束

差分约数 找最短路 以终点为原点相邻最多加1 将每条边 u v w 构造为 v 到 u-1 权值为-wSPFA#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double P

2013-08-19 18:30:12 432

原创 ZOJ 1857 最短路

输入有点坑,最后一个case没有空行#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);template inline T MAX(

2013-08-19 16:38:48 386

原创 ZOJ 1221 最短路

floyd#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);template inline T MAX(T a, T b){if

2013-08-19 16:08:42 542

原创 ZOJ 1082 最短路

floyd 即可#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);template inline T MAX(T a, T b){

2013-08-19 15:54:11 417

原创 ZOJ 2797 最短路

最短路的修改变成概率相乘即可SPFA#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);template inline T MA

2013-08-19 15:42:51 1016

原创 ZOJ 2027 最短路

保存一下路上最大值,在更新的条件中也改成路径和减去最大值即可SPFA#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI =

2013-08-19 15:28:59 468

原创 2013-08-18

今天题目都是最短路,都挺水的,不过有些题目处理还是有点繁琐,当做练代码能力吧明天开学了,时间要少了,不过挤挤总会有的

2013-08-18 23:50:28 317

原创 POJ 2253 floyd 最短路

本想二分答案,后来发现只要修改floyd方程即可#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);template inline

2013-08-18 23:44:50 378

原创 POJ 2263 最短路 路径上最小值

修改floydmp[i][j] = MAX(mp[i][j], MIN(mp[i][k], mp[k][j]));#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long lon

2013-08-18 23:38:05 392

原创 POJ 2570 floyd 二进制

将最短路条件改成mp[i][j] = mp[i][j] | (mp[i][k] & mp[k][j]);#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;c

2013-08-18 23:16:54 366

原创 ZOJ 3088 最短路 最长路

做一个最短路 一个最长路,枚举两点求比值最大的记录,然后最后输出就行#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = a

2013-08-18 22:56:50 441

原创 POJ 3259 最短路 判负环

SPFA 判负环 某个点访问n次#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);templa

2013-08-18 18:15:05 393

原创 POJ 3268 最短路

建反向边 做两遍SPFA#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const double PI = acos(-1.0);template

2013-08-18 17:44:23 349

原创 POJ 1192 限制条件最短路

通道在一定的时间开放,处理一下就是最短路了strtok(char[], " ")还是很好用的引用一下百度百科strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包涵的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的

2013-08-18 16:42:29 416

空空如也

空空如也

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

TA关注的人

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