摘要: 状态数不是很多,直接 bfs 输出方案就记录 pre 状态即可 但是问题在于存状态 可行的一些方案是:哈希/map,康托展开 于是就学了一波康托展开 用康托展开的地方的地方感觉不会很多,毕竟要 n^2 算 大概意思就是给一个排列 hash 计算出来的就是这个排列在所有 n 的排列中的排名 计算方式就 阅读全文
posted @ 2018-10-11 15:53 EvalonXing 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 第一道此类的题,所以这是一篇假的博客,定理不会证明不理性 也不一定对 我是从这篇博客看的 = = 很显然是让你求 p[i] = max{a[j] + sqrt(i - j)} - a[i] 就是 max{a[j] + sqrt(|i - j|)} 这是一个 1D/1D 动态规划 考虑对于绝对值的情况 阅读全文
posted @ 2018-10-11 09:46 EvalonXing 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 贪心中的"反悔" 阅读全文
posted @ 2018-10-10 19:46 EvalonXing 阅读(700) 评论(0) 推荐(0) 编辑
摘要: 看上去并不可 dp,实际也不可 dp 考虑线段树 当前还能上车的数量可以用线段树维护 考虑把区间按右端点排序,这样就可以贪心了 并不会证明,感觉挺显然? 大概就是你让早下车的上来了而不让晚下车的来这样可以让后边尽量上更多的 大概这样就行了 需要注意的是区间操作中都是 [l, r - 1] 因为你可以 阅读全文
posted @ 2018-10-09 20:07 EvalonXing 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 此题倍增比较好想 找第 k 近的点感觉不是很好想 没有想到啊—— 两个指针扫维护里当前点最近的 k + 1 个点, +1 是因为还要算上当前点考虑当 i + 1 时 l,r 的移动,为了保证最小,要把右端点+1的点和左端点进行比较,若 pos[r + 1] - pos[i] < pos[i] - p 阅读全文
posted @ 2018-10-08 08:48 EvalonXing 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 此题非常一眼 就是直接分别将 x,y 坐标离散化 并在离散化之后做二维前缀和 二分一下答案,O(n^2) 的 check 即可 注意在 check 当中的二分 x - mid 的过程中,需要去二分 x - mid + 1因为 STL lower_bound 是找大于等于参数的第一个数如果直接二分 x 阅读全文
posted @ 2018-10-02 19:14 EvalonXing 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 感觉此题还是挺可做的... 首先考虑最无脑的做法: 我需要知道接下来要给谁配对,在另一个数组中还没有被选的有哪些, 并记录已选的造成的贡献 要想知道没选的有哪些的话,这直接记录问题就很大了,考虑能不能省去这一步 那么无非是两个数组被选的集合的右端点同时往右扩张,或是每个数可与其配对的数的范围大概为一 阅读全文
posted @ 2018-09-29 22:00 EvalonXing 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 神仙题啊,感觉这道题比platinum可做一些 一开始xjb手玩玩得整个人都不好了 甚至不加分析乱写 只能过样例的那种 根据题意,其实它还是个冒泡排序,考虑每次交换 每次向后冒泡跨过的位置的下标一定是小于排序后这个数字对应的位置下标的 这时考虑离散化,不过并不能用那种 sort + unique + 阅读全文
posted @ 2018-09-25 09:45 EvalonXing 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 题意 给你 k 个数组,在每个数组中取出一个元素可以得到 k^k 个数,求这其中最小的 k 个数 数据范围显然是不能暴力的,想作法也只有一些乱搞做法 首先考虑只有两个数组的情况,就是当 k = 2 ,数组长度为 n 时,求出这其中最小的 n 个值 首先排序,列出一下一些表: a1 + b1, a1 阅读全文
posted @ 2018-09-25 07:23 EvalonXing 阅读(107) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-09-24 21:19 EvalonXing 阅读(3) 评论(0) 推荐(0) 编辑