06 2012 档案
摘要:次小生成树:在求最小生成树时,用数组path[i][j]来表示MST中i到j最大边权。求完后,直接枚举所有不在MST中的边,把它加入到MST中构成一棵新的树,且该树有环,此环是由刚加入的边(I,j)造成的,所以可以通过删除path[i][j]即可得到新的一颗树,且所有的该类树中必有一棵为次小生成树。比如如图所示:G,H不是MST上的边,通过加入边(G,H),得到一个环(B,H,G),然后由于在计算最小生成树时已经计算出G,H之间最大边权为path[G][H] = BH,所以通过删除BH即可得到一棵此时最小的生成树,然后更新答案即可#include <iostream>#includ
        阅读全文
            
摘要:/*题目: 给出n,问n = b^p中p符合该等式的最大值分析: 先求出所有n的质因子,然后对这m个质因子分类统计,比如 n = 36时,可以分成 2个2,2个3,然后求出所有这些基数的 最大公因数gcd。另外由于有负数的存在,所以求到的gcd若 为偶数时,需要不断除二直到为奇数为止*/#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;const int X = 150000;int di[50],top;int pr
        阅读全文
            
摘要:/*题目: 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])...
        阅读全文
            
摘要:/*题目: 给出序列,其中一个子序列为(x,y,z),问最多有多少个这样的子序列, 使得x<z<y,其中该序列为1到n的排列分析: 由于是排列,所以不存在相同的元素,所以x,y,z互不相等。所以序列中 的大小关系可表示为 小中大+小大中 = 小__ __ ,所以答案 小大中 = 小__ __ -小中大 统计 小__ __可以统计该位后面的所有元素中比他大的个数为x,则 小__ __ = x*(x-1)/2 而统计小中大时,只需要统计前面比他小的以及后面比他大的个数x,y,则 小中大 = x*y 统计个数可以用树状数组...
        阅读全文
            
摘要:/*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
        阅读全文
            
摘要:/*题目: 有n对新人,他们的婚礼时间分别为[s,t],他们的习俗是需要牧师能够对新人 进行祝福,要求牧师的祝福时间超过他们婚礼的持续时间的一半。问只有一个 牧师的话能不能成功主持所有这样婚礼分析: 贪心,可以先求出所有新人所需要祝福的时间,由于改时间超过婚礼的一半, 所以在[s,t]的中间时刻一定是要祝福新人,比如[1,5]时,2,3,4均要祝福; [1,4]时,2,3需要祝福,所以可以定义 ms:必须在祝福的最晚起始时间, me:必须在祝福的最早终止时间。 我们通过对ms进行排序,若相等则按me进行排序,再判断是否符合即可*/#incl...
        阅读全文
            
摘要:/*题目: 一个有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...
        阅读全文
            
摘要:/*题目: 找到所有在上面的窗口,窗口的大小最小高度和宽度均为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
        阅读全文
            
摘要:/*2011年北京区域赛A题Qin Shi Huang's National Road System题目: 秦始皇想要修公路,使得这n座城市可以互达,题目给出n所城市的二维坐标以及每座城 市的价值,现在有人可以免费帮助秦始皇修理任意一条公路,现在要想使得比率A/B最大, A表示这条公路所在的两座城市的价值,B表示所有的公路长度(不包括这条公路的长度)。分析: 想要比率最大,所以A要尽可能大,B尽可能小。要使B尽可能小的话,可以先求的最小生 成树,然后枚举在最小生成树上的每条边,删除该边后得到的两个点集中分别找到最大价值 的点(城市),然后更新答案。时间复杂度...
        阅读全文
            
摘要:数据结构农夫三拳的一篇强大翻译阐述了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
        阅读全文
            
 
                    
                
 
 浙公网安备 33010602011771号
浙公网安备 33010602011771号