上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 30 下一页
摘要: /*题目: n个人中有m对人互为朋友,若a认识b,b认识c,则a认识c,问这n个人中最多有多少人 相互认识分析: 并查集实现,把互为朋友的放置在同一集合中,询问最大人数时可以使用计数器计算该 人所在集合的父节点的数字*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int X = 30002;int p[X],cnt[X],n,m;int find_set(int x){ if(x!=p[x]) p[x] = find_set(p[x])... 阅读全文
posted @ 2012-06-14 21:53 yejinru 阅读(274) 评论(0) 推荐(0) 编辑
摘要: /*题目: 给出序列,其中一个子序列为(x,y,z),问最多有多少个这样的子序列, 使得x<z<y,其中该序列为1到n的排列分析: 由于是排列,所以不存在相同的元素,所以x,y,z互不相等。所以序列中 的大小关系可表示为 小中大+小大中 = 小__ __ ,所以答案 小大中 = 小__ __ -小中大 统计 小__ __可以统计该位后面的所有元素中比他大的个数为x,则 小__ __ = x*(x-1)/2 而统计小中大时,只需要统计前面比他小的以及后面比他大的个数x,y,则 小中大 = x*y 统计个数可以用树状数组... 阅读全文
posted @ 2012-06-14 12:08 yejinru 阅读(193) 评论(0) 推荐(0) 编辑
摘要: /*2011 北京区域赛Hou Yi's secret题目: 给出n个点,问任选三个点组成的三角形中最多有多少个相似分析: 能够组成三角形的话,点不能重复,不能三点共线,然后相似的判断可根据对应边 的比值相等,由于边的长度涉及浮点运算,我们可以不开方直接用平方作比较就行*/#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int X = 20;const int maxn = 8000;in 阅读全文
posted @ 2012-06-13 18:22 yejinru 阅读(191) 评论(0) 推荐(0) 编辑
摘要: /*题目: 有n对新人,他们的婚礼时间分别为[s,t],他们的习俗是需要牧师能够对新人 进行祝福,要求牧师的祝福时间超过他们婚礼的持续时间的一半。问只有一个 牧师的话能不能成功主持所有这样婚礼分析: 贪心,可以先求出所有新人所需要祝福的时间,由于改时间超过婚礼的一半, 所以在[s,t]的中间时刻一定是要祝福新人,比如[1,5]时,2,3,4均要祝福; [1,4]时,2,3需要祝福,所以可以定义 ms:必须在祝福的最晚起始时间, me:必须在祝福的最早终止时间。 我们通过对ms进行排序,若相等则按me进行排序,再判断是否符合即可*/#incl... 阅读全文
posted @ 2012-06-13 14:17 yejinru 阅读(269) 评论(0) 推荐(0) 编辑
摘要: /*题目: 一个有n个节点的完全图,每条边、每个节点都有权值,在该图上求一个有m 个节点的生成树,使得该树的边权值和比点权和是所有m个节点的生成树中的 最小值,如果有多解输出字典序最小的分析: 递归枚举m个节点,然后根据prim算法求的该比率,记录最小的边权和比点权 和最小的那棵树即可*/#include <cstdio>#include <cstring>const int X = 17;#define INF 1e9int map[X][X];int wv[X],n,m;bool use[X];int ans[X];int mnode[X];double cn... 阅读全文
posted @ 2012-06-13 14:15 yejinru 阅读(176) 评论(0) 推荐(0) 编辑
摘要: /*题目: 找到所有在上面的窗口,窗口的大小最小高度和宽度均为3。分析: 通过搜索找到左上右下的坐标,然后再判断边上或里面是否有其他的字母,另外 注意由于窗口的大小最小为3*3。由于最大为100*100,O(n^3)暴搜算法即可 注意细节:6 10...........AAAAAAAA..A.BBB..A..A.B.B..A..A.BBB..A..AAAAAAAA.*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int X = 105;char 阅读全文
posted @ 2012-06-13 14:13 yejinru 阅读(160) 评论(0) 推荐(0) 编辑
摘要: /*2011年北京区域赛A题Qin Shi Huang's National Road System题目: 秦始皇想要修公路,使得这n座城市可以互达,题目给出n所城市的二维坐标以及每座城 市的价值,现在有人可以免费帮助秦始皇修理任意一条公路,现在要想使得比率A/B最大, A表示这条公路所在的两座城市的价值,B表示所有的公路长度(不包括这条公路的长度)。分析: 想要比率最大,所以A要尽可能大,B尽可能小。要使B尽可能小的话,可以先求的最小生 成树,然后枚举在最小生成树上的每条边,删除该边后得到的两个点集中分别找到最大价值 的点(城市),然后更新答案。时间复杂度... 阅读全文
posted @ 2012-06-13 13:56 yejinru 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 数据结构农夫三拳的一篇强大翻译阐述了LCA和RMQ的关系:http://www.cnblogs.com/drizzlecrj/archive/2007/10/23/933472.html线段树 NotOnlySuccess : http://www.notonlysuccess.com/SB树:陈启峰的论文《Size Balanced Tree》(高中国家集训队时陈启峰发表的)字符串后缀数组这两篇论文:国家集训队2004论文集_许智磊,后缀数组——处理字符串的有力工具罗穗骞(我感觉这篇讲得易懂些)KMP算法Matrix67:http://www.matrix67.com/blog/archiv 阅读全文
posted @ 2012-06-04 11:37 yejinru 阅读(257) 评论(0) 推荐(0) 编辑
摘要: poj 1226 Substringshttp://poj.org/problem?id=1226/*题目: 查找最长子串在所有给出的字符串或者它的反转的串中出现分析: 二分枚举所有可能的长度,然后用KMP算法判断该枚举的子串是否在所有给出的字符串 或者它的翻转串中出现。*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int X = 205;char in[X][X],p[X];int fail[X],len[X],n,lens;int mid 阅读全文
posted @ 2012-05-30 19:43 yejinru 阅读(257) 评论(0) 推荐(0) 编辑
摘要: /*题目: 求图中的任意两顶点是否两两互达分析: tanjan算法求得缩点的个数,判断是否为一即可*/#include <iostream>#include <cstdio>#include <vector>#include <cstring>using namespace std;const int V = 100005;vector<int> adj[V];int dfn[V],stack[V],low[V],bcnt,depth,top;bool instack[V];int n,m;//int father[V];void t 阅读全文
posted @ 2012-05-28 22:37 yejinru 阅读(290) 评论(0) 推荐(0) 编辑
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 30 下一页