自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 搜索方式的优缺比较

首先先来说明常见的搜索方式:(本人目前遇到的 以后遇到新的搜索方法继续更新)1.dfs(深度优先搜索)。2.bfs(广度优先搜索)3.迭代加深搜索(IDA*)一.dfs搜索方式是按照人为设定方向进行搜索不撞南墙不回头 所以适合做找解是否存在的问题 找最优解一般不会用其优点是空间开销少(因为状态的记录利用回溯是可以用一块内存空间来实现的)二,bfs搜索方式是由当前节点 同时向

2017-08-18 20:41:27 1679

原创 bfs时间复杂度及优化方向

个人对bfs的时间复杂度以前总是不太会分析 总以为时间复杂度就是 O(总的状态数) 对于一些简单的问题(状态数很少的问题)这么近似的确可以 但是随着题目做的多了有时候 对于状态数 为1e7 1e8 的题目 觉得能1s过 却发现会‘迷之’tle  其实tle是理所应当的 下面说一下对于bfs 时间复杂度的新认识 :bfs 的复杂度 大体由两点决定 1.状态数2.转移代价(由一种状态到另一种状

2017-08-14 22:42:45 6524

原创 集合的子集枚举

子集的枚举有三种方法:1.二进制法:这种方法最为简便 就是直接遍历数字 我们看每个数字的二进制 如果当前位为1 表示此在集合中 反之不在当然 二进制还支持 集合的模拟操作 比如集合的合并 用| ;集合的交 用 & ;集合的对称差  (A-B)并(B-A) 用^;2.递归枚举(位向量法)  我们用 vis[n]数组 来打标记 表示这一位的数字 是否选入集合 这种做法的复杂度是2的n+

2017-08-13 22:20:30 998

原创 23-G - The Morning after Halloween 迷宫搜索

题目链接https://vjudge.net/contest/177359#problem/G题目大意:题目的意思非常简单 就是说有至多三个幽灵(字母表示)给出他们的初始位置和最终位置 求出来他们回到终点的最短操作次数 一次操作可以对多个幽灵 每个幽灵可以选择up down left right 或不动 网格最大16*16 最多10组测试数据 每次操作不能使幽灵交换位置 (任意2*2的格子中至

2017-08-10 20:47:58 384

原创 UESTC 2017 Summer Training #22-G.Dreamoon and NightMarket

题意:给你一个长度为n的数组 (n=0)题解: 对于初始数组 我们先排个序(从小到大)我们最初的想法是 优先队列 维护目前的最小sum值和组成此sum的最右坐标 先把数组中单个的数字入队 之后对于目前的最小sum值 我们push进去接下来可能的最小值从此sum的最右坐标 到n扫一遍 更新sum与sum最右坐标 同时push 但是这样显然会超时每次pop 对应o(n)个操作

2017-08-07 19:26:47 381

原创 数据类型的最大最小值

头文件#include 中包含了各种数据类型的最大最小值 我们可以方便的直接调用。具体写法很简单:大写类型_MAX(MIN)即可调用比如 INT_MAX LONG_MAX LONG_LONG_MAX 若用unsigned的数据类型就在最前面加上U。如:ULONG_MAX

2017-08-02 20:22:06 801

原创 两线段相交的判别方法

向量运算有很多用途,判断两线段相交我们可以利用向量的叉积来计算。我们先来思考两线段相交的特点,显然是有一个公共点,也就是说对于每条线段来说,另一条线段总会穿过这条线段 所以线段的端点分布在另一条线段的两端既然是两端我们自然可以用叉积来判断(因为叉积的方向性)   至此问题解决 下面放上一道集训的题目 里面三角形的相交就是用 这里的线段相交来搞的补充:向量运算的c++写法struct n

2017-08-01 22:33:16 658

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除