
搜索
shiyicode
已弃用! 可以通过shiyi@threebody.xyz联系我
展开
-
UVA - 220 Othello(黑白棋)
题目链接 说说 这种题做起来最难受了,思路上没什么难度,细节处理一大堆,一不小心就得wrong,这次还好,一气呵成,写好后稍加改动就过了。 这种题一般代码量是需要不少的,常常会有很多冗余的部分,所以在写的过程中就要怎样让接近的功能用一个函数去实现,尽力让代码充分利用,这样去想也许会多一点做它的动力了。 需要注意的地方,输出黑白棋子数量的时候,数字要格式化输出占两位(%2d)代码#原创 2015-11-21 03:57:42 · 3429 阅读 · 0 评论 -
51Nod 1405 树的距离之和(dp)
1405 树的距离之和基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注给定一棵无根树,假设它有n个节点,节点编号从1到n, 求任意两点之间的距离(最短路径)之和。思路: 首先,任选一个节点,设定为树的根。 用num[x]表示以节点x为根的子树的节点总数(包含x自身) 假如设定节点1为根,则先求出dp[1],表示所有节点到节点1的距离之和, 对根而言也是所有节点的深度之和。 若x是y的子结点,则有 dp[x] = dp[y] +原创 2016-02-01 21:05:14 · 2419 阅读 · 1 评论 -
HDU 1078 FatMouse and Cheese(记忆化搜索)
题目链接:[kuangbin带你飞]专题十二 基础DP1 P - FatMouse and Cheese题意 给n*n地图,老鼠初始位置在(0,0),它每次行走要么横着走要么竖着走,每次最多可以走出k个单位长度,且落脚点的权值必须比上一个落脚点的权值大,求最终可以获得的最大权值 (题目很容易会理解错题意,道友小心)思路 记忆化搜索,具体见代码注释代码#include<iostrea原创 2016-01-25 18:45:19 · 1795 阅读 · 1 评论 -
[kuangbin带你飞]专题二 搜索进阶 C - 哈密顿绕行世界问题(HDU 2181)
题目链接:哈密顿绕行世界问题(HDU 2181)思路 起点和终点相同的dfs代码#include <stdio.h>#include <iostream>#include <vector>#include <math.h>#include <algorithm>#include <queue>#include <string.h>#include <set>#include <原创 2015-11-29 16:44:01 · 829 阅读 · 0 评论 -
UVA - 10384 推门游戏(IDA*+剪枝)
题目链接 题意 求最少需要几次乘除法可以从x得到x^n?思路 也就是求1经过最少加减可以得出n 序列初始只有1,每次选任意两数进行加减,加入序列 使用IDA*迭代加深搜索剪枝条件 当前序列最大值*(2^max-步数) < n 即后边步数一直按最快的求法仍然比n小优化方案 1.迭代的max值不从1开始,而是从log(n)开始 2.每次只对最大值进行加原创 2015-12-17 17:28:16 · 1345 阅读 · 1 评论 -
[kuangbin带你飞]专题一 简单搜索D - Fliptile(POJ 3279)
题目大意给一个N行M列的矩阵,值分别为0和1,每次你可以选择将一个变成相反状态,同时,它周围的四个数也会变为相反状态。 问:最少翻转多少次,可以将所有值都变成0 多个解,输出翻转次数最少的(若有次数相同解,输出字典序小的) 若无解,输出”IMPOSSIBLE”思路对于每个点,只能有两种操作,翻或不翻,若暴力所有可能性,需要2^(M*N)次操作,显然不可行 所以有了这个法子。 先枚举第一原创 2015-11-18 05:26:48 · 3293 阅读 · 2 评论 -
UVA - 1589 Xiangqi (象棋)
题目链接:UVA - 1589 Xiangqi 题目大意: 给定一个象棋残局,黑方只有一个将,红方有帅以及3种可能棋子(车马炮),当前局面合法并保证红方已将军,问是否可以将黑方将死? 思路: 很简单的一道题,可以对黑将可走的地方进行判断,判断红方是否可以攻击到。或者标记红方所有子可以攻击的点,然后判断黑将可走的坐标中有没有没被标记的。 思路简单,写的过程wrong了好多次,因为好多小细节,原创 2015-11-21 01:43:34 · 2188 阅读 · 0 评论 -
UVA - 1374 Power Calculus(IDA*+剪枝)
题目链接 题意 求最少需要几次乘除法可以从x得到x^n?思路 也就是求1经过最少加减可以得出n 序列初始只有1,每次选任意两数进行加减,加入序列 使用IDA*迭代加深搜索剪枝条件 当前序列最大值*(2^max-步数) < n 即后边步数一直按最快的求法仍然比n小优化方案 1.迭代的max值不从1开始,而是从log(n)开始 2.每次只对最大值进行加原创 2015-12-16 05:04:19 · 836 阅读 · 0 评论 -
初学A*算法求解静态地图的最短路径
以前所接触过的最短路径算法是dijkstra或floyd之类的,都是在已知每两点之间距离的情况下求最短路的。那么想一下这样的案例 给你一个地图,类似于迷宫一样,中间有些障碍物,再给定起点终点,求该两点间最短路,显然,上述两种算法就不适用了,因为提到的迷宫,我们可能会很容易想到广搜bfs,但一次bfs下来实际上求出了起点到所有点的最短路径,但我们只想知道它与终点间的最短路径,也就是说这个方案里有很原创 2015-12-07 04:13:08 · 7919 阅读 · 0 评论 -
[kuangbin带你飞]专题二 搜索进阶 I - A计划(HDU 2102)
题目链接I - A计划 思路: 还是正常的bfs,多了一层而已。在移动时,增加判断,如果下一步为时光传输机且对应的节点为空地,则加入队列,否则continue即可。代码:#include <stdio.h>#include <iostream>#include <vector>#include <math.h>#include <algorithm>#include <queue>原创 2015-11-29 01:25:33 · 724 阅读 · 0 评论 -
GDUT Krito的讨伐(bfs&&优先队列)
题意Description Krito终于干掉了99层的boss,来到了第100层。第100层可以表示成一颗树,这棵树有n个节点(编号从0到n-1),树上每一个节点可能有很多只怪物。 Krito现在在0号节点,现在它想要区清除这一层所有的怪物。他现在有atk大小的攻击力。只有当你的攻击力大于这只怪物的防御力时,你才可以打败他,同时每打败只怪物,你会获得一定的攻击力加成。一个节点可能存在着不止一只原创 2016-04-11 02:30:02 · 2468 阅读 · 0 评论