自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丿聪丶

每发一篇文章,就意味着我向成功更近了一步!

  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 poj 1466 匈牙利(最大独立集)

题意:在给出的学生里求出最大的数m,使得m中任意两个学生都不存在romantically involved(有关系),也就是求这个二分图的最大独立集,这个题的最大独立集等于N-最大匹配/2。因为在建图的时候人数扩大了一倍。#includeusing namespace std;bool g[505][505],vis[505];int link[505];int n;bool dfs

2012-01-31 18:51:06 313

原创 poj 1469 匈牙利模版题

题意:其实不太懂。。。给出课程数,学生数。然后给出学生的选课情况,求最大匹配数是否等于课程数。#includeusing namespace std;int link[300];bool g[300][300],vis[300];int n,m;bool dfs(int u){ int v; for(v=1;v<=m;v++) if(g[u][v]&&!vis[v]

2012-01-31 12:57:08 294

转载 匈牙利算法及其模版

原文地址:匈牙利算法学习资料(转载)作者:依然二分图最大匹配的匈牙利算法:    二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联在两个顶点中,恰好一个属于集合X,另一个属于集合Y。 最大匹配: 图中包含边数最多的匹配称为图的最大匹配。  完美匹配: 如果所有点都在匹配边上,称这个最大匹配是完美匹配。 最小覆盖:在

2012-01-31 12:15:18 487

原创 codeforces 字符串

C. Anagram Searchtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputA string t is called an anagram of the st

2012-01-30 11:52:56 598

原创 poj 1094 拓扑排序

题意:开始不怎么理解题意,看别人代码大概了解一下,敲完了一直WA。输入n和m,以及m行带两个大写字母和"B,经过一些大小比较后又出现比B小,比A大的字母),输出 :Inconsistency found after i relations,如果第i行就能判断出所有n个字母的大小关系,输出:Sorted sequence determined after i relations 以及升序序列。如

2012-01-18 18:10:12 364

原创 hdu 4112 2011 ACM成都现场赛B

做完这道题让我深刻理解了log的使用,尽管我没有用它来写,把边长除以二再除以二一直除到一为止,就相当于log(2 底 边长).#include#includeusing namespace std;int main(){ int t; __int64 a,b,c,hand,knife,v; scanf("%d",&t); for(int i=1;i<=t

2012-01-18 11:03:16 1375

原创 poj 2503 qsort+bsearch

题意:输入一个英文单词+空格+外文单词,要求输入外文单词找到对应的英文单词,如果找不到输出eh.因为单词的输入量是100000,并且还要考虑单词匹配的问题,所以简单的算法应该会超时,本人没有去写。通过这道题学到了sscanf(),qsort(),bsearch()的用法,感觉比较爽,这道题就是把单词进行快排,有序了以后,然后再二分查找从而节省时间。#include#includeu

2012-01-18 11:01:28 384

原创 poj 1001 高精度R^N

import java.io.*;import java.util.*;import java.math.*;import java.text.*;public class Main {public static void main(String[] args) { Scanner cin=new Scanner(System.in); BigDecimal r,R;

2012-01-18 10:59:34 539

原创 hdu 1753 高精度小数相加

import java.io.*;import java.math.*;import java.util.*;import java.text.*;public class Main {public static void main(String[] args) {Scanner cin=new Scanner(System.in);BigDecimal a,b;while(ci

2012-01-18 10:59:01 511

原创 poj 1503 大数相加

import java.io.*;import java.math.*;import java.util.*;import java.text.*;public class first {public static void main(String[] args) { Scanner cin=new Scanner(new BufferedInputStream(Syste

2012-01-18 10:58:30 368

原创 hdu 1002 大数相加

import java.io.*;import java.util.*;import java.math.*;import java.text.*;public class Main {public static void main(String[] args) { Scanner cin=new Scanner(System.in); int t

2012-01-18 10:57:50 390

原创 hdu 1232 畅通工程

题意:不解释思路:并查集最基本的应用,m个城市需要建造m-1条道路,如果不连通(根节点不相同)那么就合并,就少建一条道路。#includeusing namespace std;int pre[1005];int find(int x)//非递归的查集 { int r=x; while(pre[r]!=r) r=pre[r]; int j=x; while(j!=r)

2012-01-18 10:56:42 344

原创 poj 1182 食物链(并查集+向量偏移)

这道食物链实在让我纠结了好久。。。1182 食物链(并查集+向量偏移)" title="poj 1182 食物链(并查集+向量偏移)" style="margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px;

2012-01-18 10:53:42 1227

原创 hdu 1285 拓扑排序(模版)

先说说拓扑排序吧,网上说的文邹邹的偏序之类的话看不懂,大致算法就是,有N个节点的有向图,每扫一次图,找出一个入度为0的点,并且剪切掉,也就是把这个点相连的边去掉,并把相连接的点的入度减一。图中不能有孤立的节点,有重边的话,入度也不累加。本题思路:给出比赛的情况,按排名输出。思路:拓扑排序,A胜B那么就A指向B。这个点被指的次数少,也就是输的场次少,也就是用拓扑排序就可以输出次序。#in

2012-01-18 10:43:37 636

原创 poj 1251 1258 2421 2485(最小生成树prime)

poj 1251此题注意输入,还有注意map[i][i]=0,基本就可以AC了#includeusing namespace std;int map[30][30];int lowcost[30];bool vis[30];int n;int prime(){ int i,j,k,min,sum=0; for(i=1;i<=n;i++) lowcost[i]=m

2012-01-18 10:42:34 339

原创 poj 2421 最小生成树(prime) 模版题

题意:给出一个矩阵,代表着城镇直接的距离,之后给出一些已经连通的点,然后求,让所有点都连通的最小花费思路:赤裸裸的最小生成树。。。prime水之。#include#define max 105#define inf 0xffffffint vis[max],map[max][max],lowcost[max],n;//lowcost[i]记录的已经标记的节点(S1)到其它节点i(S

2012-01-18 10:39:56 575

原创 poj 1502 最短路(类似于1125)

题意:就是求1到其它节点最短路中最大的,因为消息可以同时传播,类似于poj 1125思路:floyd,最后枚举1到其它节点的最短路,求出其中最大的输出#include#include#define inf 0xfffffffusing namespace std;int dist[105][105];int n;void floyd(){ int i,j,k; for

2012-01-18 10:38:40 477

原创 poj 2240 floyd(货币)

题意:就是求一种货币经过兑换是否可以升值。思路:floyd,把dist[i][j]初始化为1.0,然后看是否存在dist[i][j]>1的情况(升值),把floyd函数略作修改。这道题,存在 一种情况 Usdollar 1.4 Usdollar这种情况。。。因为它,WA了好久。。#includeusing namespace std;char str[40][40];double

2012-01-18 10:37:34 382

原创 poj 1062 经典最短路(酋长聘礼)

题意:中文题。。不解释。。思路:网上看的,也有不理解的地方,感谢“暴风雪”在群里的讲解,膜拜~1062 经典最短路(酋长聘礼)" title="poj 1062 经典最短路(酋长聘礼)" style="margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-ri

2012-01-18 10:36:42 437

原创 poj 2387 dijkstra(注意判重)

题意:给出两个整数T,N,然后输入一些点直接的距离,求N和1之间的最短距离。。思路:dijkstra求单源最短路,但是要注意判重。#includeusing namespace std;int dist[1010];int vis[1010];int map[1010][1010];int n;void dijkstra(int st){ int i,j,k,min;

2012-01-18 10:35:44 1833

原创 poj 1125 dijkstra

题意:用floyd做过,再用dijkstra交一次。。下面的迪杰斯特拉函数可暂时做模版吧。。#include#define max 105#define inf 0xffffffusing namespace std;int tim[max][max];int dijkstra(int st,int n){ int i,dist[max],vis[max]={0},min,

2012-01-18 10:34:45 403

原创 poj 1603 floyd

题意:这题的输入是真你妹儿的坑爹啊~ 让我调这么久。。。就是各个城镇边权都是1,最后求a to b 的最短距离dist[a][b]思路:Floyd #include#define inf 1000000using namespace std;int dist[23][23];void floyd(){ int i,j,k; for(k=1;k<=20;k++) fo

2012-01-18 10:33:46 321

原创 poj 1847 floyd

题意:开始没读懂题,后来网上搜的题意。。鄙视自己的英语哈1847 floyd" title="poj 1847 floyd" style="margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padd

2012-01-18 10:32:25 401

原创 poj1125 最短路floyd

题意:股票经纪人传递消息,消息可以同时传播,输入传递信息的人数,然后每一行开头输入一个t,随后有t对数k  h,代表了这个股票经纪人把消息传播给k需要的时间是h.求让哪个股票经纪人传播消息,可以把消息最快传播到每一个人那里。思路:Flyod把  dist[i][j]每两个人传播消息耗费的最小时间矩阵求出来,然后每一行求出最大的时间代表了,这个人把消息传播出去所用的最大时间(至少用这么多的时间他

2012-01-18 10:30:46 428

原创 poj 3450 KMP+暴力枚举(类似于3080)

类似于3080 稍作改动,即可AC。。#includeusing namespace std;int next[205];char str[205];char ans[205];char s[5050][205];int h;int le;void get_next(char *T,int len){ int j=0,k=-1; next[0]=-1; while

2012-01-18 02:07:30 667

原创 poj 3080 KMP+暴力

题意:求给出字符串的公共子序列。。思路:把第一个字符串的子序列作为KMP的模式串,依次和其它的字符串匹配,求出长度最长的,如果长度相同的话,取字典序较小的。#includeusing namespace std;int next[65];char str[65];char ans[65];char s[15][65];int h;void get_next(char *T,i

2012-01-18 02:06:05 469

原创 poj 3461 KMP

题意:输入案例次数,每一次的案例输入两个字符串,求第一个字符串在第二个字符串里出现了几次。思路:KMP 稍作改动可以AC#includeusing namespace std;char W[10005];int next[10005];char T[1000005];int len1,len2;int step;void get_next(){ int j=0,

2012-01-18 02:05:07 450

原创 hdu 2752 KMP(前后缀)

题意:给出字符串,求所有既是前缀又是后缀的串的大小。思路:KMP的next[]应用。。例如题目给出的串  ababcababababcabab对应的next值  -1,0,0,1,2,0,1,2,3,4,3,4,3,4,5,6,7,8,9(next[18])next[18]=9,代表着位置18以前的既是前缀,又是后缀的串最大是9(不包括本身),然后找next[9]=4,也就是位

2012-01-18 02:03:52 739

原创 hdu 1711 裸KMP

题意:基本是裸的KMP了 不解释了,但是有个地方需要注意下,如果不改就一直WA  不知道怎么回事,如果路过的高手知道的话,告诉我哈~#includeusing namespace std;int next[10010];int T[10010];int S[1000010];int m,n;void get_next(){ int j=0,k=-1; next[0]=-1

2012-01-18 02:02:31 513

原创 hdu 1358 KMP

题意:跟poj 2406差不多思路:KMP的 len%(len-next[len])应用 ,不过这次要从2到len循环 判断,然后一次输出。。#includeusing namespace std;int next[1000010];char s[1000010];int n;void get_next(){ int j=0,k=-1; next[0]=-1; wh

2012-01-18 02:01:14 367

原创 poj 2406 KMP应用

题意:根据题目给出的规则,一个字符串表示成a*n,求最大的n.思路:KMP的next[]的应用,不是很懂,看了许多别人的代码。其中if(len%(len-next[len])==0)这一句是精华所在,对其理解还不是很到位。索性记住算了。。。例如:next[6]=3;  对于s1s2s3s4s5s6s7s8s9  如果条件成立的话,意味着s1s2s3=s4s5s6=s7s8s9。转载了一篇写

2012-01-18 01:59:53 343

原创 hdu 1198 dfs(还是水坑变型题)农田灌溉

题意:已知一些农田的灌溉方式,题中给出m*n大小的农田,求最少设置多少水源,可以把农田全部灌溉。。思路:DFS,跟做过的那个“水坑数”差不多,但是“灌溉方式”和深搜条件不好把握。。int pipe[11][4]={{1,0,1,0},{1,0,0,1},{0,1,1,0},{0,1,0,1},{1,1,0,0},{0,0,1,1},{1,0,1,1},{1,1,1,0},{0,1,

2012-01-18 01:57:35 561

原创 hdu 1241 dfs 类似于(POJ水坑数)

题意:求@的堆数,只要周围没有相邻的@ 那么就算一堆。。思路:DFS,类似于POJ解题报告里的深搜水坑数,不解释。。直接上代码。#includeusing namespace std;int vis[100][100];char map[100][100];int dir[8][2]={{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{

2012-01-18 01:56:23 477

原创 poj 3984 BFS+DFS(保存路径)

题意:给出的矩阵0可以走,1不可以走,求(0,0)到(4,4)的最短路,并输出一条最短路径。思路:用BFS求最短路,同时各个点的前驱节点,也就保存了路径,最后DFS从(4,4)搜回去,就可以输出路径了。#includeusing namespace std;struct point{ int x,y; int pre_x,pre_y;//图上的点及其前驱节点}node[5]

2012-01-18 01:55:36 1257

原创 hdu 1253 三维bfs

题意:人所在位置是(0,0,0),出口在(a-1,b-1,c-1),求到达出口最小步数,并和给出的t做比较,小于等于的时候输出最小步数。思路:和二维BFS差不多。。#includeusing namespace std;struct point//三维的{ int x,y,z; int step;};int dx[6]={1,-1,0,0,0,0};int dy[6]=

2012-01-18 01:54:21 379

原创 hdu1258/poj1564 dfs

题意:给出数t,然后是n个数,求这n个数中相加之和等于t的所有情况思路:DFS同时并记录其中判重的地方很巧妙。。参考的网上的代码if(a[j]!=a[j-1])意思是如果这个数a[j]和上一个数相同,那么记录数组的同一个位置就没有必要再放入这个数。例如:4 3 3 2构成和是7,tmp数组的第二个位置放了3,则后面的那个3就没有必要再放入记录数组的第二个位置了。(可能会放到后面的位

2012-01-18 01:53:03 951 1

原创 hdu 1312 bfs

题意:输入个矩阵,@是人所在的位置,人只能左右和上下走,且只能走"."所在的位置,问遍历所有"."需要的步数。思路:暴力BFS,找到一个"."则步数+1。。#includeusing namespace std;struct point{ int x,y;};int dx[4]={-1,0,1,0};int dy[4]={0,1,0,-1};char map[21][21

2012-01-18 01:50:51 458

原创 hdu 1495 bfs 非常可乐

题意:输入s,m,n三个数,分别代表可乐,和两个杯子,三个容器可以互相倒,问能不能把s平分,能的话输出最小步数,不能就输出NO。思路:BFS,一共有六种情况,s->m(s向m里倒),s->n,m->n,m->s,n->s,n->m。用BFS暴搜,从队列里每取出一个,就用这六种情况扩展一次,并把步数加一,直到搜到终止状态。STL版本:#include#include#define M

2012-01-18 01:49:29 543

原创 poj 1915 bfs(STL的queue)

题意:给你个棋盘,然后给你初始点和终点,根据规则,求初始点跳到终点的最小步数。。思路:广搜,每扩展一层,步数加一。。用queue写的~~#include#include#define MAX 305using namespace std;struct point{ int x,y; int step;};//到达的点,和需要的步数 int dx[8]={-2,

2012-01-18 01:44:59 743

原创 hdu 1016 dfs(素数环)

题意:输入一个数n,把1到n的自然数放到一个环里,保证相邻的两个数的和是素数。思路:素数打表+深搜。#includeusing namespace std;int a[20],vis[20],isprime[45]={0},n;void get_prime(){ int i,j; for(i=2;i<8;i++) if(!isprime[i]) for(j

2012-01-18 01:42:47 3159

空空如也

空空如也

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

TA关注的人

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