搜索
__Lingyue__
微软亚洲研究院 实习生
展开
-
uva11212 编辑书稿 迭代加深
1. 迭代加深,逐层计算。2. 乐观估价函数,剪枝。3. 递归枚举,利用数组保存数据,之后恢复。4. 剪切一个片段并粘贴,最多改变3个后缀。5. 迭代加深的基本框架。原创 2016-08-05 00:44:17 · 549 阅读 · 0 评论 -
poj 3122 pie 【二分】
Problem: 给出n个圆的半径,体积均为1,分给f+1个人,每个人的体积相同,问最大的半径是多少?原创 2017-03-27 13:35:29 · 574 阅读 · 0 评论 -
n皇后
1. 利用x+y标记副对角线,利用x-y标记主对角线,+n防止为负2. G存图,n表示n皇后,ans是最后的结果,n > 0原创 2016-08-07 01:48:52 · 888 阅读 · 0 评论 -
LightOJ 1138 Trailing Zeroes (III) 二分查找
线性变化可以想二分。末尾的0的个数只和5有关。原创 2016-09-02 11:49:07 · 377 阅读 · 0 评论 -
uva12265 抓关键 矩形利用对角两点
1. 题目要抓住关键,这道题的关键是通过矩形的左上角定位矩形。2. 保存可能的最优解,并进行更新的思想。3. 一步一步想,要追求逻辑层次,画出来,不要贪快。例如:行往下遍历,列往右遍历,通过递增计算出来高度,通过一个数组保存可能的解并更新。4. 利用数组下标模拟栈。原创 2016-08-05 00:15:36 · 605 阅读 · 0 评论 -
uva1602 无方向位置的姿势判重
1. 存储一个姿势,不针对它的方向和位置。涉及三个动作:翻转,移动,旋转。2. 利用标准化使位置固定到一个相对位置上。3. 利用三个动作判重。4. 利用集合来无重复的保存解,5. 判断解的范围进行取舍。原创 2016-08-06 11:58:16 · 1061 阅读 · 0 评论 -
uva1599 bfs双向遍历 利用数组保存中间结果
1. bfs双向遍历。 a. 双向遍历可以保存多条最短路。 b. 无权无向图,还可以提升bfs效率,是单向bfs的2倍。2. 利用额外的数组保存值。3. 反向遍历输出路径。原创 2016-08-06 11:58:07 · 2322 阅读 · 0 评论 -
uva1374 快速幂计算 迭代加深优先逼近
1. 迭代加深优先递归时先逼近可能值,例如先加法后减法。2. 个数少时剪枝效果不好可以打表。3. 一层一层的dfs原创 2016-08-06 11:56:38 · 467 阅读 · 0 评论 -
uva1343 旋转游戏
1. 迭代加深```if(d+h() > maxd)//若true,则表示d次数太大,已经无法满足最少h()次的要求。 return false;```2. 利用两个数组,一个连续数组存值,另一个数组标识位置。3. 剪枝:状态合并,分类讨论。 分解目标个数,分别求解,使得过程中的状态得以合并。过程中状态复杂度往往不是线性,目标个数分解是线性,所以效率得以大幅度提升。原创 2016-08-06 11:55:48 · 471 阅读 · 0 评论 -
uva208 剪枝 连通块儿的判定
1. 图不一定是连通的,某些题型下要提前进行判断,进行剪枝。2. 递归遍历标记同一个连通块儿。3. 从结果遍历判断和结果在同一个连通块儿的子集。4. 子集遍历:核心在于递归前的cursor的++,和递归后cursor的--。原创 2016-08-06 11:54:36 · 559 阅读 · 0 评论 -
百炼 Zipper 剪枝
1. 写代码前一定要写好架构和一些细节。2. 利用变量保存字符串的ascii码值之和进行可行性剪枝。3. 若两字符串中所含各字母个数相同,则ascii值之和相同,反之不然,但大部分都是,可以剪枝。原创 2016-08-05 00:08:34 · 476 阅读 · 0 评论 -
uva11882 最大的数 bfs 遍历估价剪枝
1. 剪枝:利用bfs低复杂度遍历估价和最优解比较,剪枝后避免枚举子集造成的高复杂度时间浪费。2. 利用多次排序从大数开始遍历,或者利用优先队列。3. dfs+bfs剪枝。原创 2016-08-05 00:34:48 · 554 阅读 · 0 评论 -
二分查找 上下界 插入位置
1. 二分查找分递归和递推版本。2. 可以用来求上下界。3. 若找到,则返回下标,若没有找到,则返回-1。4. 二分查找的核心在于查找,并且数组有线性大小关系。原创 2016-08-04 22:42:49 · 520 阅读 · 0 评论