symons

___________每一天都是幸福的!!

  博客园  ::  :: 新随笔  ::  :: 订阅 订阅  :: 管理

2012年11月18日

摘要: 之前做这题一点思路都没有,现在感觉思路很清晰,这可能就是思想上的提高吧,加油,多踢球多参加一些活动,多看一些书,多刷题,这样就会提高。就是个波动序列,没什么难的。 1 #include <stdio.h> 2 bool sign[30000+10]; //0代表高 1代表低 3 int num[30000+10]; 4 int dp[30000+10]; 5 int main() 6 { 7 int n,i,j,max; 8 int t; 9 while(scanf("%d",&t)!=EOF)10 {11 while(t--){12 ... 阅读全文
posted @ 2012-11-18 19:40 symons 阅读(169) 评论(0) 推荐(0)

摘要: 这题是最长子序列,然后再求出路径就可以了。开始写的比较乱,用数组什么的,后来用了指针就好办了。现在把代码贴出来。指针真的挺给力的。-------------------------------------------------------------------------------------------------------------------- 1 #include <iostream> 2 #include <stack> 3 #include <cmath> 4 using namespace std; 5 struct people 6 阅读全文
posted @ 2012-11-18 17:30 symons 阅读(216) 评论(0) 推荐(0)

2012年10月29日

摘要: 这道题是最短路问题,开始卡了好久后来才发现是因为i,j坐标输入有问题。我更改了i,j坐标顺序才发现正确结果,坑啊! 不过别的就是个裸地最短路了。 1 #include <iostream> 2 #include <stdio.h> 3 #include <cstring> 4 #include <algorithm> 5 #define INF 100000000 6 #define maxn 25 7 using namespace std; 8 int n; 9 int edge[maxn][maxn];10 int dist[maxn];1 阅读全文
posted @ 2012-10-29 17:09 symons 阅读(330) 评论(0) 推荐(0)

2012年10月28日

摘要: 这题卡了我好几天,我太菜了。周四卡了一下午,周五没怎么看这个,然后晚上+周⑥一天+周日上午我都去踢球了,吼吼。然后我今天我给过了,哈哈 开始使用的是找点,建边,用kruskal,然后果断超时,以为是思路问题,可能会prim好一点吧,但是我坚持没看题解。到底哪会超时呢,后来已经决定用prim写了,后来黄老师说用kruskal就行,就是确定两点之间距离时候用BFS时候我的时间复杂度不对。应该是遍历一遍所有的点,是从一个点找到所有的点,我的方法是双重循环,每两个点之间搜一次,黄老师说这样太慢了,后来我经过启发改了,可是还是错。 最后我发现出bug了,原因是把i,j定义为全局变量了,坑爹啊。 这题现. 阅读全文
posted @ 2012-10-28 13:56 symons 阅读(439) 评论(0) 推荐(0)

2012年10月26日

摘要: 这题跟上一个题是一样的。就出所有最小生成树的所有边的值就可以了。直接代码吧。 1 #include <stdio.h> 2 #include <algorithm> 3 #include <iostream> 4 #include <string.h> 5 #define MAXN 10000 6 #define MAXM 50000 7 using namespace std; 8 int point[500+10][500+10]; 9 struct edge 10 { 11 int u,v,w; 12 } edges[MAXM]; 13 i 阅读全文
posted @ 2012-10-26 15:00 symons 阅读(135) 评论(0) 推荐(0)

摘要: 1 #define maxn 100 2 #define maxm 5000 3 struct edge 4 { 5 int u,v; 6 double w; 7 }edges[maxm]; 8 int parent[maxm]; 9 int u,v,i,j;10 void ufset()11 {12 memset(parent,-1,sizeof(parent));13 }14 int find(int x)15 {16 int s;17 for(s=x;parent[s]>=0;s=parent[s])18 ;19 whil... 阅读全文
posted @ 2012-10-26 15:00 symons 阅读(159) 评论(0) 推荐(0)

2012年10月23日

摘要: 英语一定要好啊,不好就悲剧了。。。我开始都没看懂,后来才懂了。。。一定要仔细啊!!! 注意要求,0的意思是不通。然后我用的kruskal算法写的,用邻接矩阵搞的,然后再从矩阵中读边。 裸地最小生成树。 1 #include <stdio.h> 2 #include <algorithm> 3 #include <iostream> 4 #include <string.h> 5 #define MAXN 10000 6 #define MAXM 50000 7 using namespace std; 8 int point[500+10][50 阅读全文
posted @ 2012-10-23 15:00 symons 阅读(269) 评论(0) 推荐(0)

2012年10月22日

摘要: 1 #include <stdio.h> 2 #include <algorithm> 3 #include <iostream> 4 #define MAXN 10000 5 #define MAXM 50000 6 struct edge 7 { 8 int u,v,w; 9 }edges[MAXM];10 int parent[MAXN];11 int n,m;12 int i,j;13 14 //并查集15 void UFset()16 {17 for(i=1;i<=n;i++)18 parent[i]=-1;19 }20 int Find(i 阅读全文
posted @ 2012-10-22 19:21 symons 阅读(135) 评论(0) 推荐(0)

摘要: 本题就是栈的模拟题,我是自己用数组写的栈,没用STL。没什么说的,上代码。 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 char STACK[100]; 5 int point; 6 char a[100]; 7 char b[100]; 8 string abc[200]; 9 int main()10 {11 int a_p,b_p,i,j,t,n,count;12 while(cin>>n)13 {14 cin>>a>>b;15 mems 阅读全文
posted @ 2012-10-22 15:31 symons 阅读(151) 评论(0) 推荐(0)

摘要: 1 /* 2 这题暴力的话时间复杂度太高。 3 本题是一维最大连续子序列的拓展。 4 求二维的话只要转化为一维就可以了。 5 转化方式。将一列的数字通过n^2的时间复杂度归并成一个数, 6 每次归并一次就遍历一下list求最大值(这步就是执行一维的最大连续子序列)。 7 */ 8 #include <iostream> 9 #include <string.h>10 #include <cmath>11 using namespace std;12 int list[150];13 int gird[150][150];14 void get(int a,i 阅读全文
posted @ 2012-10-22 01:23 symons 阅读(163) 评论(0) 推荐(0)