![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hdu水题
u010912405
这个作者很懒,什么都没留下…
展开
-
hdu1010 深搜+减枝
此题很明显是深度优先搜索问题,不过需要减枝还有回溯。#include#include#includeusing namespace std;const int NP=9;char map[NP][NP];int sx,sy,dx,dy;int flag;int m,n,t;int ds[4][2]={0,1,1,0,0,-1,-1,0};void dfs(int x,int原创 2013-08-19 17:22:27 · 374 阅读 · 0 评论 -
hdu1031
#include#include#includeusing namespace std;const int N=100010;struct Node{ int index; double value;}node[N];bool cmp(Node a,Node b){ return a.value>b.value;}bool cmp2(原创 2013-08-25 16:24:49 · 608 阅读 · 0 评论 -
hdu 1069 mokey and banana
#include#include#include#includeusing namespace std;const int N=200;struct block{ int l; int w; int h;}B[N];bool cmp(block a,block b){ if(a.l!=b.l) return原创 2013-08-14 16:08:23 · 469 阅读 · 0 评论 -
hdu 1025 二分查找+最长上升子序列
#include#include#includeusing namespace std;const int N=500010;int a[N],dp[N];int LIS(int n){ int high,low,mid,len=1; dp[1]=a[1]; for(int i=2;i<=n;i++) { lo原创 2013-08-14 11:36:51 · 472 阅读 · 0 评论 -
hdu 1050 移动桌子问题(方法很巧妙)
#include#include#includeusing namespace std;const int MAX=210;int main(){ int M,N,T,P,a[MAX]; cin>>T; while(T--) { int begin,end,max=0;原创 2013-08-14 22:16:01 · 536 阅读 · 0 评论 -
hdu 1051 wooden sticks (贪心策略)
贪心策略一:#include#include#includeusing namespace std;const int N=5005;struct stick{ int l; int w; int k;//记录状态 }Stick[N];bool cmp(stick a,stick b){ if(a.l!=b.l)原创 2013-08-15 15:56:05 · 406 阅读 · 0 评论 -
一些图论、网络流入门题总结、汇总
一些图论、网络流入门题总结、汇总2008-09-03 11:43最短路问题此类问题类型不多,变形较少POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意:经典问题:K短路解法:dijkstra+A*(rec),方法很多相关:ht转载 2013-08-14 21:32:44 · 442 阅读 · 0 评论 -
hdu 1232 畅通工程并查集
此题是并查集的应用。所要修建的路等于连通分量-1,因此关键就是求连通分量,用find函数求每个节点的根节点,combine函数将两个连通分量连起来。#include#include#includeusing namespace std;const int NP=1010;int parent[NP];int find(int i)//寻找根节点 { if(paren原创 2013-08-15 18:32:55 · 438 阅读 · 0 评论 -
hdu 1213 并查集
#include#include#includeusing namespace std;const int MAX=1010;int parent[MAX];void init(int n){ for(int i=1;i<=n;i++) parent[i]=i;}int find(int x){ if(x!=parent[x])原创 2013-08-16 16:41:29 · 386 阅读 · 0 评论 -
hdu1863 kruskal(最小生成树)
#include#include#includeusing namespace std;const int NM=110;int parent[NM];int N,M;struct Edge{ int u; int v; int w;}edge[NM];bool cmp(Edge a,Edge b){ re原创 2013-08-17 16:42:20 · 479 阅读 · 0 评论 -
hdu1034
#include#include#includeusing namespace std;const int N=1000;int a[N],n;int check(){ for(int i=0;i<n;i++) if(a[i]!=a[(i+1)%n]) return 0; return 1;} int main(){ int原创 2013-08-28 23:08:57 · 710 阅读 · 0 评论 -
hdu 1004 vector(见识了,呵呵)
刚开始思考用sting数组存放字符串,考虑到数组大小不能改变不如向量实用,所以借鉴了别人的向量使用方法,自己写的向量解法,感觉顿时眼前一亮!#include#include#include#include#includeusing namespace std;struct box{ int value; string color;};vector原创 2013-08-17 21:12:37 · 551 阅读 · 0 评论 -
hdu 1002 大数问题
#include#include#include#includeusing namespace std;const int N=1010;void exchange(char *p,int m){ int n=(m-1)/2; for(int i=0;i<=n;i++) { int t; t=*(p+原创 2013-08-18 12:04:13 · 553 阅读 · 0 评论 -
hdu 1003(DP)
#include#includeint a[100010];int main(){ int case_number,k=0,i,number,position1,end,thissum,maxsum,begin; scanf("%d",&case_number); while(case_number--){ k++; scanf("%d",&number);原创 2013-08-18 12:19:32 · 361 阅读 · 0 评论 -
hdu1035
#include#include#includeusing namespace std;const int N=11;int m,n,p;char map[N][N];int a[N][N];struct Point{ int x; int y; // int step; // int visited;}point[N*N];原创 2013-08-29 12:31:57 · 424 阅读 · 0 评论 -
hdu1027 全排列(STL函数next_permutation)
#include#include#includeusing namespace std;int N,M;int sequence[1010];int main(){ setbuf(stdout,NULL); while(scanf("%d %d",&N,&M)!=EOF) { int i; for(i=0;i<N;i++) { sequence[i]=i+1;原创 2013-08-24 17:04:31 · 467 阅读 · 0 评论 -
hdu 1423 动态规划
#include#include#includeusing namespace std;const int MAX=501;int main(){ int T,M,N; int a[MAX],b[MAX]; int dp[MAX][MAX]; cin>>T; while(T--) {原创 2013-08-13 15:51:53 · 370 阅读 · 0 评论 -
hdu1869 floyd算法
本题使用floyd求出任意两点之间的距离,然后求出任意两点之间的距离是否#include#include#includeusing namespace std;const int NP=102;const int INF=0x0fffffff;int map[NP][NP];int N,M;void init(){ for(int i=0;i<N;i++)原创 2013-08-20 10:45:15 · 376 阅读 · 0 评论 -
hdu1016深搜
#include#include#includeusing namespace std;const int N=21;int n,ans[100],visited[30];int prime(int m){ //int k=(int)sqrt(m);//一直wa! for(int i=2;i<=m/2;i++) { if原创 2013-08-20 20:46:50 · 432 阅读 · 0 评论 -
hdu2553 n皇后问题
#include#include#includeusing namespace std;const int N=11;int map[N][N];int col[N],a[N];//保存预处理结果,一直TLE,就是因为这 int n;int ans;int place(int k){ for(int i=1;i<k;i++) {原创 2013-08-21 12:09:48 · 450 阅读 · 0 评论 -
hdu1017(很简单)
#include#include#includeusing namespace std;int main(){ int T,a,b,m,n,k,count; cin>>T; while(T--) { k=0; while(cin>>n>>m) {原创 2013-08-22 15:06:56 · 588 阅读 · 0 评论 -
hdu1018
主要是一个公式:求n!的位数,令n!=10^M;l两边取10的对数,得到,M=(lg(1)+lg(2)+lg(3)+....lg(n)),对M向上取整即可。#include#include#includeusing namespace std; int main(){ int T,n; double sum; cin>>T; w原创 2013-08-22 15:48:14 · 416 阅读 · 0 评论 -
hdu1019
在求最小公倍数时要先除后乘。#include#includeusing namespace std;int LCM(int a,int b){ int m=a; int n=b; /* if(a<b) { int t=a; a=b; b=t;原创 2013-08-22 16:25:20 · 461 阅读 · 0 评论 -
hdu1023(catalan问题)
有关catalan的内容参见百度的解释。http://baike.baidu.com/link?url=bSvgDUE2mXJ4PZ103gWQ2fuYz49zK_9gHdk60FKFsq-4Oh11AwPNdDt5qySRoTSICYFx0mAMCc5Q4wSL9Ty2la catalan递推公式:f(n)=f(n-1)*(4*n-2)/(n+1);f(n)=f(0)*f(n-1)+原创 2013-08-22 22:29:08 · 443 阅读 · 0 评论 -
hdu1024 DP(感觉挺难的)
动态转移方程:dp[i][j]=max(dp[i][j-1],dp[i-1][k])+a[j](i-1 #include#include#includeusing namespace std;int a[1000050];int now[1000050];int pre[1000050];const int inf=-0xffffff;int max1(int x,int原创 2013-08-23 16:55:17 · 488 阅读 · 0 评论 -
hdu1048map解法和一般解法
一般解法#include#include#include#includeusing namespace std;int main(){ string s,t; char str[210]; while(cin>>s&&s!="ENDOFINPUT") { getchar();原创 2013-08-12 11:45:23 · 456 阅读 · 0 评论 -
hdu1026 优先队列+广搜
#include#include#include#includeusing namespace std;struct node{ int x,y; int step; friend bool operator<(node a,node b) { return b.step<a.step;原创 2013-08-24 13:57:26 · 499 阅读 · 0 评论 -
hdu1028 集合问题
刚开始时用递归做的,果断超时!后来就知道用数组吧全部算出来。#include#include#includeusing namespace std;const int N=121;int dp[N][N];int main(){ int n,m; for(int i=1;i<=120;i++) { dp[1][i]=原创 2013-08-24 20:27:58 · 475 阅读 · 0 评论 -
hdu1033(水题)
#include#include#include#includeusing namespace std;const int N=202;char a[N];int main(){ int k,x,y; char ch; while(scanf("%s",a)!=EOF) { k=2;x=310;y=420;原创 2013-08-25 16:24:00 · 546 阅读 · 0 评论 -
hdu2544 dijkstra最短路径问题
点击打开链接//********最短路径问题***********// //注意本题可能会存在两点之间有多条路径 // #include#include#include#includeusing namespace std;#define MP 10010//定义稍大些 #define NP 110int map[NP][NP];int dist[MP]原创 2013-08-12 20:30:36 · 447 阅读 · 0 评论 -
hdu 2546 0-1背包问题
money-5 之后这个题可以转化为求最接近money-5的值,典型的0-1背包问题 #include#include#include#includeusing namespace std;const int N=1010;int main(){ int n,m,price[N],flag[N]; while(cin>>n&&n) {原创 2013-08-12 22:03:41 · 438 阅读 · 0 评论 -
hdu 1874 最短路径 dijkstra 和floyd 算法
dijkstra 算法:#include#include#include#includeusing namespace std;const int NP=210;const int MP=1010;int map[NP][NP];int dijkstra(int p,int t,int maxNode){ bool visited[NP]; int原创 2013-08-13 00:29:57 · 438 阅读 · 0 评论 -
hdu 1041大数问题
#include#include#include//在hdu上必须是string才能过,cstring不能过!CE了一次#includeusing namespace std;const int N=1010;string add(string a,string b){ if(a.length()<b.length()) {原创 2013-09-01 23:16:37 · 439 阅读 · 0 评论