自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Czy

A stupid bird...

  • 博客(18)
  • 资源 (6)
  • 收藏
  • 关注

原创 ZOJ 3368 Trick or Treat(二分答案)

//二分答案,注意精度只需要满足1e-5,无需跟sample一样也可AC//题意是求一个点(x,0)使得其他点到它的最大距离最小#include#includeusing namespace std;struct coord{ double x,y;}A[50005];double ans,l,r,mid,X;int ansP,n;const double eps = 1e-6;//精度设置void cal(double mid){ ans = 0;

2010-08-28 21:00:00 1232

原创 POJ 2488 A Knight's Journey(DFS——骑士周游问题)

//要按字典序输出,所以要注意搜索顺序//最后一行不能留空行//唉,搜都要写这么久,还WA了那么多次,太弱了我#includeusing namespace std;int Case,X,Y;bool vis[50][50],ok;int dir[8][2] = {-1,-2,1,-2,-2,-1,2,-1,-2,1,2,1,-1,2,1,2};int path[30][2];bool legal(int x,int y){ if(x X || y Y)

2010-08-24 00:54:00 1239

原创 POJ 2594 Treasure Exploration(传递闭包+最小路径覆盖)

//传递闭包的建立(Floyd) + 最小路径覆盖//这题有别于1422,原因在于它是一个有向图,而非DAG,机器人可以绕一圈回来在走其他路//the roads of two different robots may contain some same point.//例如1->2,2->3,3->4,4->2,2->5这一个有向图,这个图只要1个机器人就可以走完所有路,但如果不建立传递闭包//直接根据边进行匹配,那样得出来的结果是不正确的,因为平时所指的路径覆盖,顶点最多只经过一次,而这

2010-08-18 09:35:00 1551 1

原创 POJ 3216 Repairing Company(Floyd + 二分图最大匹配)

//Floyd + 二分图最大匹配//将任务抽象为点,如果任务i完成后还能够赶上任务j的开始时间,则在i-->j连上一条边//题意是要求分配最少的维修工完成维修工作,那么最坏情况就是每个任务分配一个,共M个//但是有时多个任务能够由一个维修工完成,如果任务i和任务j之间有边相连,意味着i,j可以同时完成//那么可以减少一个维修工,这样一来,寻找最大的匹配,再用M减去最大匹配数,所得的结果就是最少的维修工数量了//前面必须用Floyd算法求出任意两点的最短距离,将-1转化为INF再处理即可

2010-08-18 08:23:00 1475

原创 POJ 2135 Farm Tour(最小费用流)

//最小费用流//构图关键是添加超级源点,超级汇点//题意是要找一条可以再终点往返的路,这2条路距离之和最短且每条路只能经过一次//第一步将问题转化为找2条从起点到终点//第二步与费用流挂钩,将距离当做费用,将容量设置为1是为了保证每条路只经过一次//超级源点和起点的容量为2,终点和超级汇点容量为2,使得最多找2条路//最终的mincost即为答案//注意双向边这个条件,当出现双向边或多重边时,就得用邻接表储存了#include#includeusing namesp

2010-08-17 01:34:00 876

原创 ZOJ 3362 Beer Problem(最小费用流)

//最裸的最小费用流#include#includeusing namespace std;const int MAXN = 105;const int MAXM = 8100;const int INF = 1000000000;int mincost,maxflow;int N,M;int U[MAXM],V[MAXM],cap[MAXM],flow[MAXM],cost[MAXM],next[MAXM];int head[MAXN],pre[MAXN],Edge

2010-08-17 01:27:00 917

原创 POJ 2516 Minimum Cost(二分图最小权匹配——KM算法)

//最小权匹配(KM算法)//构图是关键,又是拆点这个思想。因为商品数量很少,最多才3,所以将一个商品拆成3个点//一开始我将K种商品全部拆出来,想一次KM解决,结果构出来的图最坏情况是50*50*3 和50*50*3 的二部图来匹配最优权值//在经过O(n^3)的KM + 多组数据,结果毫无疑问的TLE了//此题的关键是将K种商品独立出来求解,因为K种商品相互无影响//将他们独立出来分别进行K次KM算法,大大降低了时间和空间//50*3和50*3的二部图最小权匹配//复杂度是O

2010-08-15 02:26:00 2470 2

原创 POJ 2455 Secret Milking Machine(二分答案+最大流)

感谢怀哥提供的经典好题,让我学会了二分答案这个思想!//二分答案+最大流//终于见识到传说中的二分答案这个方法了//如果没有二分答案这个提示,这道题我怎么也不会往最大流去想//思路是这样的,将所有边权值排序,记录边权值的上界和下界//接着开始二分答案,依照枚举的这个答案构图,即将边权值最大值小于等于枚举的这个答案的边加进图中//(双向边)并将他们的容量设为1,有多重边就将容量再+1,接着FF最大流,如果最大流>=T,则说明答案是满足条件的//记住此时未必是正确答案,答案还可以再小。继

2010-08-15 02:16:00 1669 1

原创 POJ 2195 Going Home(KM算法——二分图最小权匹配)

//最小权匹配(KM算法)#include#include#includeusing namespace std;const int MAX = 105;const int INF = 2147483647;char G[MAX][MAX];int lx[MAX],ly[MAX],xMatch[MAX],yMatch[MAX];bool vis_x[MAX],vis_y[MAX];int W[MAX][MAX];int slack,ans,N,R,C;stru

2010-08-13 18:11:00 938

转载 KMP算法详解(转自Matrix67大牛)

如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。    我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向你喜欢的人表白的话,我的名字是你的告白语中的子串吗?”    解决这类问题,通常我们的方法是枚举从A串的什么位置起

2010-08-07 00:06:00 1045

原创 POJ 1971 Parallelogram Counting(枚举+HASH)

//枚举 + HASH//和2002很像,这次是找平行四边形,规模1000,因此只能采用O(N^2)//一开始我是想到枚举3个点确定2条边,由这2条边确定第4的点,再用HASH判断是否存在,但是O(n^3)绝对TLE//再想了一下,发现可以枚举对角线,进而确定中点,2条直线如果中点相同,那么必定确定一个平行四边形//根据这个性质来对边的中点值进行HASH就可以了,发现一个中点值就插入,并计数,最后答案就是这些计数的总和//效率的关键是HASH函数的设计,我用折叠法的HASH随便搞了一通,

2010-08-06 12:28:00 2183 4

原创 POJ 2263 Heavy Cargo(图的遍历)

//图的遍历//CITY记录到当前城市的的最大运载量//状态转移方程,city[y] = max(city[y],min(r[x->y],city[x]);#include#include#include#includeusing namespace std;const int MAX = 205;const int MAXM = 40000;const int INF = 1000000000;int W[MAXM],V[MAXM],next[MAXM],hea

2010-08-06 02:46:00 990

原创 POJ 2503 Babelfish(HASH)

//字典HASH简单应用,这题也可用Trie做//学会了SSCANF的使用,难点在于处理数据的读入#includeusing namespace std;const int MAXHASH = 100003;int head[MAXHASH],next[MAXHASH];int m;struct Dic{ char english[11]; char foreign[11];}dic[MAXHASH];int hash(char *str)//ELFHash函

2010-08-06 01:38:00 1004

原创 POJ 1840 Eqs(枚举+HASH)

//枚举 + HASH//第一个优化,先预处理立方,先打个表//第二个优化,拆分枚举,先枚举X1,X2,再枚举X3,X4,X5,这样将复杂度降为O(100^3)//第三个优化,搜索剪枝,枚举X1,X2的时候记录结果的最大最小值,当在枚举X3,X4,X5的时候如果超过这个范围则跳出//在判重的时候使用HASH,简单的取模HASH函数即可//处理冲突采用拉链法//344MS#include#define MAXHASH 916549#define NEG 12500000

2010-08-05 20:25:00 896

原创 POJ 3274 Gold Balanced Lineup(HASH)

//HASH//确实想不到HASH可以用在这么地方,需要把问题进行转化,看了别人解题报告才会写的//题意是求一个最长的范围,在这个范围内各种FEATRUE出现的次数相同//很直接想到将他们转化成位然后存起来,然后每位从1到N累加,但是规模还是10W,要找这么大规模中2个数相减他们的差是相同的,并且距离最远的,是O(n^2)//对于SAMPLE的数据的处理//前导零 000 000//7---->111---->111---->000//6---->110--

2010-08-05 11:23:00 2941 2

原创 POJ 3349 Snowflake Snow Snowflakes(HASH)

#include#include#includeusing namespace std;const int MAXHASH = 100003;bool vis[MAXHASH];bool ok;int state[MAXHASH][6];//存放雪花形状的状态int head[MAXHASH],next[MAXHASH];int n;unsigned int hash(int st[])//求和取模的哈希函数{ unsigned int h = 0; fo

2010-08-04 12:47:00 991 2

原创 POJ 2513 Colored Sticks(Trie+并查集+欧拉回路)

//TRIE + 并查集 + 欧拉回路//A了这道题,学会了用并查集判断无向图的连通性#include#include#includeusing namespace std;const int MAX = 500003;int N;int fa[MAX];int deg[MAX];struct trie{ int color; trie *next[26]; trie() { color = 0; memset(next,0,sizeo

2010-08-03 23:29:00 807

原创 POJ 2075 Tangled in Cables(最小生成树)

//最小生成树Kruscal#include#include#include#include#include#define eps 1e-8//精度处理using namespace std;int n,m;struct Edge{ int u,v; double w; Edge(int uu,int vv,double ww) { u = uu; v = vv; w = ww; }};int fa[100000];vector

2010-08-01 23:17:00 1092

程序设计导引及在线实践

程序设计导引及在线实践,poj上推荐的书,十分适合ACM初学者

2010-04-25

浙江大学ACM例程模板

浙江大学ACM专用模板,十分深入,适合高水平选手使用

2010-04-25

吉林大学ACM例程模板

一份相当不错,相当全面的ACM模板,十分实用参加ACM比赛的人,十分推荐。

2010-04-25

谭浩强C++程序设计

谭浩强C++程序设计 内附图片,源代码,正文 PDF格式,内容实用简洁明了 是一本不错的学习C++的入门书籍

2010-01-02

空空如也

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

TA关注的人

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