摘要: 参考阳神的博客写的,非常好的一个方法。题目的意思是: 对于每对点 找出他们之间所有路径中 最长边 的最小值~~~好拗口的!思路: 直接找出满足要求的太过于麻烦;所以找出不满足条件的,然后用总的数目(n*(n-1))减去不满足的就行;做法: 因为找的是最长边,所以首先将边和查询都按从小到大排好序。因为满足要满足条件,查询的值要比当前已经访问的边的值要大; 另外,访问了边之后要维护,选用并查集!感觉这个方法很正确,但是不会证明 = =!代码: 1 #include 2 #include 3 #define maxn 10005 4 #define maxm 500005 5 using n... 阅读全文
posted @ 2013-09-23 22:28 Yours1103 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目很简单,不过题意很难看懂。就是给一个标准的大小关系的队列,从原队列中找出最多的匹配子队列,感觉就像一个KMP算法+贪心;不过这个题可能数据有点水把,竟然只要判断相邻的关系就可以A掉;代码: 1 #include 2 #define maxn 100005 3 using namespace std; 4 int q[maxn],st[maxn],n,m,k; 5 6 bool g(int a) 7 { 8 int i; 9 for(i=a; iq[i+1]&&st[i-a]>st[i-a+1]))continue;12 else break;13 ... 阅读全文
posted @ 2013-09-23 16:36 Yours1103 阅读(331) 评论(0) 推荐(1) 编辑
摘要: 一道很简单的题,不过在比赛的时候没有写出来;刚刚看到这个题,我以为是一个图论题,后来发现其实就是一个暴力的题;用bfs,因为一个人与他不认识的人肯定不会在一个集合,如果判断出现冲突则分配失败,否则就成功;代码: 1 #include 2 #include 3 #include 4 #define maxn 103 5 using namespace std; 6 7 int map[maxn][maxn],n; 8 int b[maxn]; 9 10 bool bfs(int a)11 {12 queueq;13 q.push(a);14 while(!q.empty... 阅读全文
posted @ 2013-09-23 12:52 Yours1103 阅读(359) 评论(0) 推荐(1) 编辑