网络流算法有许多种,最基本的一种方法是Fold-Fulkerson.不过裸奔的Fold-Fulkerson的效率总是不尽如人意.于是各种优化层出不穷.

比较牛X的一个就是基于分层图思想的MPLA(最短路径增值).在层次图里,从源点开始,不管怎么走,总能走到汇点,而且保证是最短路.这是一个非常优美的性质.复杂度证明...找WC2007王欣上论文吧..

于是便有了以下的裸的MPLA程序(附件1).每次计算出一个层次图.然后进行若干次DFS寻找增广路.

Dinic是基于MPLA上的另外一个改进.引入一个新的名词叫做块流,表示在一张剩余图上所有可增广的流量.Dinic在每次计算出层次图后,仅用一次DFS来找出这张图的块流,避免了许多废的搜索状态和回溯状态.详见程序(附件2).

Read the rest of this entry »

, ,

昨晚作为第一波下完的(9点左右才下好),赶紧给装上.

采用的是F8的修复计算机安装(我原本用的还是Win7 7000 beta),安装的速度快的惊人啊.

总共只花了十五分钟左右..在我这台07年的本本上.

新装的系统速度快了很多.中文版的..开机的"Starting Windows"变成了"正在启动Windows"

以及..Windows 7 Ultimate变成了Windows 7 旗舰版(这个还是有点儿囧..)

先上截图..

Read the rest of this entry »

- "忘了吧.这样能好受些"

- "你说,忘了那块奶酪,还能再吃到它?"

- "至少你能吃到新的奶酪"

- "我办不到."

- "所以你吃不到奶酪."

以上..看懂沉默.不懂忽略.

我还是办不到.

题目就不多说了..原本是找些线段树的题目来练练手.

结果这题..看起来好水..可以用树状数组切掉..

看到这么水的题目不忍心放弃..就开始随便写..

结果交上去TLE..觉得非常新奇..找了段线段树的程序扔上去AC了.(没天理啊..)

仔细观察题目.才发现..当坐标为0的时候..我可怜的树状数组啊..就开始无限的循环下去了.

还好..赶紧解决..可以把所有坐标加个1..也可以对于0的情况特判.

以下为我AC的程序:

#include <stdio.h>
#include <memory.h>
 
int n,a[15001],b[15001],ans[15001],tree[60000],t;
 
int Query(int a)
{
	if (!a)
		return tree[0];
	int ans = 0;
	while (a)
	{
		ans += tree[a];
		a -= (a & (-a));
	}
	return ans + tree[0];
}
 
void update(int a)
{
	if (!a) { ++ tree[0]; return; }
	while (a <= 32768)
	{
		++ tree[a];
		a += (a & (-a));
	}
}
 
int main()
{
	freopen("input.txt","r",stdin);
	scanf("%d",&n);
	for (int i=1; i<=n; ++i)
		scanf("%d %d",&a[i],&b[i]);
	for (int i=1; i<=n; ++i)
	{
		update(a[i]);
		t = Query(a[i]);
		++ ans[t];
	}
	for (int i=1; i<=n; ++i)
		printf("%d\n",ans[i]);
}

, , , ,

今天早上省选二试..

一试考差了..活活丢了40分..好吧..我SB.

不过一试只占30%的分数.主要还是看二试.

原本是7:00叫车送我过去的..早上接到电话醒来..6:57..OH MY GOD!

8分钟..起床洗牙刷脸签请假条赶到校门口...(我成神了..?)

7:30差不多赶到三中..

拿到题目.看起来还是有点儿难度的.开始慢慢敲..

旁边的教主比较牛B也比较可怜,瞬间开始切第二题..不过中途流鼻血了...orz..找人要纸巾去.

第三题..没办法..写个简陋的算法打表发现了规律..AC了...(前几天积累的RP还是有用的.)

最后半小时第一题的正确算法闪过脑袋..可是不知道为什么没去写.

好吧..我承认一试对我有些影响..有了第一题那些分数就正好第四名省队了..

怨念着...