自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tianhaijun的专栏

在这里,有程序人生。望多关注。

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

原创 hdu Minimum Inversion Number 的三种方法,暴力,线段树

暴力: #include#includeint a[5003];int main(){ int i,j,n,sum; while(scanf("%d",&n)!=EOF) { sum = 0; for(i=1;i<=n;i++) { scanf("%d",a+i); for(j=1;ja[i]) sum++; }

2013-09-01 16:06:14 510

原创 线段树模板 hdu 敌兵布阵

#include#include#define N 50005int num[N];struct node{ int L; int R; int sum;}list[N*4];void build(int k,int x,int y){ list[k].L = x; list[k].R = y; if( list[k].L == list

2013-09-01 09:43:21 506

原创 hdu Farm Irrigation

主要难点在构图,其实也不难,然后就是运用并查集,把能够连通的成为一个集合,最后看有多少个集合就是所求的解。 #includeint n,m;const int maxn = 60 ;struct node{ int up; int down; int left; int right;}list[maxn][maxn];in

2013-08-24 11:25:12 506

原创 hdu find the most comfortable road

我想,将速度做一次排序,最后就是多次并查集枚举答案。因为在排完序之后,减去起点之后的就是本次旅游的最大起伏点,多次枚举求出最小值就是解。 #include#include#includeusing namespace std;const int maxn = 205;const int maxm = 1005;const int INF = 0xffffff

2013-08-24 10:05:14 549

原创 hud Connect the Cities

注意:后面的有3个城市是指相互连接。用模板。 #include#includeconst int maxn = 510;#define INF 0xfffffffint map[maxn][maxn],lowcost[maxn],vis[maxn],n,m,k;int prim(){ int i,j,z,mins,sum=0,yes; f

2013-08-23 21:13:00 472

原创 hdu 继续畅通中。

不用多说,用模板。 #include#includeconst int maxn = 110;const int INF = 0xfffffff;int map[maxn][maxn],lowcost[maxn],vis[maxn],n;int prim(){ int i,j,k,mins,yes,sum=0; for(i=1;i<=n;i+

2013-08-23 21:11:11 516

原创 hdu 畅通工程再续。

我们可以提前处理那些不能够到达的点。 #include#include#includeconst int maxn = 110;const double INF = 100000000.0;double map[maxn][maxn],lowcost[maxn],x[maxn],y[maxn],z;int vis[maxn],m;double prim(

2013-08-23 21:09:50 548

原创 hdu 畅通工程

不多说,用模板,注意?是没有访问到全部的点。 #include#includeconst int maxn = 110;#define INF 0xfffffffint map[maxn][maxn],lowcost[maxn],vis[maxn],n,m;int prim(){ int i,j,k,mins,yes; int sum=0;

2013-08-23 21:06:45 569

原创 hdu Jungle Roads

这一题目,主要是如何建图。也是用模板。不多说。 #include#includeusing namespace std;#define maxn 1000 + 10#define INF 100000000int net[maxn][maxn],lowcost[maxn],vis[maxn];int n;int prim(){ int j,

2013-08-23 21:04:43 501

原创 hdu 还是畅通工程

模板题目:不多说。 #include#includeint n,tn;int map[110][110];int lowcost[110];int prim(){ int i,j,z; int yes,min,sum=0; int vis[110]; memset(vis,0,sizeof(vis)); mems

2013-08-23 21:02:18 535

原创 hdu 畅通工程

我们用并查集求出共有多少个集合,然后总集合减一就是题目的解,如果你去计算共连通了多少步,最后一组测试数据你一定会超时。  #include#includeconst int maxn = 1001;int father[maxn],rank[maxn];struct node{ int x; int y;}list[maxn*maxn];

2013-08-23 21:00:50 597

原创 hdu Eddy's picture

直接用模板,prim kruskual 都可以。 prim:#include#include#includedouble lowcost[110];double dp[110][110];int visit[110];int n;double prim(){ int j,z; double min,sum=0.0; in

2013-08-23 20:57:56 587

原创 hdu Constructing Roads

题意:给出一个数N,表示有N个城市,接下来的矩阵就表示,各城市之间的连通价格,然后给一个数M,接下的M行表示,每两个数为两个城市已经连通。(那么我们可以表示为零);这个题可以直接用模板解决。  #include#includeconst int maxn = 110;#define INF 0xfffffffint n,m,map[maxn][maxn],low

2013-08-23 20:54:27 525

原创 hdu Eddy's pitrue prim and kruskal

点击打开链接Prim #include#include#includedouble dis[110][110];double lowcost[110];int n;struct node{ double x; double y;}list[110];double fun(double x1,double x2,double y1,double y2

2013-08-06 15:01:06 728

原创 巧妙的字符串分割

1006排序:点击打开链接atoi这个函数原来做进制转换的时候就接触过。如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。(百度百科)简而言之是一个把字符型数字转化成整型的函数。strtok函数,感觉这个比较新鲜。下面从百度百科摘点介绍:原型  char *strtok(

2013-08-04 09:28:18 754 1

原创 大数的阶乘

#includeint main(){ int s[1000]={0}; int n; int i,j; s[0]=1; scanf("%d",&n); for(i=2;i<=n;i++){ int c=0,sum=0; for(j=0;j<1000;j++){ sum=i*s[j]+c; s[j]=sum%10; c=sum/10;

2013-08-03 16:25:26 578

原创 完全背包问题

详解:   点击打开链接   #include#include#includeusing namespace std;struct node{ int volume; int values;}g[100];int max(int a,int b){ return a>b?a:b;}int f[1000];i

2013-08-02 16:31:02 721

原创 hdu Chopsticks

点击打开链接题目分析:些题大概意思是说,有N条不同长度的筷子,在题目中按照非递减的顺序输入。要求找出K+8 对(每对三根筷子使得每一对的最后两根的差的平方总和最少。)并输出最少值。看起来,这和搬寝室那一题差不多。状态转移方程可表示为;dp[i][j]=min(dp[i][j-1],dp[i-1][j-2]+(a[j]-a[j-1])^2;这里为什么是dp

2013-07-29 10:18:40 799

原创 hdu FatMouse's Speed

点击打开链接FatMouse believes that the fatter a mouse is, the faster it runs. To disprove this, you want to take the data on a collection of mice and put as large a subset of this data as possible into

2013-07-28 21:03:28 647

原创 hdu Doing Homework again

题目链接:点击打开链接roblem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If

2013-07-28 20:25:37 615

原创 hdu 油田合并

对于油田合并的两种不同的搜索法。深搜代码:#include#includechar map[101][101];int vis[101][101]; int dfs(int x,int y);int n;int main(){ memset(map,0,sizeof(map)); memset(vis,0,sizeof(vis)); scanf("%d",&n

2013-07-28 20:20:44 1395

原创 hdu Employment Planning

题目链接   :点击打开链接A project manager wants to determine the number of the workers needed in every month. He does know the minimal number of the workers needed in each month. When he hires or fires a wo

2013-07-28 20:13:16 611

原创 hdu Monky and banana

题目链接:点击打开链接题意:给定N堆不同的积木,此积木这一类型数目是无限的。题目要求:用这N堆不同的积木,在下面的面比上面的积木的长要长,宽要宽,能够堆放的最大高度是多少。分析。可以先进行排序处理,(注意每一堆积木可以有三种不同的堆放形式,所以最多会有180种积木,排完序后,就跟最大下降子序列差不多了。所以可得状态转移方程:dp[i]=max(dp[i]

2013-07-28 08:45:04 639

原创 hdu NIghtmore

优先队列,广度搜索。 #include#include#includeusing namespace std;struct node{ int x; int y; int step; int t; friend bool operator<(node a,node b) { if(a.t

2013-07-27 20:37:15 576

原创 hdu Super Jumping! Jumping! Jumping!

题意:从一个点,一直跳,下一步只能够跳到比当前最大的,(就是与最长子序列差不多(可不连续的)。 限制与要求:多组测试,以零结束。 分析:状态转移方程。dp[i]=max(dp[i],dp[j]+a[i]),0 #include#includeint max(int a,int b){ return a>b?a:b;}in

2013-07-27 20:31:18 496

原创 hdu 免费馅饼

题意:一个人从坐标5,一秒钟只能向两边走一个坐标,老天在对应的秒内掉免费馅饼(可在同一坐标有多个),问你最多能够接下多个。限制与要求:多组测试,N个(《10000) T(10000),以零为输入结束。  得出状态转移方程为:dp[i][j-1]+=max(dp[i][j-1],dp[i][j],dp[i][j+1]); #include#includeint

2013-07-27 20:24:46 752

原创 hdu 数塔。

题目链接:点击打开链接 题意:从上到下,按照上面一步只能往下面两个方向走,所能够走出的最大值。限制与要求:T组测试,N(1)层。整数在(0,99) 分析:首先这是DP。应该从下往上的备忘录式搜索。      对应的DP方程:DP[i-1][j] +=max(dp[i][j],dp[i][j+1]); #include#includeint max(int a

2013-07-27 20:14:56 707 1

原创 hdu 计算直线的交点

点击打开链接题意:平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。 问题:输出N条直线可能存在的交点数。 限制与要求:多个测试,对就每个测试从小到大输出所有可以存在的交点数。其中N〈=20;  检查:当N=2时,输出为0 1;当N=3时,输出为0 2  3;  分析:1,将n 条直线排成一个序列,直线2和直

2013-07-27 20:04:49 829

原创 Max sum

#includeint temp=1;int main(){ int T,i,start,end,start1,end1,n,a[100010]; scanf("%d",&T); while(T--) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]);

2013-07-27 19:40:19 551

原创 hdu moving table.

#include#includeint map[201];int main(){ int T,n; int start,end; scanf("%d",&T); while(T--) {  memset(map,0,sizeof(map));  int i,j,m;  scanf("%d",&n);  for(i=0;i  {   sca

2013-06-18 22:24:47 644 1

空空如也

空空如也

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

TA关注的人

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