- 博客(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 552
原创 线段树模板 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 553
原创 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 542
原创 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 589
原创 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 510
原创 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 559
原创 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 591
原创 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 611
原创 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 536
原创 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 579
原创 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 637
原创 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 630
原创 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 561
原创 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 772
原创 巧妙的字符串分割
1006排序:点击打开链接atoi这个函数原来做进制转换的时候就接触过。如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。(百度百科)简而言之是一个把字符型数字转化成整型的函数。strtok函数,感觉这个比较新鲜。下面从百度百科摘点介绍:原型 char *strtok(
2013-08-04 09:28:18 806 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 616
原创 完全背包问题
详解: 点击打开链接 #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 758
原创 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 840
原创 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 690
原创 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 655
原创 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 1449
原创 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 652
原创 hdu Monky and banana
题目链接:点击打开链接题意:给定N堆不同的积木,此积木这一类型数目是无限的。题目要求:用这N堆不同的积木,在下面的面比上面的积木的长要长,宽要宽,能够堆放的最大高度是多少。分析。可以先进行排序处理,(注意每一堆积木可以有三种不同的堆放形式,所以最多会有180种积木,排完序后,就跟最大下降子序列差不多了。所以可得状态转移方程:dp[i]=max(dp[i]
2013-07-28 08:45:04 680
原创 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 613
原创 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 526
原创 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 803
原创 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 744 1
原创 hdu 计算直线的交点
点击打开链接题意:平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。 问题:输出N条直线可能存在的交点数。 限制与要求:多个测试,对就每个测试从小到大输出所有可以存在的交点数。其中N〈=20; 检查:当N=2时,输出为0 1;当N=3时,输出为0 2 3; 分析:1,将n 条直线排成一个序列,直线2和直
2013-07-27 20:04:49 868
原创 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 586
原创 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 689 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人