自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 hdu 1166 敌兵布阵--线段树

/* 线段树题 这题很简单,但是老是Runtime Error(ACCESS_VIOLATION) 一直找不到,就看着一老兄的,改我的代码 一直把他的函数都搬过来了,还是那样 就又把输入部分抄了过来,这才对了 原来是处理'\n'的时候出的错 但是在我的

2011-08-17 10:14:34 476

原创 poj 1730 Perfect Pth Powers

/* 输入最大数是2的32次方,故所有输出<=32,故可以枚举 没想到pow(1.0*n,1.0/i)还能这样开n的i次方*/#include#includeint main(){ __int64 b,bb; int i,j; while(

2011-08-13 19:48:53 495

原创 poj 2016 Play on Words--欧拉通路

/* 有向欧拉通路问题,把单词首尾字母当做点,单词是他们之间的关系 1.此图连通 2.有且仅有两个点出度和入度不同,但差是1;其余点的出度和入度相等*/#include#include#includeint r[30],c[30],ji[30];

2011-08-13 19:43:24 631

原创 poj 1401 Factorial

/* 求n!末尾0的个数,0是有因子5*因子2得到的,2的个数大于5的个数,所以找n!中因子5的个数*/#include int main (){ int t,n,nn; scanf("%d",&t); while (t--) { scanf("

2011-08-13 19:34:29 374

原创 hdu 2923 Einbahnstrasse

/* 题目大意是:某个城市有n个路口,r条道路(有单向的和双向的),c辆车坏了,求一辆一辆地把坏车拖回来需要走多长的距离 因为是多源最短路(拖车公司和坏车的地点都作为源点)问题,用Floyd*/#include#include#include#incl

2011-08-13 09:50:42 645

原创 hdu 1217 Arbitrage--Floyd

/* 千万要注意输出“Yes”和“No”的时候是首字母大写还是全大写 注意变量初始化*/#include#includedouble map[35][35],hui;char s[35][150],nam[150],nam1[150];int n,

2011-08-12 11:33:21 365

原创 hdu 1385 Minimum Transport Cost--Floyd算法+点权值+记录路径

/* Floyd算法+点权值+记录路径*/#includeint map[110][110],tax[110],path[110][110];int n;#define imax 999999999void floyd(){ int i,j,k

2011-08-12 10:19:10 722

原创 poj 1511 Invitation Cards--SPFA

/* SPFA*/#include#includeusing namespace std;#define nMax 1000050#define eMax 10000050#define inf 1000000050__int64 sum,dist[nMax];int vis[nMax],p,q,tou[nMax],re_tou[nMax];struct node{ in

2011-08-11 12:58:47 480

原创 hdu 1173 采矿

#include#includedouble x[1000000],y[1000000];int cmp(const void *a,const void *b){ return *(double *)a>*(double *)b?1:-1;}int

2011-08-10 20:14:42 1041

原创 hdu 1174 爆头

#include#includedouble h1,h2,r1,r2,o1,o2,o3;double p1,p2,p3,q1,q2,q3,d1,d2,q,w,e,a,s,d,oppo,opp,dis;int main(){ int t; scanf("

2011-08-10 19:58:59 1292

原创 hdu 1176 免费馅饼

/* 很简单的一道题 很无语*/#include#includeint d[100050][11];#define max(a,b) (a)>(b)?(a):(b)void dp(int max){ int i,j; for(i=max

2011-08-10 19:37:46 337

原创 poj 1502 MPI Maelstrom--dijkstra--atoi

/* 先求各点到1的最短路 然后从个最短路中找到最大值 原型:int atoi(const char *nptr);  函数说明:参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回0, 否则开始做类型转换,之后检测到非数字(包括结

2011-08-10 09:15:37 452

原创 hdu 2112 HDU Today

#include#includeint map[160][160],vis[160],dist[160],st,en;char start[35],end[35],name[160][35];int num;int zhao(){ int xia=-1

2011-08-09 13:38:14 422

原创 hdu 1879 继续畅通工程

多实例测试,num没有初始化,Runtime Error(ACCESS_VIOLATION)   N次#include#includestruct bian{ int x,y,w;}b[5010];int ji[110];int n,m,num=0,l;int cmp(const void *a,const void *b){ struct bian *c=(struct

2011-08-09 10:43:36 474

原创 poj 1258 Agri-Net--Prim和Kruskal算法

/* prim算法*/#include#includeint map[110][110],vis[110],dist[110];int n;void geng(int j)//更新剩余节点到树的最小距离{ int max=999999999,i; for(i=1;i<=n;i++) if(vis[i]&&map[i][j]<max) max=map[i][j]; d

2011-08-08 18:53:30 533

原创 hdu 1690 Bus System--floyd

#include__int64 map[110][110];__int64 station[110];#define Max 0x7fffffffffffff//设一最大值__int64 l1,l2,l3,l4,c1,c2,c3,c4,d;int n,m;__int64 deng(__int64 d)//计算费用{ if(d==0) return 0; else if(d

2011-08-08 17:04:17 438

原创 hdu 2544 最短路--Dijkstra

#include#includeint map[110][110];int vis[110],dist[110];int xun(int n)//在剩余的节点中寻找到1最近的{ int xia=-1,i; for(i=1;i<=n;i++) if(vis[i]==0&&(xia==-1||dist[i]<dist[xia])) xia=i; return xia;}v

2011-08-08 15:11:01 405

原创 poj 1088 滑雪--DP or 深搜?

#include#includeint map[110][110],step[110][110];int r,c;int dfs(int i,int j){ if(step[i][j]!=0) return step[i][j]; int max

2011-08-07 19:16:34 345

原创 hdu 1501 Zipper--LCS

#include#includechar a[210],b[210],c[420],d[210][210];//忘了c应该是400+int main(){ int t,n=1,i,j,len1,len2,len3; scanf("%d",&t); ge

2011-08-07 10:29:00 383

原创 poj 1269 Intersecting Lines

别人的代码,很简洁#includeint main(){ int n,m; double x1,x2,x3,x4,y1,y2,y3,y4,b,a,c,d,x0,y0; scanf("%d",&n); m=n; while(n--){ scan

2011-08-06 20:03:13 365

原创 poj 3299 Humidex

/* 没认真读题,以为就像例子那样输入T、D求H*/#include#includedouble t,d,h,z,e;int main(){ char c; while(scanf("%c",&c),c!='E') { t=-1111

2011-08-06 19:27:03 401

原创 poj 2965 The Pilots Brothers' refrigerator--棋盘--深搜

/* 深搜 简单,但是不熟练,犯了很多错误(七个)*/#includechar map[5][5];int i;int e=0;int step[20],st=0;int check(){ if(e==0) return 1;

2011-08-06 19:08:34 306

原创 hdu 1466 计算直线的交点数

/* DP 把i条直线分成那个两份:r条互相不平行的+(i-r)条平行直线(其中的每条和条互相不平行的相交都有r个交点) i条直线相交点数=r条直线相交点数+(i-r)*r;(1<=r<i)*/#include#includeint a[21][1

2011-08-06 10:45:53 599

原创 hdu 1243 反恐训练营--LCS

/* LCS*/#include#include#define max(a,b) (a)>(b)?(a):(b)int n;char s1[2010],s2[2010];int fen[2010],d[2010][2010];int main(

2011-08-06 09:49:54 893

原创 hdu 1080 Human Gene Functions--DP

#includechar s1[110],s2[110];int d[110][110];int p[5][5]={{0,-3,-4,-2,-1},{-3,5,-1,-2,-1},{-4,-1,5,-3,-2},{-2,-2,-3,5,-2},{-1,-1,-2,-2

2011-08-05 20:17:37 526

原创 hdu 1024 Max Sum Plus Plus--DP

/*问题: 给定由n个整数(可能为负整数)组成的序列dat1,dat2,…,datn,以及一个正整数m,要求确定序列的m个不相交子段,使这m个子段的总和达到最大。 分析: 设d(i,j)表示数组dat的前j项中i个子段和的最大值,且第i个子段含dat[j]。以下称

2011-08-05 16:30:54 711

原创 hdu 1165 Eddy's research II

/*Ackerman函数:当m=1时:A(1,n) = A(0,A(1,n-1)) = A(1,n-1)+1 = A(0,A(1,n-2))+1 = A(1,n-2)+2..... = A(1,n-n)+n

2011-08-05 10:11:13 703

原创 poj 1160 Post Office--DP--类背包问题

/*经典DP也可以说是背包问题:每个邮局占据一些村庄,求恰好占据完这些村庄时,距离的最小值(没有使用的那段代码可以这么理解)1、考虑在V个村庄中只建立【一个】邮局的情况,显然可以知道,将邮局建立在中间的那个村庄即可。也就是在a到b间建立一个邮局,若使消耗最小,则应该将邮局建立在(a+b)/2这个村庄上(可以通过画图知道)。2、下面考虑建立【多个】邮局的问题,可以这样将该问题拆分为若干子

2011-08-05 09:12:53 545

原创 hdu 1421 搬寝室--类背包问题

/* 可以说是背包问题吧:背包容量为k组,从n个中挑k组 因为要平方差最小的,故配组的时候一定是相邻的两个,共有n-1组,求出每组的平方差 所求就变成了从n-1个数中跳k个和最小的(好像挺简单,但是不能把同一个物品搬两次吧, 求相邻的两个数的平方差的时候,除了头尾,其余物品都算了两次) 所以用动态规划*/#include#includeusing namespace std;#

2011-08-04 17:07:00 607

原创 hdu 1074 Doing Homework--状态压缩

/* 状态压缩*/#include#include#includestruct ke{ char name[110]; int cost,end;}k[20];//存科目信息,cost是花费的时间,end是截止时间struct node

2011-08-04 15:45:13 528

原创 hdu 1065 I Think I Need a Houseboat

#includeint main(){ int n,i,z; double x,y,s; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%lf%lf",&x,&y); s=(x*x+y*y)*3.14

2011-08-04 09:42:38 692

原创 zoj 1949 Error Correction

/* 若每行每列的和都是偶数,输出OK; 若能修改一个符合要求,输出其坐标; 否则......*/#include#includeint map[110][110],r,c;int main(){ int n,i,j,ii,jj; while(scanf("

2011-08-03 17:33:53 483

原创 zoj 1858 Soundex

/* 一些字母被标号,还有一些没被标号,不用处理;找到单词的数字表示法 若连续的字母属于同一类,输出一个数字*/#includechar s[30];int ha(char *p){ if(*p=='A'||*p=='E'||*p=='I'||*p=='O'||*

2011-08-03 17:27:15 370

原创 poj 1566 Haiku Review

/* 就是找由/分割的三句话中syllables(不连续的a,e,i,o,u,y算一个)的数量 若符合给出的5:7:5,输出Y;否则输出第一个不符合的句子的号码*/#include#includechar s[250];int a[3],n;int ha(char

2011-08-03 17:22:24 505

原创 hdu 1315 Don't Get Rooked--深搜

/* 本题用深搜,尽可能多的安排rook*/#includechar map[4][4];int x[20],y[20],c[20],num,n,no;int xing(int i,int j){ if(c[j]==0) return 0; if(x[i]!

2011-08-03 17:14:13 622

原创 poj 1159 Palindrome--最长公共子串

/* 本题主要就是最长公共字串(同他自己的反串) 所求就是其长度-公共字串的长度 同时本题用到空间压缩,否则可能内存用超 我是用的两行的数组,轮流做当前行*/#include#includechar s[5050];int p[2][5050]

2011-08-03 17:12:20 346

原创 hdu 1203 I NEED A OFFER!--01背包

/* 01背包问题*/#includedouble dp[10010],g[1010];int m[1010],qian;double p(double w,int i){ return 1-(1-w)*(1-dp[i]);}void zopack(int c

2011-08-03 11:05:50 337

原创 hdu 1208 Pascal's Travels--DP

/* map[ i ][ j ]表示跳几格 f [ i ][ j ] 表示有几种条法 其实就是一个子状态继承问题,如果map[ i ][ j ]为k, 那么 f [ i+k ][ j ] 和f[i][j+k] 就可以增加 f [ i ][ j ]种跳跃方法了。*/#

2011-08-03 10:31:30 541

原创 hdu 1081 To The Max最大连续子串和

/* 一维的情况很简单,如何把一维的情况转化为二维情况呢? 例如,对于本题的测试数据: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 我们可以每次任选几行,压缩成一行,这样就转化为了一维情况。 例如,我们求1-2行中的最大子矩阵:即矩阵高为2(1-2行),宽为4的矩阵,可以先把1-2行相加,得到9 0 -13 2, 再求这个

2011-08-03 09:59:41 861

原创 hdu 1158 Employment Planning--DP

/* 用数组a[]来存每个月最少的雇用人数;max=11;表示a[]中的最大值;dp[i][j]表示第i个月,雇佣j个人时,这i个月的花销;这里要注意,dp[i][j]不是第i个月的花销,而是从第1个月到第i个月的总花销; DP 就是找阶段,3个月就分了3个阶段;第一

2011-08-03 09:08:54 487

空空如也

空空如也

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

TA关注的人

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