自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 poj 3343 Against Mammoths

题目超长,难在读题,理解题以后就可以看出是一道二分查找+最大匹配的题目了题意:有n个人类星球,m个外星球,每个星球上开始sh艘飞船,之后每年会生产p艘飞船,人类想要战胜所有的外星球,每个人类星球和每个外星球的距离已知(需要耗费年),比如在a年初,人类星球H向外星球A宣战,那么人类会带上sh+p*a艘飞船进攻,经过k年后到达外星球,这时外星球飞船的数量为sh'+p'*(a+k),如果这时人类飞船

2012-08-28 11:17:08 1005

原创 poj 3340 Barbara Bennett's Wild Numbers

水题,只要分析好所有的情况就很好做的。#include#includeusing namespace std;string s1,s2;int main(){ while(cin>>s1) { if(s1[0]=='#') break; cin>>s2;int count =0; int n = s1.length(); for(int i=0;i!=n;i

2012-08-26 12:08:42 877

原创 poj1386 Play on Words

使用并查集判断连通性,然后再找欧拉通路。#include using namespace std;int n;char st[1005];bool exist[30];int in[30], out[30];int father[30];int find_father(int a){ if (father[a] == a) return a;

2012-08-26 09:53:54 528

原创 poj1556 The Doors

难点在构图上,每面墙的两个门,都有四个顶点,可以和其他点相连(如果中间没有墙阻挡),因此就可以成功构造出一幅图。#include#includestruct point{ double x,y;}p[200];struct segment{ point a,b;}s[200];double g[200][200];int t;double cross(point

2012-08-25 14:10:33 597

原创 poj 2762 Going from u to v or from v to u?

题意:给出一幅有向图,要求判断,判断在这幅图中的任意两点x,y,一定有一条路可以从x到y或从y到x。思路:缩点+拓扑,一个连通分量一定是满足要求的,那么把连通分量缩成点,拓扑排序,若是在删除某点后,有两个点的入度都为0,则输出No;若能全部删除输出Yes。#includeusing namespace std;const int MAXN =1001;int DFN[MAXN];i

2012-08-15 01:05:36 1447

原创 poj 1422Air Raid

最小路径覆盖,给定一个有向图,在这个图上的某些点上放伞兵,可以使伞兵可以走到图上所有的点。且每个点只被一个伞兵走一次。问至少放多少伞兵。我们可以把问题转化为,在图上的边中选出一些边,使得每个点的如度与出度都不超过1。我们开始在图上的每个点都放上伞兵,然后每选出一条边,就意味着有一个伞兵可以被取消掉了。也就是说需要的最少伞兵数=点总数-能选出的最大边数。我们只要求最大边数即可

2012-08-12 10:49:08 494

原创 poj 1325 Machine Schedule

一开始觉得没有思路,后来发现,任何一个job都可以和两端的机器的方法各有一条连线,那么路径数即为job的个数。因此,求出覆盖所有路径所需的最小点数即为解。便转化为最小点覆盖问题。/* 题意:有两台机器A和B,分别有n种和m种不同的模式,有k个工作,每个工作都可以在 那两个机器的某种特定的模式下处理,如job[0]既可以在A机器的3号模式下处理, 也可以在B机器的4号模式下处理,机器的工作

2012-08-12 09:30:50 457

转载 Hash函数的设计优化

转自:国家集训队2005论文集 李羽修【摘要】Hash是一种在信息学竞赛中经常用到的数据结构。一个好的Hash函数可以很大程度上提高程序的整体时间效率和空间效率。本文对面向各种不同标本(关键值)的Hash函数进行讨论,并对多种常用的Hash函数进行了分析和总结。 【关键字】Hash 函数,字符串,整数,实数,排列组合 【正文】对于一个Hash函数,评价其优劣的标准应

2012-08-11 15:49:01 1444

原创 poj1840 Eqs

使用hash实现,原式:a1*x1^3+a2*x2^3+a3*x3^3+a4*x4^3+a5*x5^3=0可以推出:a1*x1^3+a2*x2^3 = -(a3*x3^3+a4*x4^3+a5*x5^3) 把O(n^5)转化为O(n^3)+O(n^2)了#includeusing namespace std;short h[25000001];int main(){ int a1

2012-08-11 14:24:12 383

原创 poj 1236 Network of Schools

题意:给定一个有向图,求下面两个量:1 :最少从几个点出发能遍历全图。2 :最少加几条边能使原图强联通。解法:“最少从几个点出发能遍历全图”的点数是将原图缩点后入度为零的点的个数。“最少加几条边能使原图强联通”的边数是将原图缩点后出度为零的点和入读为零的点中的最大值。(注意强联通图的情况)#includeusing namesp

2012-08-10 16:49:07 475

原创 poj 2553 The Bottom of a Graph

题意:给一个定义bottom(G)={v∈V|∀w∈V:(v→w)⇒(w→v)},意思就是在一个有向图中存在一种点v1,这种点满足:v1可达的点集V中所有点,都有一条路径回到v1。先要找出所有的点,按字典序输出。思路:找到出度为0的强联通分量,按字典叙输出其中的点。#includeusing namespace std;const int MAXN =10001;int DF

2012-08-09 03:55:13 396

原创 poj 2186 Popular Cows

使用Tarjan+缩点 完成,算是一道水题,但这题貌似不能用邻接矩阵,会超内存,所以我使用了链表。大概的思路就是求出所有的强联通分量,然后把强联通分量缩为一个点,判断这些新点的出度,如果只有一个出度为0,则输出这个点代表的联通分量中所有点的个数;如果有多个出度为0的点,则输出0。#includeusing namespace std;const int MAXN =10001;int

2012-08-08 22:56:07 475

原创 poj 2983 Is the Information Reliable?

这题参考了别人的思路:由于P  A  B  X 指“确定A到B的距离(边权)为X”从P  A  B  X得到的差分系统为dist[A] - dist[B] >= X  &&  dist[A] - dist[B] 等价于dist[B]  则if(dist[B] > dist[A]-X) 松弛:dist[B] = dist[A]-X由于 V  A  B指“只知道

2012-08-06 10:57:54 356

原创 poj1201

http://blog.csdn.net/rookie_algo/article/details/7833801和1716一样,差分约束,列出以下式子:1、s[bi]-s[ai-1]>=22、s[i+1]-s[i]>=03、s[i+1]-s[i]#includeusing namespace std;const int MAXN = 50001;

2012-08-06 09:58:47 461

原创 poj1716 Integer Intervals

初学差分约束,差分约束的概念还是比较好理解的,但是在题目中的应用对我来说还是不熟练。这道题就是用一个数组dis[x]来记录0-X区间内,点的个数,那么列出3个式子:1、s[bi]-s[ai-1]>=22、s[i+1]-s[i]>=03、s[i+1]-s[i]#includeusing namespace std;int dis[10001];struct edge{

2012-08-06 09:10:52 484

原创 poj 1815 Friendship

拆点法,把一个点拆为两个,之间的流量为点的权值,这样求割点的集合就变为了求割边的集合。#includeusing namespace std;const int maxn=405;const int INF=0x7ffffff;int c[maxn][maxn],dep[maxn],q[maxn],flow[maxn][maxn],num[maxn],pre[maxn];void bfs

2012-08-04 19:11:59 889

原创 poj Secret Milking Machine

题意:有n个点,之间有p条路径(无向,可重复),要求求出要同时存在T条路径(每条边都不重复的条件下),路径中边的最短距离。方法:二分搜索+最大流,二分枚举所有的距离,求出最短的,再构造网络(存在一条边两点之间的通路小于枚举值,两点间的流量自加1),最后的最大流如果是大于#include#includeusing namespace std;const int inf = 0x7fffff

2012-08-02 21:17:18 543

原创 poj3204 Ikki's Story I - Road Reconstruction

题意:有一个国家,有一个物资提供城市(编号为0),它负责通过城市间的路线向该国首都(编号为n-1)传送物资,但这些城市间的路线上传送的物资的量是有限的,所以传到首都的物资太少,所以国王想花钱修某些城市间的道路,使之传送的物资量增多以增加首都物资获得量。为了避免浪费钱力,他想找出那些只要重建(扩建)就能使首都物资获得量增加的道路。问这样的道理有几条。思路:既然首都的物资获得量在未扩建前有

2012-08-02 03:30:51 1012

原创 poj2112 Optimal Milking

由于之前没做过多重二分匹配问题,所以一直没有头绪,折磨了我好久,后来看到别人用二分查找+floyd+网络流 来实现,自己也就用这种方法A掉了。具体方法是:1)先用floyd求到任意milking machine到 任意奶牛之间距离2)查找到最长的一条距离,并记录下来为max,那么我们就可以知道,要求的值就是在[0,max]区间3)下面就开始二分查找了,找到0到max之间,最小的

2012-08-01 09:22:55 1350

空空如也

空空如也

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

TA关注的人

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