自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Since_natural_ran

Have a pure heart to overcome everything .

  • 博客(22)
  • 收藏
  • 关注

原创 POJ 3013 (变形spfa)

题意:给出n个点,m个边。给出每个点的权值,每个边的权值。求建立一棵树,根节点是1,求这棵树的最小费用,费用=(每条最短路*子树中各顶点的权值)之和。数组模拟表头,很多需要注意的。加油!#include#include#include#include#define inf 0xFFFFFFFF //很大40多亿#define maxn 50005u

2016-10-31 20:17:52 224

原创 POJ 3687 (topsort)

题意:题意很容易搞错。问的是每个球的重量排名。按顺序输出。输入的a,b意思是a比b轻。而有些球没有排名则按照重量最大算,从低到高输出。思路:很巧妙的思路。逆向遍历。并且建图的时候也是逆向建图,刚好两个逆向相对应。#include#includeint gragh[205][205];int degree[205];int a[205];int n,m;int

2016-10-31 18:33:34 276

原创 POJ1511

题意:单向图,n个点m条路。问题是求从1到其它点一来一回共多少距离。按照dijkstra,floyd,bellman都很容易超时。最开始选择的spfa是用vector实现的,也超时了。。。又用数组模拟链表。#include#include#include#include#define inf 0xFFFFFFFF //大概40多亿#define maxn

2016-10-30 13:46:28 534

原创 HDU 2544(简单spfa)

汉语题。思路:暴力spfa。不需要变形,适合入门。#include#include#include#include#include#define inf 0x3f3f3f3fusing namespace std;int dis[105],visit[105];int n,m;class Node{public: int e,v;

2016-10-28 13:14:09 483

原创 POJ 3660(floyd)

题意:n头牛比赛有m场胜负,判断有几头牛的排名知道。思路:只是分析一下情况就行。用floyd很适合。注意:牛对自己不比赛。#include#includeint gragh[105][105];int n,m;int ans;void floyd(){ int i,j,k; for(k = 1;k <= n; k++) f

2016-10-27 18:11:01 236

原创 POJ1502(暴力floyd)

题意:题意求从第一点到其它点的最短路中最大的。很明显,很暴力。注意输入,当然有个函数很好用atoi将字符串转换为数字 。头文件 #include #include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#define inf 0x3f3f3f3fusing namespace std;int n,ans;

2016-10-27 17:26:30 594

原创 POJ 2349 (蒙)

这道题,很无语。感觉就是卫星代替s-1条边。以下大号字摘自IOI2004国家集训队论文《最小生成树算法及其应用》(吴景岳):当正向思考受阻时, 逆向思维可能有奇效。 本题就是这样。 知道卫星设备的数量,求最小的收发距离,可能比较困难;如果知道距离求数量,就很简单了。把所有可以互相通讯的村庄连接起来, 构成一个图。 卫星设备的台数就是图的连通支的个数。问题转化为:找到一个最小的

2016-10-27 16:09:27 375

原创 java haha

hdu2001import java.util.Scanner;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner reader = new Scanner(System.in); while(reader.ha

2016-10-26 23:49:47 353

原创 UVA 1589(象棋)

这道题,不多说是lrj的,很麻烦。写了很久。但是没过。#include#includeint dir[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};int gragh[20][20];int hx,hy;int rx,ry;int n;//车1马2炮3int che(){ int a = hx,b = hy; a++;

2016-10-26 20:19:34 517

原创 POJ 1278(细节prim)

题意:看输入和输出就知道,不多讲。但是在输入的路径上一定要看清楚,也就是建图。#include#include#define inf 0x3f3f3f3fint gragh[1005][1005];int dis[200];int visit[200];int n,m;int prim(){ int sum = 0; memset(

2016-10-26 12:37:24 413

原创 POJ 3625(朴素prim)

这道题没什么特殊的,输入n组坐标,需要自己建图。然后又有m组意思是a到b可以不用建路。但是因为输出要用到double或者float,G++中输出用%f,C++用%lf。很神奇。#include#include#include#define Max 1010class Node{public: double x,y;}c[Max];doubl

2016-10-26 08:06:52 277

原创 POJ 1679 (次小生成树)

我们都知道最小生成树,那么次小生成树就是:T0是任一棵异于T的生成树,通过变换T0 --> T1 --> T2 --> ... --> Tn (T)  变成最小生成树。所谓的变换是,每次把Ti中的某条边换成T中的一条边, 而且树T(i+1)的权小于等于Ti的权。取T0为任一棵次小生成树,T(n-1) 也就是次小生成树且跟T差一条边。此博客有详解:http://www.cnblogs

2016-10-25 19:43:36 308

原创 POJ2421(prim)

题意:修路,求出最小花费多少。一看它的输入形式就知道适合prim而不是kruskal。注意:题上说有Q条路已经修好,赋值为0即可。#include#include#define M 10000#define inf 0x3f3f3f3fint n;int gragh[M][M];int dis[M],visit[M];int prim(){

2016-10-24 19:57:19 327

原创 POJ 2395

简单题,很纯粹的最小生成树。#include#include#includeusing namespace std;class kruskal{public: int a,b,t;}edge[10010];int n,m;int Max;int f[2010],num[2010];bool cmp(kruskal x,kruskal y){

2016-10-24 19:19:43 307

原创 POJ 2377(kruskal)

题意:Bessie为别人工作,链接所有的草垛,每条路需要花费一定数目,但是老板并不想给钱,Bessie很生气,想以最大花费情况结束工作。所以请帮她找到最大生成树。用kruskal能解决很多问题,这次可以变形即可。#include#include#include#define M 20010using namespace std;class kru

2016-10-24 19:16:21 326

原创 POJ 1861

/* 总结一下kruskal算法。1.新建图G,G中拥有原图中相同的节点,但没有边2.将原图中所有的边按权值从小到大排序3.从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中(使用了并查集),则添加这条边到图G中 同时可以记录路径record4.重复3,直至图G中所有的节点都在同一个连通分量中收获,思路很清晰,需要很小心的写*/#include<ios

2016-10-23 12:06:17 249

原创 POJ 3615 (变形的floyd,最大的最小)

/* 其实这道题跟最短路没什么关系了,因为求的是青蛙从s到e每一条路中的最大跳跃距离。 并且在所有路中的最大跳跃距离找到最短的,在这道题中又对floyd加深了了解。 也有dp的感觉。*/#include<iostream>#include<cstdio>#include<cstring>#define inf 0x3f3f3f3fint gragh[500][500];

2016-10-21 21:45:35 393

原创 POJ 1847 (细节很重要的dijkstra)

题意:关于n个点,目的是从a->b最短需要转几次弯。输入第一行是n,a,b;接下来是d1,d2,d… 意思是第i个地点有d1个方向可以转。而到d2不需要转,到后边的是要转1次。#include<cstdio>#include<cstring>#define inf 0x3f3f3f3fint gragh[100][100];int visit[100];int dis[100];int n,

2016-10-21 10:43:44 391

原创 POJ 3268 (dijkstra变形)

题意:给出n个点和m条边,接着是m条边,代表从牛a到牛b需要花费c时间,现在所有牛要到牛x那里去参加聚会,并且所有牛参加聚会后还要回来,给你牛x,除了牛x之外的牛,他们都有一个参加聚会并且回来的最短时间,从这些最短时间里找出一个最大值输出。思路:求出牛到x的最短路,求出牛从x到原地的最短路。/* 这道题算是dijkstra的变形,求了两次对短路分别是: 1.i ——> x

2016-10-20 14:32:33 305

原创 POJ 2531 (简单dfs)

dfs一直不知道怎么写,可还是要练习。这道题题意:n台电脑,分成两个集合,不同的集合交流需要时间,求最大的时间。思想:遍历全部可能,最开始可以把所有电脑看作一个集合,然后一个一个移动到另个集合,试着找到最大时间,dfs最是适合。#include<cstdio>#include<cstring>int map[30][30];int visit[30];int ans,n;void dfs(in

2016-10-11 23:51:11 550

原创 HDU 1010 (入门搜索)

理解dfs:结点的层层深入回溯入口条件出口条件“`includeincludeincludeusing namespace std;char map[10][10]; int n,m,step; int di,dj; int flag; int dir[4][2] = {{0,-1},{0,1},{-1,0},{1,0}};void dfs(int si,int sj,int t)

2016-10-10 15:35:52 320

原创 安静一直是我最喜欢的···

世界太浮躁,缺少安静做事情的人 希望学弟、学妹愉快而安静的学习下去

2016-10-10 00:31:47 299

空空如也

空空如也

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

TA关注的人

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