hdu 4923 Room and Moor (单调栈+思维)】的更多相关文章

题意: 给一个0和1组成的序列a,要构造一个相同长度的序列b.b要满足非严格单调,且 值为0到1的实数.最后使得  sum((ai-bi)^2)最小. 算法: 首先a序列開始的连续0和末尾的连续1是能够不考虑的. 由于仅仅要b序列相应开头为0. 末尾为1,既不影响单调性又能使相应的(ai-bi)^2=0. 然后, 先找111100.11100.10这样以1開始以0结束的序列块.每一块相应的b值相等且均为 这一块的平均值,即1的个数/0和1的总个数. 可是要满足b的单调性,则我们用栈来维护,假设后…
题意: 给你一个A数列,让你求一个单调递增的B数列(0<=bi<=1),使得sum{(ai-bi)^2}最小. 思路: 很明显,如果A = 0...01...1,那么bi=ai即可. 可以证明,如果 A = 1...10...0,那么所有bi达到同一个值的时候取得最优值. 假设 ai = 1, aj = 0, 那么 i<j ,所以bi<=bj. 若bi != bj,那么增大bi的值,或者减小bj的值都可以得到更优的结果. 所以,bi=bj. 所以,如果A数列里面出现了形如 &quo…
HDU 4924 Room and Moor 题目链接 题意:给定一个01组成的a序列.要求一个b序列,b序列每一个数值为[0, 1]之间的数,而且b序列为非递减序列,要求∑(ai−bi)2最小,求这个最小值 思路:推理,非常easy看出,开头一段的0和末尾一段的1等于没有.然后中间每段相似111000这样1在前,0在后的序列.都能够列出一个公式,非常easy推出选择的x为共同的一个值,为1的个数/(1的个数+0的个数)a,那么问题就变成要维护一个递增的x.利用一个栈去做维护,假设遇到一个位置递…
http://acm.hdu.edu.cn/showproblem.php?pid=5875 单调栈,预处理to[i]表示第一个比a[i]小的数字,一直跳就可以. 这题是数据水而已. 这里学习下单调栈. 构造一个单调递增的栈,并且记录元素大小的同时记录它的id. 每次进来一个小的元素的话,就出栈,同时出栈的这个元素的to[id] = i了,因为这个元素是当时最大的.然后这个a[i]是第一个能让它出栈的,所以就是它了.后面的同理. #include <cstdio> #include <c…
区间的价值 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Description   我们定义“区间的价值”为一段区间的最大值*最小值. 一个区间左端点在L,右端点在R,那么该区间的长度为(R−L+1). 现在聪明的杰西想要知道,对于长度为k的区间,最大价值的区间价值是多少. 当然,由于这个问题过于简单. 我们肯定得加强一下. 我们想要知道的是,对于长度为1…
题目链接:http://codeforces.com/contest/817/problem/D 题意:给你n个数a[1..n]定义连续子段imbalance值为最大值和最小值的差,要你求这个数组的imbalance总值 题解:首先要知道imbalance的值可以有所有区间的Max的和减去所有区间Min的和.那么就是怎么求所有区间的Max和与Min和.要知道如果是以a[i]为最小值那么最小值为a[i]的区间数为a[i]左边第一个小于a[i]的位置l,a[i]右边第一个大于等于a[i]的位置r,a…
>传送门< 题意:给你一个01矩阵,求出所有不可扩大的全为1的矩阵的个数 思路:比赛的时候想到了用单调栈,但是也只是想到了,并不知道怎么用,其实和之前求二维01矩阵中全为1的矩阵最大面积非常相像. 像到什么地步呢!!你想一个不能扩大的矩阵,也即是说不能向左右扩展,也不能向上扩展,那我们就用单调栈维护每一行中每个点能向上扩展的最大高度h. 目前到这里都和二位01矩阵求最大面积的解法一模一样!!接下来我们只需要判断这个矩阵能不能向下扩展就行了,对吧.这里我们就用数组记录一下,如果能向下扩展就记为1…
Problem Description PM Room defines a sequence A = {A1, A2,..., AN}, each of which is either 0 or 1. In order to beat him, programmer Moor has to construct another sequence B = {B1, B2,... , BN} of the same length, which satisfies that:   Input The i…
传送门 Room and Moor Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1288    Accepted Submission(s): 416 Problem Description PM Room defines a sequence A = {A1, A2,..., AN}, each of which is eit…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4923 解题报告:给出一个长度为n的只包含0和1的序列,是否存在一个序列Bi满足一下条件: 1.           0 <= B[i] <= 1 2.          B[i] <= B[i+1] 3.          f(A,B) = ∑(i=1-n) (A[i] - B[i])^2 4.          f(A,B)最小是多少 前面的0可以直接去掉,后面的1可以直接去掉,然后剩下中…