07 2010 档案
摘要:1、题目类型:凸包。2、解题思路:(1)建立点集map[][];(2)Graham法求解凸包,中间对于斜率的排序用的是STL的sort();(3)求解凸包边长的和加上以L为周长的园的周长。3、注意事项:凸包处理过程中,Graham(),用于记录的结构体数组的开始与结束。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:凸包。2、解题思路:(1)建立点集map[][],为了避免负数用ADD=10000进行的处理;(2)Graham法求解凸包,中间对于斜率的排序用的是STL的sort();(3)求解凸包中点间的最大距离。3、注意事项:凸包处理过程中,考虑是一条直线上面的情况,即使在一条直线不是一个凸包。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:计算几何,最小生成树。2、解题思路:(1)获得所有点路径长度的矩阵map[][];(2)利用Prim算法求解最小生成树。3、注意事项:数学操作,中间值全部用double保存。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:计算几何。2、解题思路:(1)建立点结构体Node;(2)给四条边上的点赋值(3)利用四个点坐标确定交点坐标的GetPoint()获得点集Point[][];(4)利用多边形面积求解方法GetArea()获得面积集合Area[][];(5)取面积集合的最大面积。3、注意事项:计算几何模板的套用,如求解面积的方法模板需要控制参数点的顺时针或者逆时针顺序;求交点中,用到直线公式注意其K为...
阅读全文
摘要:1、题目类型:组合数学。2、解题思路:模拟后发现题意为组合数学的简单题。3、注意事项:求排列组合函数C()的定义,C()中 (n-m)<m?(n-m):m 将大大提高运算效率。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:组合数学、数论。2、解题思路:题意,给出两个数a和b,求出[a,b]之间,有多少个数为round number。round number的定义:其二进制数中0的数量大于或等于1。3、注意事项:右移过程,在匹配1成功时注意怎样取组合数,以及组合数结束的条件。4、实现方法:[代码]//计算组合m组中的n组__int64 C(int m,int n){ __int64 r=1; int h...
阅读全文
摘要:1、解题思路:数论,打表素数,大数表示,大数除法。2、注意事项:利用1000进制除法,如果用100、10000进制将会超时。3、实现方法:(C++)[代码]4、程序实现:(Java)[代码]
阅读全文
摘要:1、解题思路:数论,大数处理。2、注意事项:A可以唯一分解成p1^a1*p2^a2*...pi^ai...*pn^an;公式:(A*B)%C=((A%C)*(B%C))%C;中间值全部用__int64表示;利用位运算如:n&1,判断n的奇偶性。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:数论,打表,分层筛选。2、注意事项:分层筛选中,摒弃的条件判断;首次1A。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:概率论,DP。2、注意事项:动态递推式中每轮、每组内部每队间比较的获胜概率的记录、更新;STL中max_element()的简单应用;pow()在VC与Dev C中编译的不同。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:概率论,计算几何。2、注意事项:题意理解圆心在m*n的矩形中运动;中间值用double类型记录;注意题干中的输出格式。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:深度搜索,位运算。2、注意事项:题目理解为只要之前经过了Ci城市都可以取值Pi,注意Pi<=Ri用于判断;用位运算标示第i个城市是否访问过;递归中注意控制阀值为1、2、3都可以,但是1可以AC是因为数据不强,当取阀值为5的时候,提交将会超时。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:经典深度搜索。2、注意事项:输入单个字符scanf、cin.get();DFS中搜索比较位置的判断;正搜超时,反搜0ms。3、实现方法[代码]
阅读全文
摘要:1、解题思路:经典广度搜索。2、注意事项:设置标记数组避免重复访问。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:经典深度搜索。2、注意事项:骑士跳转的顺序(注意字母编撰顺序),DFS中递归注意控制入口的数目。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:字典树,并查集,欧拉通路。2、注意事项:字典树的插入;并查集与DFS的结合;欧拉回路的判断。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:并查集。2、注意事项:借用father[]、rank[]两个数组记录的小技巧。3、实现方法:[代码]
阅读全文
摘要:1、题目类型:字符串、字典树、排序查找。2、解题思路:找寻字符串的字串。3、注意事项:trie树Insert()时后继数组的更新,注意考虑对比当前数据和字典中数据长、短、相等这三种情况,注意控制静态开辟结构体数组的长度。4、实现方法:(trie树:Memory: 26108K、Time: 641MS)[代码]5、实现方法:(排序查找:Memory: 836K、Time: 391MS)[代码]
阅读全文
摘要:1、解题思路:哈夫曼树。2、注意事项:STL中优先队列容器(priority_queue)的应用,定义__int64位ans。3、实现方法:[代码]
阅读全文
摘要:1、题目类型:哈希表、位运算。2、解题思路:题意,N个数,它们用K位的二进制表示,寻找最长的区间使其各个进制位上的和都没有发生变化的情况。步骤,(1)将所有N个数转化为K位的二进制形式,并比较与初始位置的差值存储在arr[i]中;(2)Hash编码arr[i],Hash编码公式为:tmp=((tmp<<2)+(v[i]>>4))^(v[i]<<10) ;(3)判...
阅读全文
摘要:1、解题思路:哈希表。2、注意事项:哈希函数,利用冲突处理。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:树状数组,归并排序。2、注意事项:树状数组的更新,归并排序的递归;注意用长整型保存结果。3、实现方法:(树状数组:Memory: 11016K、Time: 797MS)[代码]4、实现方法:(Mergesort: Memory: 3692K、Time: 391MS)[代码]
阅读全文
摘要:1、解题思路:简单题。2、注意事项:algorithm中sort()的调用。3、实现方法:[代码]
阅读全文
摘要:1、题目类型:字符串、暴力法、KMP算法。2、解题思路:寻找最长的公共子串,STL中string部分方法的应用。3、注意事项:string.h中库函数的调用,KMP匹配。4、实现方法:(暴力法)[代码]4、实现方法:(KMP)[代码]
阅读全文
摘要:1、题目类型:字符串、暴力法、trie树。2、解题思路:(1)记录字符串字典;(2)每输入一个字符串,查找字典中是否存在;(3)如果不存在,依次寻找其是否可以通过字典中字符串替换、添加、删除单个字符获得。3、注意事项:string.h库函数的使用:trie树的指针的判断,TNode结构体的设计。4、实现方法:(暴力法)[代码]5、实现方法:(trie树)[代码]
阅读全文
摘要:1、解题思路:基本数据结构stack。2、注意事项:出栈必须先入栈、Num的越界。3、实现方法:[代码]
阅读全文
摘要:1、解题思路:数论、STL。2、注意事项:i++使用,跟踪i的值;STL的简单应用。3、实现方法:(复杂版)[代码]4、实现方法:(STL精简版)[代码]
阅读全文