思维题
Glory_g
明日之我胸中有沟壑,立马振山河
展开
-
Codeforces Round #421 (Div. 2) D. Mister B and PR Shifts
题意 : 给你一个n个数的排列,每次操作就是将整个排列向右循环移动一次,问你移动多少次可以使得 abs (p[i] - i) 的和最小?题解 :我们考虑每次向右移动对答案的贡献应该怎么算,我们将 1-n 这个排列称为目标位置,将我们输入的排泄称为原始排列,我们需要求出有多少个i 我们将原始排列分成两类,一类是在目标位置左边的,一类是在目标位置右边的,记录下这两类的个数,并且记录左边的需要走多少原创 2017-08-26 22:58:31 · 214 阅读 · 0 评论 -
Codeforces Round #408 (Div. 2) D.Police Stations【Bfs+思维】
题意 : 给你n个点,给你m个警察局,每个警察局有一个控制范围k,让你删除尽量多的边使得,每个点都可以被警察局控制。题解 : 这个题我们要考虑哪些类型的边可以被删掉,就是那些被两个警察局同时控制的边,这种边是什么样的呢 ? 就是说这条边的两个点分别被两个警察局控制,这样的边就可以删掉,我们怎样找这样的边呢 ? 我们就可以开始的时候将所有的警察局的点都扔进队列,做bfs 这样的将访问的边和点都打原创 2017-08-27 21:12:06 · 172 阅读 · 0 评论 -
HDU 2196 Computer(求树上每个节点到其它点的最远距离 树dp)
题意:求树上每个节点到其他节点的最大距离。题解 : 用树dp 首先我们发现每个节点要么先向上走要么先向下走,并且只要向下走就会一直向下走直到走到叶子节点,如果向上走那么下一步即可以向上走也可以向下走。我们用f[i] 表示第一步向下走时 i 节点走到的最远距离 g[i] 表示第一步向上走走到的最远距离,不难得到一个状态转移方程 : f[i] = max (f[j] + cost[i][j]) 其原创 2017-08-28 10:50:40 · 1008 阅读 · 0 评论 -
Codeforces 863D Yet Another Array Queries Problem
题意 :一个序列支持两种操作 1. 将 l 到 r 向右移动一个单位 2. 将l 到 r 翻转题解 :首先注意到这个题目是一种离线的查询方式,另外又发现这个题最后的询问只有100个,这样的话我们不难想到这个题目应该有 O( 100 * 2e5 ) 的算法。考虑到每一次的操作只会影响在这个操作后面的操作,但是不会影响前面的操作,所以我们只需要逆序的将所有的操作模拟一遍就可以了。#include <原创 2017-10-01 10:40:28 · 263 阅读 · 0 评论 -
Codeforces 863E - Turn Off The TV
题解 : 这个题目看了一下,大概想了 3 分钟 线段树 结果就 呵呵 了 还怀疑自己连线段树都不会了 …..emmmm 后来才发现 这就不是个线段树的题目 (不过据说姿势水平高的人线段树也能过) 贴一组 hack 线段树的数据813 1783 8931 337 1352 5288 8929 3016 22answer :6正解 :这个题的巧妙之处在于它只让你找到一个被覆盖的原创 2017-10-02 22:19:08 · 565 阅读 · 0 评论 -
Codeforces Round #443 (Div. 2) C Short Program
题解 : 这个题目让你求少于 5 个的一种表示,对于每一个数的使用。其实就是对于每个数的每一位不管是 0 还是 1 都可以变成相应的数 我们就可以先让每一位都是 0 和每一位都是1 的数 (0 和 1023) 分别对这些操作进行操作,然后,这样的话我们就知道了每一位0、1操作之后变成了什么东西,然后我们就可以仅用 | 和 ^操作表示这些操作 ans <= 2; 具体细节看代码.#include <原创 2017-10-27 12:40:24 · 265 阅读 · 0 评论 -
Codeforces Round 444 div2 D Ratings and Reality Shows (双指针)
题解 : 这个题目其实就让让我们不断动态维护一个区间的区间最小值,看这个最小值是否小于 0;对于这种题目我们可以使用双指针的方法来进行求解 第一个指针指向开始的位置,第二个指针指向结束的位置。在指针不断的移动过程中我们需要维护一个是当前的 rating 一个是这个区间改变的 rating 一个是改变 rating 的最小值,这三个量都可以在更新的过程中维护,时间复杂度就是 o (n)。 具体看代码原创 2017-11-08 11:57:38 · 204 阅读 · 0 评论 -
Codeforces Round #441 (Div. 2)F. High Cry 按位考虑 + 思维
题意 :就是给你 n 个数让你求满足 这个区间内最大的数小于这个区间内所有数或起来的区间个数。 题解 : 正面处理这个问题比较麻烦我们就先求出不满足的区间,然后用总的区间减去,不满足的就是答案。 剩下的问题就是怎么求不满足的区间呢 ? 首先我们要求出每个数的控制范围 (就是说掌控的意思是这个数or所有其他数等于自己) 首先按位考虑这个问题 如果当前的数的某一位是1那么这一位就可以不考虑,如果原创 2017-10-17 00:42:56 · 346 阅读 · 0 评论