HDU 1532 Drainage Ditches
模板题。。。
//author: CHC//First Edit Time: 2014-07-29 17:19//Last Edit Time: 2014-08-03 08:52#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <set>#include <vector>#include <map>#include <queue>#include <set>#include <algorithm>#include <limits.h>using namespace std;#define MAXN 10000#define MAXM 100000const int INF = INT_MAX;typedef long long LL;struct Edge{ int from,to,ci,next; Edge() ...
WIN8.1 设置163邮件
1.进入到邮件界面。
2.鼠标在右侧上滑动。会出现。 介个。点设置。
3.点击设置-添加账户-其他账户。然后粗现介个。选IMAP
3.点连接。。详细信息。粗线这个框框。。按如下所写填进去。。就可以了。。
4.填写邮箱账号密码。。用户名随便填。点连接就可以了。
1273 Drainage Ditches 模板题
题意:
Discuss那里有。好强悍。。
1273 Drainage Ditches
题目描述 Description
在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水。这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间。因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没的烦恼(不用担心,雨水会流向附近的一条小溪)。作为一名一流的技师,农夫约翰已经在每条排水沟的一端安上了控制器,这样他可以控制流入排水沟的水流量。
农夫约翰知道每一条排水沟每分钟可以流过的水量,和排水系统的准确布局(起点为水潭而终点为小溪的一张网)。需要注意的是,有些时候从一处到另一处不只有一条排水沟。
根据这些信息,计算从水潭排水到小溪的最大流量。对于给出的每条排水沟,雨水只能沿着一个方向流动,注意可能会出现雨水环形流动的情形。
输入描述 Input Description
第1行: 两个用空格分开的整数N (0 <= N <= 200) 和 M (2 <= M <= 200)。N是农夫John已经挖好的排水沟的数量,M是排水沟交叉点的数 ...
初识网络流
一直觉得网络流很吊。。。然后就从网上找了个pdf来看
《图论与网络流》
这本书里讲述了图论的相关知识和定理。还有相关证明
特别是网络流那一章。讲的通俗易懂。。
目前为止只看了Ford-Fulkerson算法和Dinic算法
基本上看了一两遍就懂了。。
Ford-Fulkerson算法:
1)找到一条可增广的x-y路,并得出这条路上可增广的最小值min(非零)
2)沿着这条可增广的x-y路,对于这条增广路中所有边。有以下两个操作
1.如果这条边是正向的,边权减去min
2.如果这条边是方向的,边权加上min
3)重复1)&2)直到没有增广路
主体思想是这个。
具体的步骤为:
V–> 所有点集合
x–> 源点集合
y–> 汇点集合
A–> 边的流量集合
C–> 边的容量集合
F(x,y)–> x->y这条边的流量
L–> 已标未查集合
S–> 已标已查集合
给定网络 N(V,x,y,A,C)
求最大流的步骤:
1)先把所有边的流量清空为0
2)给所有源点x标号为(x,无穷大),把x放到已标未查集里
3)从已标未查集 ...
poj3728 The merchant LCA+并查集
题意:有一种商品。在N个城市中的价格都不一样、给定N个点和N-1条边。有Q个询问。每个询问的内容为:
商人从u–>v这条路径上所能获得的最大利润是多少、商人只可以在某一个点买进东西。在这个点之后卖出它、
思路:
由于给定的是一颗简单树。很容易就想到可以用LCA来做。难点在于。怎么求出u–>t–>v的最大利润,
t==lca(u,v)
可以想到并查集的更新操作。
对于每一个询问的u和v 如果我知道以下内容:
u到最近的祖先的最大利润up[u] 和 最近祖先到u的最大利润 down[u]
u到最近祖先的最大值maxx[u] 和最小值 minx[u]
那么我们就可以很容易求出u–>v的最大利润了
u–>v的最大利润 = max(up[u],down[v],maxx[v]-minx[u])
但是主要的问题怎么解决
通过tarjan递归的时候结局 和 并查集中的Find来处理。
详情代码:
//author: CHC//First Edit Time: 2014-08-02 21:59//Last Edit Time: 2014-08-02 22:40#i ...
ACM算法列表
ACM 算法
数据结构
栈,队列,链表
哈希表,哈希数组
堆,优先队列
双端队列
可并堆
左偏堆
二叉查找树
Treap
伸展树
并查集
集合计数问题
二分图的识别
平衡二叉树
二叉排序树
线段树
一维线段树
二维线段树
树状数组
一维树状数组
N维树状数组
字典树
后缀数组,后缀树
块状链表
哈夫曼树
桶,跳跃表
Trie树(静态建树、动态建树)
AC自动机
LCA和RMQ问题
KMP算法
图论
基本图算法图
广度优先遍历
深度优先遍历
拓扑排序
割边割点
强连通分量
Tarjan算法
双连通分量
强连通分支及其缩点
图的割边和割点
最小割模型、网络流规约
2-SAT问题
欧拉回路
哈密顿回路
最小生成树
Prim算法
Kruskal算法(稀疏图)
Sollin算法
次小生成树
第k小生成树
最优比例生成树
最小树形图
最小度限制生成树
平面点的欧几里德最小生成树
平面点的曼哈顿最小生成树
最小平衡生成树
最短路径
有向无环图的最短路径->拓扑排序
非负权 ...
GVIM/VIM WIN下 解决YCM包含Unicode字符问题不能补全的问题。
这种方法还是有点缺陷,比如说。多加几个大括号就不能自动匹配补全多个大括号之外变量。并且需要手动按键匹配。= =(如果你的路径是纯ASCII码的话是可以自动匹配补全的)
-------------By CHC 2014/7/25修改
内流满面啊!!这个问题在去年就已经被解决了。。还好我订阅了github。今天心血来潮就去看了一下。。发现了solution。。
按照我上回的方法戳我编译完YCM(YOUCOMPLETEME)之后,如果GVIM在打开CPP文件的时候出现Unicode can’t convert …的话就恭喜了。。要么你的CPP文件里包含了UNICODE字符。要么你的路径包含了UNICODE字符。好心酸。美中不足的地方终于解决了。
如果看完此文还不懂的话猛戳这里
首先。需要把…Vim\vimfiles\bundle\YouCompleteMe\python\ycm里面的vimsupport.py修改几行。把
10 ...
zoj 4738 Choir 二维RMQ+预处理
题意:给定n*m的矩阵小格。每个小格都有一个数值,代表这个位置人的身高。给q个询问,每个询问给 x,y 要求在这个n*m的矩阵中找一个x*y的子矩阵(n是行m是列,x是行,y是列)这个子矩阵中除去最高的那个人。剩余人的方差。求满足x*y的子矩阵的方差最小的xy坐标,并输出方差
首先贡献一发方差公式:
可以把它分拆成
((x1*x1+x2*x2+.....+xn*xn) - 2*(x1+x2+..+xn)*(平均值)+n*(平均值)*(平均值))/n
想到这里的时候已经成功了一半了。所谓好的开端就是成功的一半。
现在我们转换一下问题:
我转换成了一下三个小问题:
1)求出给定的一个大矩形中的某个子矩形的和,我们希望复杂度尽量低
2)求出给定的一个大矩形中的某个子矩形的平方的和,我们希望复杂度尽量低
3)求出给定的一个大矩形中的某个子矩形的最大值,我们希望复杂度也尽量低
好了,如果能明白并写出这三个小问题的解。那么这题也就这样了。
1)可以预处理出左上角到当前i,j位置的和sum1[i][j],这样查询的时候就可以直接O(1)的查询了,对于给定的x,y,x1,y1这个矩形。那么这个矩形的 ...
一维RMQ和二维RMQ模板以及用法
RMQ可以用来查找区间最值(最大或最小)
二维RMQ可以用来求子矩阵的最值问题。
RMQ先将所有起点的向后跳2^i的数最值求出来,然后查询的时候再查找两个区间
dp[i][j]表示i~i+2j-1这2j个数中的最值,如果用区间表示的话,就是
[i,i+2^j)
这样的话我们可以得到一个公式
dp[i][j]=max(dp[i][j-1],dp[i+(1<<j)][j-1];
i~2j-1可以分成求两个区间的最值[i,i+2j)–> max [i,i+2^(j-1)) [i+2(j-1),i+2j)
区间的最值是可以合并的。
一维数组使用RMQ的话时间复杂度是
O(nlog(n))-O(1)
代码:
#include <iostream>#include <cstdio>#include <cmath>using namespace std;#define MAXN 200010const int N_N=log2(MAXN)+2;int n,k;int d[MAXN][N_N];int a[MAXN];inline int max ...
bat 以管理员权限运行但目录不是打开目录的解决办法。
因为之前写了一个bat脚本。用来添加当前编译器目录的相应位置为path变量,但是在有的电脑上是拒绝访问。= =然后用管理员权限运行之后目录又变了。百度了一下找到了解法。
以下代码直接点开和以管理员身份运行的结果是不一样的。
@echo offecho 当前目录是:%cd%echo 当前目录是:%~dp0pause