BZOJ1367 [Baltic2004]sequence】的更多相关文章

欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1367 题意概括 Description Input Output 一个整数R 题解 http://blog.csdn.net/u011265346/article/details/46532421 我被自己坑死了. 左偏树合并: if (a==0||b==0) return a+b; 这样是对的. 然而: if (a*b==0) return a+b; 这样是错的. 原因是:a*b会爆int………
题目链接 BZOJ1367 题解 又是一道神题,, 我们考虑一些简单的情况: 我们先假设\(b_i\)单调不降,而不是递增 对于递增序列\(\{a_i\}\),显然答案\(\{b_i\}\)满足\(b_i = a_i\) 对于递减序列\(\{a_i\}\),显然答案\(\{b_i\}\)满足\(b_i\)为\(a_i\)的中位数 于是我们有了初步的想法: 将\(a_i\)分成若干个单调递减的段,每段的答案为其中位数 然后顺次访问段 如果两段的答案是递增的,显然这两段就没有影响,相互独立了,就保留…
1.题目大意:给一个序列t,然后求一个序列z,使得$|z1-t1|+|z2-t2|+...+|zn-tn|$的值最小,我们只需要求出这个值就可以了,并且z序列是递增的 2.分析:这道题z序列是递增的,不好做啊,我们想让z序列变成不降的,可以将t数组进行改变,就是t[i]-=i.不降的就好做多了,我们可以让一段下降的t序列对应的z序列全是中位数.但是我们还要维护z序列是单调的,于是我们从头扫,用一个单调栈,对于每一个t,先压进栈,如果栈顶元素的中位数比栈的第二个元素要小,就把栈顶和第二个元素合并,…
现学的左偏树...这可是道可并堆的好题目. 首先我们考虑z不减的情况: 我们发现对于一个区间[l, r],里面是递增的,则对于此区间最优解为z[i] = t[i]: 如果里面是递减的,z[l] = z[l + 1] = ... = z[r] = 这段数的中位数,不妨叫做w.(此处我们定义中位数为第(r - l + 1) / 2大的数,因为这并不影响结果) 而其实递增可以转化为每一段只有一个点,就等价于递减了. 那么我们把原数列分段,每段都是递减的,而每一段的z都是那段的中位数w.这样就找到了最优…
n<=1e6个数,把他们修改成递增序列需把每个数增加或减少的总量最小是多少? 方法一:可以证明最后修改的每个数一定是原序列中的数!于是$n^2$DP(逃) 方法二:把$A_i$改成$A_i-i$,变论文题:论文 大概证明是这样的:考虑合并两个区间的答案,假如一个区间答案是{u,u,u,……,u},另一个是{v,v,v,……,v},那合并之后,如果u<=v最优就{u,u,……,u,v,……,v}:如果u>v,假设最优是 {b1,b2,……,bn,bn+1,……,bm},那么一定有bn<…
Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 解题思路: 有趣的数学题. 首先确定序列的构造方式. 要求差的绝对值最小,并且递增. 这肯定是照着A序列做的,那么很显然的结论: 若A是递增的,那么Z一定是A序列. 若A是平的,那么Z一定是公差为1的等差数列,中位数为A中的唯一值. 那么就发现了,若保证其非减的话是非常容易得到最优解的. 不断合并中位数即可,原理就是绝对值函数那个好几截…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1367 题解 先考虑条件为要求不下降序列(不是递增)的情况. 那么考虑一段数值相同的子段,这一段相同的数值显然应该是原序列 \(t\) 中对应的位置上的数的中位数. (不是中位数答案一定比中位数大) 所以问题转化为划分成很多段,每一段的权值是中位数,要求权值不下降. 对于一段,每一次往前扫,只要前面的中位数比它大,那么就合并. 可以用可并堆维护每一段,只保留中位数以下的数.合并左偏树实现即可.…
[BZOJ1367][Baltic2004]sequence Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15,18.R=13 题解:详见论文 然而本题要求z[i]严格递增,那就让所有t[i]-=i就好了 #include <cstdio> #include <cstring> #include <iostrea…
2016-05-31 17:31:26 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1367 题解:http://www.cnblogs.com/rausen/p/4033724.html 说一下堆里维护的是什么. 维护的是所代表区间的中位数,这是一棵大根堆,只有序列递减时我们才会合并堆,也就是加入的数是小的,所以只会将中位数变小,弹出堆顶更新. 题目要求的是单增的序列,但我们这样求出的是不减. 一个小技巧,就是每个数在读入时减去i,这样…
1367: [Baltic2004]sequence Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 932  Solved: 348[Submit][Status][Discuss] Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15,18.R=13 Source Solution 论文…
1367: [Baltic2004]sequence Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15,18.R=13 Source [分析] 这题主要是要证明结论.详见hyh的论文. 先说说结论做法: 把序列分成m个区间,每个区间最后到达的值都是u.u为这个区间所有数的中位数. 先做一个小小的转化,题目要求b1<b2<...b3…
1367: [Baltic2004]sequence Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 1111  Solved: 439[Submit][Status][Discuss] Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15,18.R=13 这里是hyh的题解及严谨证明 这里…
BZOJ 1367 [Baltic2004]sequence Description 给定一个序列\(t_1,t_2,\dots,t_N\),求一个递增序列\(z_1<z_2<\dots<z_N\),使得\(R=|t_1-z_1|+|t_2-z_2|+\dots+|t_N-z_N|\)的值最小,本题中,我们只需求出这个最小的\(R\)值 Input 第\(1\)行为\(N(1\le N\le10^6)\) 第\(2\)行到第\(N+1\)行,每行一个整数.第\(K+1\)行为\(t_k(…
1367: [Baltic2004]sequence Time Limit: 20 Sec  Memory Limit: 64 MB Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15,18.R=13 详细证明请看IOI2005国家集训队论文  黄源河 https://wenku.baidu.com/view/20e9ff18964b…
1367: [Baltic2004]sequence Time Limit: 20 Sec  Memory Limit: 64 MB Submit: 1090  Solved: 432 [Submit][Status][Discuss] Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15,18. R=13 Source [题解]: 详…
浅谈左偏树:https://www.cnblogs.com/AKMer/p/10246635.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=1367 显然,如果给出的数组是递增的,那么答案就是\(0\). 如果给出的数组是递减的,根据贪心的思想答案就是\(\sum\limits_{i=1}^{n}|x-t_i|\),\(x\)是\(t\)数组的中位数. 但是给出的数组是无序的. 我们可以把这个数组划成一段段的,每一段都选一个\(x…
题目描述 输入 输出 一个整数R 样例输入 7 9 4 8 20 14 15 18 样例输出 13 题解 可并堆,黄源河<左偏树的特点及其应用>Page 13例题原题 #include <cstdio> #include <cstring> #include <algorithm> #define N 1000010 using namespace std; int a[N] , root[N] , l[N] , r[N] , d[N] , w[N] , t…
题意 给\(n(n \le 10^6)\)个数的序列\(a\),求一个递增序列\(b\)使得\(\sum_{i=1}^{n} |a_i-b_i|\)最小. 分析 神题啊不会. 具体证明看黄源河论文<左偏树的特点及其应用> 思路: 将问题转化为求一个不降序列\(b\). 如果\(a_1 \le a_2 \le ... \le a_n\),则最优解显然是\(b_i=a_i\) 如果\(a_1 \ge a_2 \ge ... \ge a_n\),则最优解显然是\(b_i=w\),其中\(w\)是\(…
题目描述: 给定一个序列t1,t2,...,tn ,求一个递增序列z1<z2<...<zn , 使得R=|t1−z1|+|t2−z2|+...+|tn−zn| 的值最小.本题中,我们只需要求出这个最小的R值. 样例输入 7 9 4 8 20 14 15 18 样例输出 13 提示 所求的Z序列为6,7,8,13,14,15,18. R=13 题解: 考虑t1>=t2>=t3>=t4这种递减的情况,那么整个z只需取t数组的中位数即可. 由于z是递增数列,不能全取一样的数.…
题面:BZOJ传送门 题目大意:给你一个序列$a$,让你构造一个递增序列$b$,使得$\sum |a_{i}-b_{i}|$最小,$a_{i},b_{i}$均为整数 神仙题.. 我们先考虑b不递减的情况 假设现在有一段单调的序列$A$ 如果$A$是递增的,显然$b[i]=a[i]$是最优解 如果$A$是递减的,$b$的每一项=序列$A$的中位数时是最优解 简单证明一下递减的情况: 1.序列$A$元素数量是奇数时,我们以中位数为对称轴,那么对称的两个数带来的贡献就是它们的差值,而中位数本身不会产生…
一.什么是贪心 贪心算法嘛... 就是在对某个问题求解时,总是做出在当前看来是最好的选择 In other wors,并不是从整体最优上加以考虑,而是在获得某种意义上的局部最优解 二.贪心算法的适用前提 局部的最优解能导致最后整体的最优解,即局部的最优解不受该部分以外的东西的影响 对于贪心算法,我们需要证明:整个问题的最优解一定由在贪心策略中存在的子问题的最优解得来的 实际上,能用贪心算法的问题很少,大部分看上去能用贪心算法去做的题目,其实都得不到最优解T T(这时候就需要运用动态规划了) 而看…
1367: [Baltic2004]sequence Time Limit: 20 Sec   Memory Limit: 64 MB Submit: 521   Solved: 159 [ Submit][ Status] Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15,18. R=13 左偏树+1 这题裸裸的左偏树,我却各种W…
Preface 可并堆,一个听起来很NB的数据结构,实际上比一般的堆就多了一个合并的操作. 考虑一般的堆合并时,当我们合并时只能暴力把一个堆里的元素一个一个插入另一个堆里,这样复杂度将达到\(\log(|A|)+\log(|B|)\),极限数据下显然是要T爆的. 所以我们考虑使用一种性价比最高的可并堆--左偏树,它的思想以及代码都挺简单而且效率也不错. 学习和参考自这里 What is Leftist Tree 左偏树,顾名思义就是像左偏的树,但是这样抽象的表述肯定是不符合我们学OI的人的背板子…
其实非常好理解..就是可以可以合并起来的两个堆嘛>< 2809: [Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都有且仅有一个上级.为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接下属,而不允许通过其他的方式发送.现在你要招募一批忍者,并把它们派遣给顾客.你需要为每个被派遣的忍者 支付一…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
题面 Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 Hint 所求的Z序列为6,7,8,13,14,15,18. R=13 Solution 我们首先来考虑另一个问题: 给定一个数列\(\{a_n\}\), 求一个单调不下降的\(\{b_n\}\), 使得\(\sum |b_n - a_n|\)最小. 考虑两种较为特殊情况: \(a_1 \le a_2 \le ... \le a_…
题意: 题解: 其实这是道水题啦……只不过我没做过而已 先考虑构造不严格递增序列,考虑原序列中的一段下降区间,显然区间中的$z$全取中位数最优: 那么可以把原序列拆成很多个下降序列,从头到尾加入原序列中的数,每次把加进来的数看成一个新的下降区间,然后不断合并最后两个区间直到,最后一个区间的中位数不小于倒数第二个区间的中位数: 用可合并堆维护即可,左偏树啥的都行,我写的斜堆: 可合并堆如何维护区间中位数?只保留较小一半的数,则堆顶就是中位数: 要构造严格递增序列只需要把原序列中的每个数$t_i$减…
考虑两种情况: 1.\(a_1\)<\(a_2\)<\(a_3\)<\(a_4\)...<\(a_n\) 直接令\(b_i\)=\(a_i\),最小. 2.\(a_1\)>\(a_2\)>\(a_3\)>\(a_4\)...>\(a_n\) 初一的一道绝对值题是这题的弱化版. 给定\(a_1\),\(a_2\)...\(a_n\),求一点x,使得\(abs(a_1-x)\)+\(abs(a_2-x)\)...+\(abs(a_n-x)\)值最小 直接求中位数…
oracle创建序列化: CREATE SEQUENCE seq_itv_collection            INCREMENT BY 1  -- 每次加几个              START WITH 1399       -- 从1开始计数              NOMAXVALUE        -- 不设置最大值              NOCYCLE               -- 一直累加,不循环              CACHE 10; oracle修改序列…
功能:备份存储过程,视图,函数触发器,Sequence序列号等准备工作:--1.创建文件夹 :'E:/OracleBackUp/ProcBack';--文本存放的路径--2.执行:create or replace directory MyProcBakPath as 'E:/OracleBackUp/ProcBack';--3.赋权限:sqlplus /nologconn user/pswd as sysdbagrant select on DBA_OBJECTS to user;--4.创建…