CF980C Posterized】的更多相关文章

Posterized time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Professor Ibrahim has prepared the final homework for his algorithm’s class. He asked his students to implement the Posterization…
先来吐槽一下这个 sb 翻译,根本就没做过题吧-- 大概就是让你给值域分成连续的几组,每组大小不能超过 \(k\),然后将序列中的值全部替换成其组内的最小值,要使得序列的字典序最小. 因为是字典序,所以越前面的值要尽量小.对于还未处理过的第一个值,找到能包含它的最小值,然后暴力分组. 时间复杂度 \(O\left(nk\right)\). code: #include<bits/stdc++.h> using namespace std; #define Max(x,y)((x)>(y)…
传送门:http://codeforces.com/contest/980/problem/C 参考 题意:给定n个数字,每个数在0~256间,现在给至多连续k的数分为一组,给出字典序最小的答案. 思路:贪心,对于每一个a[i],查找max(0,a[i] - k + 1)到 a[ i ] 中符合vis[ t ] ==t || vis[ t ] = -1的最小数字 T ,把这个T到 a[ i ]间的更新为T; #include <bits/stdc++.h> using namespace st…
Posterized 题意:将[0,255] 分成 若干段, 每一段的长度最多为k, 每一个数只能被放进一个段里, 然后每一段的数组都可以被这一段最小的数字表示, 求最小的字典序. 题解:每次一个访问到一个数没被放到段里时, 就在不破环前面分好段的情况下, 尽可能将这个数分到前面段里去.然后将路上的点全部分到这段里. 不要去去现在处理的这个数 的后面的区域. 如k = 10; 现在 有一个序列为 1, 11 那么 如果你每次都从头开始染长度k的话, 那么答案就是 0, 10, 但是如果你每次就染…
题意: 255个像素格子,可以把这个255个分组,每组的大小不能超过k. 给出n个像素,要求每个像素用这组的key代表,并且表示出来的字典序要最小. 思路: 感谢js教本智障. 很自然的会想到贪心,也就是说,每次对当前的数,都要找到最小的可以当它的key的数. 那么这种数只能有两种情况,一种是这个数还没有使用过,另一种就是这个数是自己的key,其它情况都不满足. 比如 4 32 14 3 4 2找到0,然后把0到2的key都变为0: 找3的时候,由于1,2已经被使用,所以3只能找到自己. 代码:…
题意:让你对[0,255]这个序列任意划分成一些不重叠的子段,每个子段的大小不超过K.给你n个不超过255的数,让你将每个数替换成它所在子段的任意一个元素,使得最终这个n个数的序列的字典序最小. p[x]代表x作为代表元素的话,其所控制的区间的最后一个元素是谁. 读入一个数a的时候,在[0,255]数轴上找它前面的离它最近的一个已被标记的数b,如果与其的距离不超过K,则a的代表元素就是b,然后将p[b]更新成max(p[b],a). 如果b与a的距离比K还大,就把控制a的元素记为c=max(a-…
Description Professor Ibrahim has prepared the final homework for his algorithm’s class. He asked his students to implement the Posterization Image Filter. Their algorithm will be tested on an array of integers, where the i-th integer represents the…
题目地址:http://codeforces.com/contest/980/problem/C 官方题解: 题解:一共256个像素网格,可以把这个256个分组,每个分组大小<=k.给出n个像素格子,要求每个像素用分组里的一个数表示,并且表示出来的字典序要最小. 方法:先把数组a全部赋值为-1,表示数组的这个数未分组.然后一个个数字扫进来,如果这个数字没有分组的话,我们找到这个组的范围max(0,p-k+1)~p,如果前面的最小数字未分组或者分组的情况是它自己的话,我们就从前面最小的数字到p分组…