题目地址:POJ2195
本人职业生涯费用流第一发!!快邀请赛了,决定还是多学点东西,起码碰到简单的网络流要A掉。以后最大流费用流最小割就一块刷。
以前费用流在我心目中一直是高大上,高不可攀的形象,可这两天才发现,原来费用流就是一个spfa再加点东西。。。一直以为费用流会比最大流的isap要麻烦好多,毕竟多了一个费用的元素。。。。我真的错了。。仔细研究了一下,只用一个spfa确实就可以解决了。...
分类:
其他好文 时间:
2014-07-03 18:15:51
阅读次数:
200
就是Fibonacci的矩阵算法,不过增加一点就是因为数字很大,所以需要取10000模,计算矩阵的时候取模就可以了。
本题数据不强,不过数值本来就限制整数,故此可以0ms秒了。
下面程序十分清晰了,因为分开了几个小函数了,适合初学者参考下。
#include
const int MOD = 10000;
void mulOneMatrix(int F[2][2])
{
int a =...
分类:
其他好文 时间:
2014-07-03 17:30:20
阅读次数:
157
这道题和poj的拯救少林神棍是一样的题目。
要用给出的小棍凑成等长的棍子,求能凑成的棍子的最小长度。
直观的包里思路就是枚举所有可能的长度,然后不停的测试小棍组合,先把小棍加入组合,然后不合适就推翻这一根小棍,再测试下一个小棍,直到推翻所有的小棍。
在枚举的时候,我们只需从最长的小棍长,枚举到小棍总长的一半就行了。然后如果再不符合的话,那么就说明所有小棍只能组合成一根棍子了。
我原先看过关于poj上拯救少林神棍这道题目的详细讲解。一个DFS搜索题,这里DFS共有四种剪枝方案:...
分类:
其他好文 时间:
2014-07-03 17:29:03
阅读次数:
161
题目大意:
串1中有多少个后缀和 串2中的某个后缀 的lcp 为 k
思路分析:
先找出 长度至少为k的对数有多少。
再找出 至少为k+1的有多少
然后相减。
#include
#include
#include
#include
#include
#include
#define maxn 110005
using namespace std;
int ...
分类:
其他好文 时间:
2014-07-03 16:26:57
阅读次数:
195
最短路判断是否出现负环。
SPFA过的,以前用Bellman。那是好久之前跟着一群大神混过去的,都忘了题了。
现在更深刻的理解图了。
给n点,m条正权边,w条负权边。
正权边是无向的,负权边是单向的。
判断是否出现了负环。
用SPFA,当某个点n 次入队了之后,肯定出现了负权。
#include
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-07-03 16:19:42
阅读次数:
182
BUY LOW, BUY LOWER
Time Limit: 1000MS
Memory Limit: 30000K
Total Submissions: 8327
Accepted: 2888
Description
The advice to "buy low" is half the formula to success i...
分类:
其他好文 时间:
2014-07-03 15:58:07
阅读次数:
225
多种方法,可以理解为最短路变形。
也可以当作最小生成树。
题意理解就很简单。
青蛙A到青蛙B之间距离中某一次跳的距离,选出最大的。
写了2个最短路的。SPFA 和 Dijkstra。
顺便熟悉一下最小生成树,也写个Kruskal 的。
SPFA:
#include
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-07-03 13:52:06
阅读次数:
146
怒搞一下午网络流,又去我一块心病。
从2F到SAP再到Dinic终于过掉了。可是书上说Dinic的时间复杂度为v*v*e。感觉也应该超时的啊,可是过掉了,好诡异。
后两种算法都是在第一种的基础上进行优化。第一种方法就是不停的寻找增广路,后两种引进了层次网络的概念,第三种又#include
#include
#include
#include
#include
#include...
分类:
Web程序 时间:
2014-07-03 13:51:25
阅读次数:
294
理解了Trie树然后就能1A 其实估计这个题随便做做就能A掉,可能不需要高级数据。
先贴吉林大学的代码模板
/*==================================================*| Trie树(k叉)
| INIT: init();
| 注: tree[i][tk]>0时表示单词存在, 当然也可赋予它更多含义;
\*=================...
分类:
其他好文 时间:
2014-07-03 13:42:21
阅读次数:
201
类似于我上一篇解题报告。POJ 2253 Frogger。
也是最短路的变形,也可以当成生成树做。
2253 是求跳的路径中 权值最小的那一条。
而这道题1797 是求路径中 权值最大的那一条。
只需要把2253 中的dis[]初始赋INF,其他赋为0。然后dis[v]
d是某一边的大小。u出发点,v是到达点。
程序基本和 2253 一样。
#include
#include...
分类:
其他好文 时间:
2014-07-03 13:31:00
阅读次数:
193