自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

原创 hdu1224

题意:求一幅图中从1再回到1的过程中,经过的点最大的路径。#include #include #include using namespace std;int mapp[120][120],point[120];int step[220],ans[220];int main(){ int t,m,n,i,j,max,k,a,b,cas=0; scanf("%d

2012-08-28 21:10:05 292

原创 hdu4263 Kruscal

就是求是否存在有k条蓝边的生成树。分别求蓝边尽量多和蓝边尽量少的情况,如果在这之间,就存在。否则,不存在。比赛的时候想对了,关键是输入超时了,用的cin,主要是不能用%c。。。#include #include #include using namespace std;const int mm=25000;const int mn=2500000;struct Edge{

2012-08-27 21:31:40 395

原创 nefu499最小费用最大流

#include#include#includeusing namespace std;const int oo=1e9;const int mm=88888;const int mn=444;int node,src,dest,edge;int ver[mm],cost[mm],flow[mm],next[mm];int head[mn],dis[mn],q[mn],p[mn]

2012-08-27 19:03:16 268

原创 hdu1217Floyd最短路

题意:有n个国家,每两个国家之间都有一定的汇率,问怎么样转换才能赚钱。以国家为顶点,汇率为边长,构造一个图,如果从自身出发回到自身的路径乘积和大于1,则说明可以赚钱。#include #include #include #include using namespace std;char ch[40],sh[40];double dis[55][55];void Floyd(i

2012-08-24 16:41:28 402

原创 hdu1385Floyd 记忆路径

题意:求从i到j的最短路径长度,以及字典序最小的路径。#include #include using namespace std;int a[110][110],c[110][110];int b[110];int find(int from,int to){ while(c[from][to]!=to) { printf("-->%d",c[fro

2012-08-24 15:06:00 275

原创 hdu1142spfa+记忆化搜索

题意:起点是1,终点是2,只能从离终点远的点走到离终点近的点,问从起点到终点一共有多少种走法。分析:利用spfa求得以2为起点所有点的距离,然后利用记忆化搜索求得路径的个数。#include #include #include using namespace std;const int oo=1e9;const int mm=5000;const int mn=510000;

2012-08-24 13:58:25 366

原创 hdu4396 spfa有限制的最短路

利用二维的spfa#include #include using namespace std;const int oo=1e9;const int mm=5555;const int mn=200020;int ver[mn],next[mn],cost[mn];int head[mm],qx[mn],qy[mn],dis[mm][55];bool vis[mm][55];i

2012-08-24 10:36:09 2981

原创 hdu4377

找规律的题目,在比赛的时候想到把数据倒过来了,但是没有想到sqrt(n)....#include #include #include #include using namespace std;int a[100010];int main(){ int t,n,i,tmp,q,p,tmp1,tmp2,j; scanf("%d",&t); while(t--)

2012-08-20 20:58:08 389

原创 hdu4370 0 or 1 最短路

Problem DescriptionGiven a n*n matrix Cij (1ij (1Besides,Xij meets the following conditions:1.X12+X13+...X1n=12.X1n+X2n+...Xn-1n=13.for each i (1ki (1ij (1For example, if n=4,we ca

2012-08-20 16:12:30 329

原创 星际转移问题

分析(引用BYvoid 大牛的分析):分层图网络流问题,枚举答案,构造网络流判定。建模方法:首先判断从地球到月球是否存在一条路线,如果不存在那么无解,否则把每个太空站按照每天拆分成d 个点,表示第i个站第d 天。建立附加源S 汇T,顺序枚举答案Day。1、对于第Day 天,从S 到连接一条容量为无穷大的有向边。2、从到T 连接一条容量为无穷大的有向边。3、对于第i 个太

2012-08-18 16:54:46 533

原创 hdu4364 模拟矩阵相乘

这个题就是题意不好理解。。。 题意:给定一个矩阵T=输入数据中所给的矩阵为s,求T*s 但是在矩阵相乘时 乘以1 数据不变;乘以2 左移一位;乘以3左移一位再异或移位之前的矩阵;另外加法运算定义为异或运算。注意:在移位过程中如果大于0xff,则需再异或0x1b。#include #include #include using namespace std;int Matrix

2012-08-15 20:54:07 410

原创 有向无环图的最小路径覆盖nefu481

有向无环图的路径覆盖问题就是在图中找一些不相交的简单路径,使之覆盖图中的所有顶点,且任何一个顶点有且只有一条路径与之关联(如果沿这些路径中的每条路径从起点到终点,那么恰好可以经过图中每个顶点一次且仅一次)。从上述定义中可以看到:(1)每个单独的顶点都可以是一条路径。(2)如果存在路径(p1,p2,,,,pk),那么在覆盖图中,顶点p1,p2,,,,pk,不再与其他的顶点之间存在有向边。

2012-08-15 16:01:00 497

原创 nefu473最大流模板简单应用

#include #include using namespace std;const int oo=1e9;const int mm=111111;const int mn=999;int node,src,dest,edge;int ver[mm],flow[mm],next[mm];int head[mn],work[mn],dis[mn],q[mn];void prepa

2012-08-15 15:14:58 266

原创 最大流模板

const int oo=1e9;const int mm=111111;const int mn=999;int node,src,dest,edge;int ver[mm],flow[mm],next[mm];int head[mn],work[mn],dis[mn],q[mn];void prepare(int _node,int _src,int _dest)//初始化{

2012-08-15 15:13:30 245

原创 hdu4360 spfa

题意:有一个网络,每条边分别被标记上‘L’、‘O’、‘V’、‘E’四个字母,从起点到终点,只能按照LOVELOVE.....的走。求在保证LOVE的情况下的最短路。利用spfa,将每条路标记上四个状态,求最短路即可。#include #include #include using namespace std;const int mm=5555;const int mn=99999

2012-08-15 15:06:41 238

原创 poj1679次小生成树

题意:最小生成树是否唯一。思路:求得次小生成树,如果与最小生成树相等,则不唯一。求次小生成树的过程:求得最小生成树,依次去掉最小生成树中的边,求的值中的最小值即为次小生成树。次小生成树可能与最小生成树相等。。。#include #include #include #include using namespace std;const int maxn=105;const

2012-08-13 18:57:19 233

原创 poj2907DFS

题意:在一个最大20*20的矩形中,有一个起点,和另外许多个点,求从这个点出发经过所有点,再回到起点最少经过多少步。因为只能上下左右地走,所以用到搜索。#include #include #include using namespace std;struct Node{ int x,y,flag;}node[100];int n,sx,sy;int ans,ret;v

2012-08-13 15:56:22 248

原创 poj2438构造哈密顿图

由于本题是Special Judge,表明只要输出一种答案即可。哈密顿模板题。#include #include #include using namespace std;const int maxn=1000;int ans[maxn];bool mapp[maxn][maxn];bool visit[maxn];void reverse(int s,int t){

2012-08-13 14:47:36 456

原创 poj2230欧拉回路+DFS

题意:遍历所有的边至少一次,所有点两次Dfs所有的边,回溯#include #include #include using namespace std;int vis[10000];struct Edge{ int to,next;};Edge edge[100100];int head[10010];int n,m,top;void Dfs(int v){

2012-08-12 15:52:04 3695

原创 poj1041

#include #include #include using namespace std;int degree[50];int flag[2000];int s[2000];int e[2000][2];int numv,nume,top;int check(){ for(int i=1;i<=numv;i++) if(degree[i]%2!=0)

2012-08-10 20:08:41 327

原创 poj1386判欧拉路

欧拉回路:图G,若存在一条路,经过G中每条边有且仅有一次,称这条路为欧拉路,如果存在一条回路经过G每条边有且仅有一次,称这条回路为欧拉回路。具有欧拉回路的图成为欧拉图。 判断欧拉路是否存在的方法有向图:图连通,有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。无向图:图连通,只有两个顶点是奇数度,其余都是偶数度的。判断欧拉回

2012-08-10 15:30:10 4406

原创 hdu4325线段树+离散化

首先将所有点进行离散化,然后利用线段树求解。#include #include #include using namespace std;const int maxn=500100;struct Node{ int l,r,c; int add;}tree[maxn*4];int X[maxn*4];int tmp[maxn];int set[maxn][2

2012-08-05 16:16:52 279

原创 upper_bound\lower_bound的用法

#include #include //必须包含的头文件using namespace std;int main(){ int point[10] = {1,3,7,7,9}; int tmp = upper_bound(point, point + 5, 7) - point;//按从小到大,7最多能插入数组point的哪个位置 printf("%d\n",tmp); tmp = l

2012-08-05 16:15:36 295

原创 hdu4334

题意:有5个集合,从这5个集合中各取1个元素,使之和为0,如果存在输出Yes,否则输出No。假设现在有两个有序序列,有两个指针,一个指向第一个序列的最大值,另一个指向第二个有序序列的最小值,将两个指针所指的值相加,如果小于固定值x,则第二个指针向值更大的方向移动,否则反之。而这个题是5个集合,可以将1,2看作一组,将3,4看作一组,进行计算。具体的代码如下。#include #i

2012-08-03 16:12:00 317

并查集入门

并查集入门的好资料,供acm初学者学习使用。

2012-03-01

空空如也

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

TA关注的人

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