自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客迁移 新地址 www.teveillan.com

RT.新地址 teveillan.com

2015-01-05 16:25:04 679

转载 vim自动加载模板的插件~

又搜了下,貌似有个CVIM的插件也很N~~~学习了~~记得之前实习的时候新建一个文件.h  .c  .cpp后会自动加一些文件说明,比如文件的名字,创建日期、创建者等等一些信息,想起来使用很方便,就自己找了下怎么做,没想到这么难搜,不过还是被我找到了~~~ CU上一个帖子:http://bbs.chinaunix.net/viewthread.php?tid=895258

2014-04-22 17:35:35 789

转载 vim 剪贴板

vim很强大,时常都会有新的惊喜和发现。今天解决的是两个关于剪贴板的问题。1、怎样在X系统与vim进行拷贝粘贴操作(即vim与系统剪贴板的交流)?2、拷贝某段文本A,覆盖文本B(或者用d或x删除B)。之后再使用p进行粘贴,就变成了B的内容,如果希望继续粘贴A,怎么办?首先来点基础,vim有多个剪贴板,其中就包括了系统剪贴板。使用命令:reg可以看到各个剪贴板的内容。其中“”

2014-04-22 10:08:37 644

转载 高斯消元模板

typedef vector vec;typedef vector mat;#define EPS 1e-8vec Gauss_jordan(const mat& A, const vec& b){ int n=A.size(); mat B(n, vec(n + 1)); for(int i=0; i<n; i++) for(int j=0; j

2014-04-20 10:34:59 487

转载 红黑树

介绍另一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和Robert Sedgewick改成一个比较摩登的名字:红黑树。红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,

2014-04-12 17:21:12 742 1

转载 海量数据处理算法—Bit-Map

转自:1. Bit Map算法简介        来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。2、 Bit Map的基本思想        我们先来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5

2014-04-10 18:01:03 457

转载 KMP算法 字符串匹配个人理解

最近很纠结,看了一个多星期,终于基本理解KMP算法,今天写下此文,献给那些依然纠结在KMP中的兄弟同胞们!(如果您已经了解过KMP算法的请跳过这一段)刚刚进来的童鞋可能还不明白什么是KMP算法,现在在这里先大体的说以下,KMP算法其实就是字符串匹配的算法,和C语言的一个函数strstr();功能一样,引用严蔚敏教授的例子,主串 S:acabaabaabcacaabc 模式串 T:abaab

2014-04-09 20:11:48 679

转载 C++ 虚函数表解析

陈皓http://blog.csdn.net/haoel  前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是

2014-04-09 19:53:22 540

转载 CentOS──xxx is not in the sudoers file解决方法

前阵子比较来比较去,选了CentOS作Linux系统,刚装到虚拟机里面,发现默认的用户无法开启系统权限。终端中输入sudo后提示“XXX is not in the sudoers file. This incident will be reported.” 上网搜搜,找到了解决办法:用sudo时提示"xxx is not in the sudoers file. This incid

2014-03-20 18:35:00 544

原创 AC自动机模板

const int kind=26;struct AC_Automata{ struct node{ node *child[kind]; node *fail; int count; node(){ for(int i=0;i<kind;++i) child[i]=NULL; count=0; fail=NULL; } }; node *root;

2014-02-26 18:08:53 491

转载 后缀数组模板

http://caiminjian.diandian.com/post/2012-08-27/40038043416  算法解释N为一倍即可,m至少比最大值大1int s[N],wa[N],wc[N],wv[N],sa[N],wb[N],height[N],rank[N];inline bool cmp(int *r,int a,int b,int l){ return

2014-02-04 15:28:07 493

转载 Vim简明教程【CoolShell】

目录(?)[-]第一级 存活第二级 感觉良好第三级  更好更强更快更好更强更快第四级 Vim 超能力在当前行上移动光标 0   f F t T  区域选择 actionaobject 或 actioniobject块操作 C-v自动提示 C-n 和 C-p宏录制 qa 操作序列 q a 可视化选择 vVC-v分屏 split 和 vsplit结束语

2013-12-14 10:23:46 527

原创 HDU 4126 Genghis Khan the Conqueror MST+最佳替代边

题目大意:给你一个无向图,其中有些边有可能增大且每次只增大一条便,每条便增大的可能性相等,问最后产生的最小生成树的期望值为多少。解题思路:近似与次小生成树的思路,先找一个最小生成树,并找出当生成树中的树边的最佳替代边,如果增大的边为树边,用增大以后的边和最佳替代边做比较选择性替代,加上新生成树的总边权。不然就不用做修改,直接加上原树的边权就好。唯一的难点就是找最佳替代边,之

2013-11-04 19:58:55 596

原创 Codeforces Round #185 (Div. 1) E.Biologist 最小割最大流

题目地址:http://codeforces.com/problemset/problem/311/E思想上有些近似于最大闭权合图,详细参考《最小割模型在信息学竞赛中的应用》。建图:对于每只dog , 如果它的性别为0,建s->dog ,容量为cost,表示对它变性需要的费用。反之性别为1,建dog->t,容量为cost,同样表示对他变性需要的费用。对于

2013-10-23 15:51:16 882

原创 Codeforces Round #185 (Div. 1) C. Fetch the Treasure

链接:http://codeforces.com/problemset/problem/311/C题目意思就不说了。。。(懒。。)本题唯一的难点就是判断宝藏是否可达。其他的用线段树水过就行了。。。观察题目数据范围,除了第一个method K的范围是10^4 ,以后新加的method X的范围都是10^18, 不利于求解。于是对于每一个X ,我们让它对K取

2013-10-22 10:10:15 1094

原创 WC2008 游览计划 斯坦纳树

题目链接:http://wikioi.com/problem/1241/参考资料:《SPFA算法的优化与应用》论文题,不过最开始看论文的时候没看懂,碰到上篇博客中的那题索性就一起解决了。根据题意猜测答案是一颗树,然后就是状态压缩构造树的过程。应为要输出解,建议先把上面那题弄懂再写这题,不然不知道怎么记录解。还是这两个状态转移:枚举子树的形态:

2013-10-20 17:18:14 1117

原创 UVALive 5717 Peach Blossom Spring 斯坦纳树

题目大意:给N个点,M条边,边有长度,构成一个图。前K个点住的有居民,最后K个点是避难所。要求你从这M条边中选出一些边,使得每个居民都能到达一个避难所而且选的边的总长度最少。参考资料:《SPFA算法的优化及应用》http://endlesscount.blog.163.com/blog/static/821197872012525113427573/从题意能推断出,

2013-10-19 18:52:13 883

转载 ZKW费用流

http://www.artofproblemsolving.com/blog/54262http://blog.csdn.net/sdj222555/article/details/7841576POJ2195#include #include #include #include #include #include #include #inc

2013-10-03 19:36:30 967

转载 KM算法

引用1:KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B [i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w[i,j]始终 成立。KM算法的正确性基于以下定理:   若由二分图中所有满足A[i]+B[j]=w[i,j]的边(i,

2013-10-02 19:33:00 830

原创 二分匹配HK算法

#define nn 21000 //两边的点数均为nnint nx,ny;//建图时左边点从0到nx-1,右边点从nx到nx+ny-1int cx[nn],cy[nn];int dx[nn],dy[nn];int dis;bool bmask[nn];//记录右边是否匹配bool searchpath(){ queueq; dis=INF; memset(d

2013-09-23 11:26:45 2229

原创 最大团 Bron–Kerbosch算法

详细讲解   http://www.cnblogs.com/yefeng1627/archive/2013/03/31/2991592.html#define N 110bool g[N][N];int que[N],cnt[N];//cnt[i]记录大于等于i的点集的最大团点数,i点可以不在其中int ans;//ans为最终最大团点数bool dfs(int pos,int

2013-08-27 19:50:22 3947

原创 HDU 3551 Hard Problem 一般图的最大匹配(带花树)

题目大意:给你一个图,让你取一个包含所有点和其中一些边的子图,使子图中每一点的度为给定的值。建图很神。把每条边(u,v)拆成两个点,x , y,并在 x,y间连一条边;如果题目要求u点的度数为f[u],那么就把u拆成f[u]个点,每个点与x相连,同样的,把v点拆成f[v]个点,每个点与y相连,然后用带花树求最大匹配,如果达到完美匹配,就存在,否则不存在。至于

2013-08-26 20:58:30 1005

原创 双连通分量

边双连通分量 int dfn[N],low[N],fa[N];int stack[N];int top,time1,sig;void dfs(int pos,int pre){ stack[++top]=pos; dfn[pos]=low[pos]=++time1; for(int p=head[pos];p!=-1;p=edge[p].next) {

2013-08-26 19:55:52 475

原创 带花树(一般图最大匹配)

#define N 45#define SET(a,b) memset(a,b,sizeof(a))deque Q;//g[i][j]存放关系图:i,j是否有边,match[i]存放i所匹配的点//建图开始初始化g//最终匹配方案为match//复杂度O(n^3)//点是从1到n的 bool g[N][N],inque[N],inblossom[N];int match[N],p

2013-08-26 19:51:40 776

原创 Tarjan

int low[N],dfn[N],fa[N];int stack[N];int top,sig,time1;void dfs(int pos){ stack[++top]=pos; low[pos]=dfn[pos]=++time1; for(int p=head[pos];p!=-1;p=edge[p].next) { int to=ed

2013-08-26 19:50:50 500

原创 LCA+RMQ

int time1;int timepoint[N],repoint[N],deep[N]; //N为n*2int dp[N][20];void getdeep(int pos,int pre,int deeptemp){ ++time1; timepoint[pos]=time1; repoint[time1]=pos; deep[time1]=deep

2013-08-26 19:49:50 573

原创 SPFA

#define INF 1e9#define N #define M typedef int type;type dis[N];bool visit[N];int que[N];int head[N],ip;struct Edge{ int to,next; type c;}edge[M];void add(int u,int v,type c){

2013-08-26 19:36:57 416

原创 次小生成树

次小生成树int fa[N];int head[N],end[N];int next[N];int len[N][N];struct Node{ int x,y,c; bool flag;} f[M];int find(int x){ if(x==fa[x]) return x; else return fa[x]=find(fa[x]);}b

2013-08-26 19:35:49 461

原创 全局最小割

测试poj 2914 点从0到n-1#define N 510int map[N][N];int sum[N];//记录w(A,i)int v[N]; //给每个点装个马甲,在删点的时候用bool visit[N];//标记是否加入了A集合int solve(int n){ int ans=1e9; REP(i,n) v[i]=i; //最开始每个马甲初始化为自身

2013-08-26 19:35:02 543

原创 最小树形图

最小树形图#include#include#define type intusing namespace std;const int mm=44444;const int mn=1111;const int oo=1000000000;type c[mm],in[mn],ans;int s[mm],t[mm],id[mn],pre[mn],q[mn];type Directed

2013-08-26 19:33:25 519

原创 最小费用

#define INF 1e9#define N #define M struct Edge{ int to,next,cost,flow;}edge[M];int head[N],ip;int que[N],dis[N],pre[N];bool visit[N];bool spfa(int start,int end,int numpoint){ int fr

2013-08-26 19:29:20 461

转载 【转】带花树(一般无向图的最大匹配)

原文链接:http://fanhq666.blog.163.com/blog/static/8194342620120304463580/它的核心思想还是找增广路。假设已经匹配好了一堆点,我们从一个没有匹配的节点s开始,使用BFS生成搜索树。每当发现一个节点u,如果u还没有被匹配,那么就可以进行一次成功的增广;否则,我们就把节点u和它的配偶v一同接到树上,之后把v丢进队列继续搜索。我们给每

2013-08-24 08:57:04 1374

原创 POJ 1741 Tree 树的分治

题目大意:给你一棵树,边有权值,问距离不大于m的点有多少对。男人八题之五。。果然霸气。。最初的思路自然是O(n^2)求每对点的距离然后统计,不过这肯定会超时的。Pass。然后就用树形DP的思路了,选一个点为根节点向下递归,每递归到一点p,求都在以p为根的子树上,且不在同一以p的子节点为根的子树上且距离小于m的点对数。(也就是 最小公共祖先为p 且 距离小于m 的点对

2013-08-10 11:23:58 503

原创 POJ 2175 Evacuation Plan 最小费用流 消负圈

解题思路:最开始一看标准的最小费用流的思路。求出最小费用,然后和原先的答案进行比较。不过这铁定会超时的,所以就死心吧...接着从题目入手,Output的最后一句,Your plan need not be optimal itself, but must be valid and better than The City Council's one.挺阴的...题目

2013-08-01 10:59:47 688

原创 POJ 2396 Budget 有上下界的网络流

经典题型,自己重做一遍,权当是复习下了。还有...自己去年的代码自己完全看不懂了....= =#include #include #include #include #include #include using namespace std;#define FOR(i,l,r) for(int i=(l);i<=(r);++i)#define REP(i,n) for(in

2013-07-29 19:19:21 667

原创 HDU 4389 X mod f(x) 数位DP

题意:求一个范围内 能被自身每一位数字和整除的数的个数。#include #include #include #include #include #include using namespace std;#define FOR(i,l,r) for(int i=(l);i<=(r);++i)#define REP(i,n) for(int i=0;i<(n);++i)#def

2013-07-29 14:24:10 561

原创 POJ 1815 Friendship 最小割+字典序最小割集

解题思路:(1)求最小割。 把每个点i拆分为i和i',对于原图中每条边(u,v)建边( u' , v ),容量为1;对于每个点i,建(i , i'),容量为1。从s'到t求一遍最小割就行了。(2)按字典序输出 最小割集。先记录好原图的最小割ans,从小到大枚举每个点, 如果在不建该点的( i, i' )的那条边的情况下,最小割说明该点属于最小割集,在以后的枚举其他点的时候建边也

2013-07-27 09:04:51 758

原创 HDU 4363 Draw and paint DP

题意:一共四种颜色,将一张纸水平画一道线,选择一边涂满颜色,然后将剩下一边画一条竖直的线,选择一边涂满颜色,不断进行下去,直到随意在某一时刻不再画线或遇到最小单位1不能继续划分。相邻矩形颜色不能相同,问有多少种上色方案。题解其实都差不多了,权当自己记录一下思路吧。状态: DP[ h ][ w ][ flag ][ u ][ d ][ l ][ r ]。h,w  矩形的高与宽flag

2013-07-22 10:20:36 727

原创 HDU 4354 Missile 树的最大独立集+枚举

题意:在一条直线上有C个城市,分别属于N个国家,需要炸毁至少K个国家的城市,花费的金额为两端城市的距离,国家间有M个特殊关系,有关系的两个国家中最多只能摧毁一个国家的城市,关系没有传递性,求所需要的最小花费,如果无法完成输出-1。只能炸一次且不一定要炸掉线段上所有的城市。解题思路:最先考虑的就是用什么模型了。假如有a个国家,有的国家之间有边相连,问选哪些国家使得选中的国

2013-07-20 10:16:59 1363

原创 POJ1637 Sightseeing tour 混合图判断欧拉回路

题目大意:给一个图,有的边有向,有的边无向,问能否找到一条回路恰好经过每条边一次。解题思路: 模型近似于欧拉回路了,但是边的性质不唯一。先回想一下有向图的欧拉回路的判定:每个点入度等于出度。无向图的欧拉回路:每个点的度数为偶数。(假如该点度数为a , 在回路中其实也是想要求该点的出度为a/2 ,入度为a/2 ,出度=入度)这样来看,有向图和无向图的欧拉回路判断的本质就统一了

2013-07-19 11:39:33 582

空空如也

空空如也

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

TA关注的人

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