随笔分类 -  搜索

摘要:考试的时候想了 Tarjan 和 Topsort ,发觉不对,改写玄学贪心:算 S 出发可以穿梭到达的点,以及原图上可以互相到达的点。枚举两个边界上相邻位置的点(比如 (x, 1) 和 (x, m) ),如果能被 S 穿梭到达,且两者可以直接到达(用并查集维护 Orz ),就是可行方案。不过显然有反 阅读全文
posted @ 2018-10-07 15:42 derchg 阅读(207) 评论(0) 推荐(0)
摘要:暴搜可以拿 60 。据说可以用 A* 搜可以拿 100 。我写的是 BFS预处理后SPFA ,跑得还算比较快。 移动过程可以分为两部分:A 空格移动到可移动的棋子四周(过程中不经过该棋子);B 可移动的棋子在空格的“帮助”下到达目标点。对于 A 过程,BFS 处理出到达上下左右的代价到 P[4] 里 阅读全文
posted @ 2018-07-25 17:23 derchg 阅读(188) 评论(0) 推荐(0)
摘要:找循环节时可以用 KMP 优化一下,但是 100 的数据嘛当然是选择暴力出奇迹呀。 Update: 2018/03/17 做另外一道类似的题时又想到了这道题,我的代码里每次 dfs(L, R) 都做了一次 KMP,非常笨。 可以预处理一下(求出 [L, R] 的 fail 数组后, [L, L+1] 阅读全文
posted @ 2018-03-11 16:37 derchg 阅读(159) 评论(0) 推荐(0)
摘要:这道题非常暴力,数据非常水。 根据题目 N+K <= 40 ,我的程序在 N = 5, K = 6 时就死掉了,但提交之后 0s 通过…… 1 #include <stdio.h> 2 #include <algorithm> 3 4 typedef long long LL; 5 6 const 阅读全文
posted @ 2018-03-11 15:23 derchg 阅读(133) 评论(0) 推荐(0)