自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HDU-2063-最大匹配

很经典的一道最大匹配问题,算法主要是考虑冲突间的问题详细解说请看代码#include#include#includeusing namespace std;#define MAX 1005int map[MAX][MAX],dis[MAX],inq[MAX];int n,m;int find(int t){ int j; for(j=1;j<=n;j++)

2013-08-29 20:00:59 697

原创 hdu-2066-最短路程问题

起点成市有多个,抵达城市也有多个,问当中最最最短的是哪一条。每一种情况都得考虑,有n*m种情况。这是加强版的最短路径问题。题目不难,需要耐心。以下是AC代码,没怎么优化。请耐心看。#include#include#includeusing namespace std;#define MAX 1005#define inf 99999int len,e;int map[MAX][M

2013-08-29 19:39:40 821

原创 HDU-2647拓扑排序

这道题不能用矩阵表示,因为1w*1w绝对超内存,分析数据,前一个a的钱要多于后一个b,所以我们要把b作为出度,a为入度,如果不明白这个地方,举例:b——>a——>c——>d ,b为888,钱数逐渐上升,如果反过来a为出度就不符合题意啦。。。还有一个地方需要注意:判断输出-1的情况不能只判断没有一个入度为0的点,因为有可能在中间就出现矛盾了,如:a——>b——>c——>d——>c 有入度为0的点

2013-08-29 17:17:57 1012

原创 HDU-3790-最短路径

题目要求先选最短的道路,如果没有最短路可选,即几条道路都相等,再考花费。用Dijkstra更快一些。在选出最短边的同时加上对应的花费就可以了。详细请看代码:#include#include#includeusing namespace std;#define MAX 1002#define inf 999999int map[MAX][MAX],cost[MAX][MAX];in

2013-08-29 09:38:34 779

原创 poj-2560最小生成树

题目大意:有那么多个点,每个点间都可连线,求出他们的最小生成树。解题思路:因为每个点间都能够连线,我们又不知道最后需要的是哪条,所以每条边都需要考虑。用sqrt开方求出每两个点间的距离,即他们间的权值,再转化为矩阵图,用prim就能轻松解决啦!#include#include#include#includeusing namespace std;#define MAX 102f

2013-08-28 20:51:11 760

原创 poj1287prim

最小生成树prim算法,一道模板题。#include#include#includeusing namespace std;#define inf 9999999int map[301][301],flag[301],vist[301],n,sum;void prim(){ int i,j,v,MIN;sum=0; memset(vist,0,sizeof(vis

2013-08-28 20:34:34 531

原创 HDU-2094产生冠军-拓扑排序

解题思路:记录每个选手的入度数,入度为0的人即是没有人打败过他的。1.如果有超过1个入度为0的,就是有多个人没有被打败,当然就无法判断谁是冠军啦~   2.如果没有一个入度为0的人,就是每个人都被打败过,也没有冠军。 3.如果入度为0的人只有一个,那个人就是冠军啦#include#include#includeusing namespace std;#define MAX 1005i

2013-08-28 13:51:33 935

原创 HDU-1285简单的拓扑排序

拓扑排序简单来说就是把一个图的所有节点排序,使得每一条有向边(u,v)对应的u都排在v的前面。1、拓扑排序在有向无环图中才能排出有效的序列,否则能判断该有向图有环。 2、如果输入的有向图中的点,不存在入度为0的点,则该有向图存在回路 3、如果存在的入度为0的点大于一个,则该有向图肯定不存在一个可以确定的拓扑序列但并不妨碍拓扑排序 #include#includeusing na

2013-08-28 10:50:42 621

原创 HDU-3018几笔画问题

题目大意:问由几条道路组成的图需要几笔画完成解题思路:如果图是一条链或欧拉回路只需一笔画,但如果不连通,分为几个小子图,怎么解决??每个子图中的奇度点数除以2,然后把所有块的这个奇度点数除以2 加起来就是总共要几笔画;#include#includeusing namespace std;#define MAX 100001int father[MAX],node[MAX],flag[

2013-08-28 09:21:10 678 1

原创 HDU1116-欧拉回路

题目大意很简单:给出几个单词,问他们的首尾字母是否相连。很基础的一道欧拉回路题。判断为Yes的情况:首先必须是连通的 其次全部点入度=出度或有两个点入度-出度=1,出度-入度=1;入度=出度的情况为构成了回路,例如 abc->cde->efa 另外一种便是如同一条链,例如:acm->malform->mouse 解题思路:用并查集找出各个点的父亲,即将相关联的点关联合并在一起,判断是否为连通的,再

2013-08-27 22:19:48 521

原创 HDU-1498二分最大匹配

题目大意;对n*n的气球执行k次操作,每次操作可以击破一排或一列气球,输出k次操作后未能完全击破的气球编号,注意按循序输出。如果没有则输出-1。解题思路:用二分匹配求出每种气球的最大匹配Mi,如果Mi大于k,则输出气球编号,如果没有Mi大于k,则输出-1;#include#include#include#includeusing namespace std;int map[101][

2013-08-27 20:00:12 501 1

原创 poj2388排序中位数

#include#include#includeusing namespace std;int main(){ int n,f[10005],i; while(~scanf("%d",&n)) { for(i=0;i<n;i++) scanf("%d",&f[i]); sort(f,f+n); cout<<f[n/2]<<e

2013-07-30 10:15:53 567

原创 poj1936找子串

#include#include#includeusing namespace std;int main(){ char s[100005],t[100005]; char *ps,*pt; while(~scanf("%s%s",s,t)) { ps=s;pt=t; while(*pt) {

2013-07-30 10:02:37 547

原创 poj33080 超暴力

#include#include#includeusing namespace std;int main(){    int t,n,i,j,l,flg;    char ch[100];    string str[20],s;    scanf("%d",&t);    while(t--)    {        string ans; 

2013-07-29 22:08:26 480

原创 poj1035_Spell checker

没什么难度,暴力AC#include#include#includeusing namespace std;string d[10100]; //把字典定义在主函数外int n;void get_d() //输入字典{ n=0; char ch[20]; while(scanf("%s",ch)) { d[n]=ch;

2013-07-29 17:09:15 545

空空如也

空空如也

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

TA关注的人

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