随笔分类 -  ACM相关-搜索二分

二分、搜索、快速幂、分治
摘要:题解 题意 给出一个无向图,求遍历所有点的最小花费 分析 1.BFS,设置dis[status][k]表示遍历的点数状态为status,当前遍历到k的最小花费,一次BFS即可 2.使用DP 代码 //BFS class Solution { public: int dis[1 & graph) { 阅读全文
posted @ 2018-06-07 09:27 遗风忘语 阅读(880) 评论(0) 推荐(0)
摘要:题意 略 分析 0.如果直接暴力1000^5会TLE,因此考虑剪枝 1.如果当前需要插入第i个单词,其剪枝如下 1.1 其前缀(0~i 1)已经知道,必定在前缀对应的集合中找 – 第一个词填了ball 后,第二个词必须以a开头 – 第二个词填了area后,第三个词必须以le开头 – 以其他开头的就没 阅读全文
posted @ 2018-06-02 21:58 遗风忘语 阅读(183) 评论(0) 推荐(0)
摘要:"传送门" 题意 略 分析 我们观察几张图 发现菱形的边长为n 1和m 1的公约数 将图简化一下 接下来我们计算只经过一次的点,分成两类 1.与边相交 2.未与边相交,在菱形内 答案为 其他 "SRM591" 阅读全文
posted @ 2017-09-23 19:19 遗风忘语 阅读(187) 评论(0) 推荐(0)
摘要:分析 猜了一下结论,居然对了..........具体操作是:假设排列s是1,2,3,...,nk为排列p中最大的 没有放到正确位置的数,k的位置为posk的右边一定有一个数x using namespace std; define ll long long define F(i,a,b) for(i 阅读全文
posted @ 2017-08-07 14:07 遗风忘语 阅读(127) 评论(0) 推荐(0)
摘要:"传送门" 题意 给出n种袜子,每种袜子个数a[i],两只相同种类袜子配成一对,询问至少拿出多少只袜子能 确保 配出k对袜子 分析 In order to find out the minimum number of socks needed, we should analyse the worst 阅读全文
posted @ 2017-07-07 14:03 遗风忘语 阅读(154) 评论(0) 推荐(0)
摘要:"传送门" 题意 给出n个区间[l,r]及花费$cost_i$,找两个区间满足 1.区间和为指定值x 2.花费最小 分析 先用vector记录(l,r,cost)和(r,l,cost),按l排序,再设置一个数组bestcost[i]代表长度为i的最小花费。 O(n)扫一遍,如果碰到区间左端点,更新答 阅读全文
posted @ 2017-07-04 10:30 遗风忘语 阅读(179) 评论(0) 推荐(0)
摘要:题意 询问两个区间[smin,smax],[wmin,smax]中是否存在k的倍数,使得k最大 分析 将其转化成$[\frac{smin 1}k,\frac{smax}k],[\frac{wmin 1}k,\frac{wmax}k]$ 用分块思想做,注意到这只有$O(\sqrt{n})$种取值,于是 阅读全文
posted @ 2017-06-25 13:24 遗风忘语 阅读(112) 评论(0) 推荐(0)
摘要:题意 给定一个由1和2组成的序列,多次询问是否存在一个区间满足区间和=x 分析 结论:假如存在一个子串和为x,那么一定存在一个前缀,和为x或x+1 证明:可以认为原串是由和为x的串在开头和结尾添加若干数得到,再后边添加数不会对产生和为x或x+1的前缀产生影响,所以只考虑在前边添加数,认为后边多余的数 阅读全文
posted @ 2017-06-24 23:52 遗风忘语 阅读(188) 评论(0) 推荐(0)
摘要:"传送门" 题意 从左到右有n个连续的组,每一组有Li个括号,要么全是左括号,要么全是右括号,以及该组的每一个左括号翻成右括号, 或者右括号翻成左括号的花费Di.可以对这n个组的括号进行翻转,每一个括号都可以选择翻或者不翻,使整个括号序列是一个合法括号序列。 分析 首先读入的时候将所有左括号变成右括 阅读全文
posted @ 2017-05-22 22:17 遗风忘语 阅读(270) 评论(0) 推荐(0)
摘要:"传送门" 题意 分析 这是我在51nod上的第2题,下载了4个数据,得不偿失?我太菜啦 一开始wa了6个点,下数据后发现舰与舰不能相邻,再交wa,发现l和r都没设好,再wa,发现check里面[1,b[1]]的判断写错了QAQ 此题二分[1,m],每次将[1,mid]的数排序,计算可放舰的数量,与 阅读全文
posted @ 2017-05-03 22:05 遗风忘语 阅读(191) 评论(0) 推荐(0)
摘要:"传送门" 题意 分析 只要从小到大二进制处理即可 我一直遍历了1 n,应该是0 1e6+1000 果然智障 trick 代码 include include include using namespace std; int a[1001001]; const int maxn=1e6+1000; 阅读全文
posted @ 2017-05-02 23:00 遗风忘语 阅读(166) 评论(0) 推荐(0)
摘要:"传送门" 题意 给出n m的矩阵,询问所有子矩阵中鞍点的个数 鞍点定义:在行 唯一最小 ,在列 唯一最大 分析 我们遍历每个点,计算该点对于答案的贡献即可。 每个点的贡献为$(2^{numa[i][j]}) (2^{numb[i][j]})$ numa[i][j]记录第i行大于该点的数个数 num 阅读全文
posted @ 2017-04-12 01:00 遗风忘语 阅读(182) 评论(0) 推荐(0)
摘要:"传送门" 题意 给出一副图 0.空地1.墙2.箱子3.目的地4.人所在的位置 问最少几步能将箱子推到目的地 分析 这道题难度略大(菜鸡),首先用vis[bx][by][mx][my]记录当箱子(bx,by)和人(mx,my)是否被访问过,用一个bfs求出最短路,另外dfs判断人是否能够到达推箱子的 阅读全文
posted @ 2017-04-10 16:46 遗风忘语 阅读(342) 评论(0) 推荐(0)
摘要:"传送门" 题意 给出一个只由'.'与' '构成的n m的图,在不多于k次转弯,问是否能让起点到达终点 分析 这道题花了我2h+,一开始写了一个优先队列+BFS+is数组标记,发现有一组数据过不了 又用队列重写,发现还是过不了,于是看了 "这篇blog" ,扫的时候要将同方向直到 的所有未访问点都放 阅读全文
posted @ 2017-04-06 23:32 遗风忘语 阅读(461) 评论(0) 推荐(0)
摘要:"传送门" 题意 逃离迷宫 分析 用优先队列和队列都可以,但是我vis数组写在取队列首节点就MLE了,放在放入节点的地方就ac了,看来是一种固定写法,在放入节点的地方判断,可以防止放入无效点到队列,防止队列过大而MLE,一般优先队列要用vis,但是类似胜利大逃亡(续)就不能这么做了 trick 1. 阅读全文
posted @ 2017-04-06 16:29 遗风忘语 阅读(160) 评论(0) 推荐(0)
摘要:"传送门" 题意 迷宫搜索 分析 这题写起来挺简单的,锻炼搜索基本功,一开始用记忆化搜索TLE了,改用访问标记,0ms过了,用优先队列保证终点最快达到,我会在代码中提供一些强力数据 trick 1.遇到梯子分能过(+1s)与不能过(+2s)入队列 2.一定有可行解 代码 阅读全文
posted @ 2017-04-05 23:19 遗风忘语 阅读(298) 评论(0) 推荐(0)
摘要:"传送门" 题意 给定一个n m的矩阵,询问q次,两个方块是否能被消掉,弯折次数不超过两次 分析 这题写了有一个下午,思路很简单,但是有很多trick,(唉),我还是太弱 trick 初始判断:1.两点不重叠 2.两点数值相等并且不为空 dfs中判断:1.每次访问节点深搜时打访问标记,回溯取消标记 阅读全文
posted @ 2017-03-31 16:38 遗风忘语 阅读(220) 评论(0) 推荐(0)
摘要:"传送门" 题意 给出一张n m的图 0.墙 1.可走之路 2.起始点 3.终点 4.时间重置点 问是否能到达终点 分析 我的训练专题第一题,一开始我设个vis数组记录,然后写炸,不能处理重置点根vis的关系,然后看了 "iaccepted" 这篇blog,换了一种思路,加了一个很好的剪枝,0ms过 阅读全文
posted @ 2017-03-30 22:10 遗风忘语 阅读(329) 评论(0) 推荐(0)
摘要:题目链接:借教室 题意:给出n天得教室数目,m个借教室得单子,按顺序借教室,问哪个单子不满足并输出 分析:可以用线段树做,会T,常数比较大,选择用差分序列维护前缀和,二分答案即可 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 阅读全文
posted @ 2016-10-22 19:29 遗风忘语 阅读(241) 评论(0) 推荐(0)