第一问类似最长上升序列,只不过因为要满足能修改所以不能直接求
比如2 3 4 4 5 最长上升序列长是4,但是最少修改是2,因为一个这个最长上升序列不能保持不变
因此我们对a[i]-i,然后求这个新序列ai的最长不下降序列即可
第二问我们设f[i]表示以位置i结尾的最长不下降序列长度
显然要满足修改最少的数显然一个修改区间是[j+1,i-1]满足f[i]=f[j]+1 且 a[j]<=a[i]
这里有一个性质,就是这个区间内一定最后刷成a[i]或a[j]
然后暴力搞,然后数据弱就过了

 const inf=;
type node=record
po,next:longint;
end; var f,q,a,b,p:array[..] of longint;
v,c,d:array[..] of int64;
w:array[..] of node;
m,n,t,l,r,j,k,i:longint; function min(a,b:int64):int64;
begin
if a>b then exit(b) else exit(a);
end; begin
readln(n);
for i:= to n do
begin
read(a[i]);
a[i]:=a[i]-i;
end;
a[]:=-inf;
t:=;
q[]:=;
f[]:=;
for i:= to n do
begin
if (a[i]>=a[q[t]]) then
begin
inc(t);
f[i]:=t;
q[t]:=i;
end
else begin
l:=;
r:=t;
while l<r do
begin
m:=(l+r) shr ;
if a[i]<a[q[m]] then r:=m else l:=m+;
end;
q[l]:=i;
f[i]:=l;
end;
end;
writeln(n-t);
inc(n);
a[n]:=inf;
f[n]:=t+; //新增加一个无穷大的点方便统计
t:=;
for i:=n+ downto do
begin
inc(t);
w[t].po:=i;
w[t].next:=p[f[i]];
p[f[i]]:=t; //记录满足f[j]+=f[i]的点
end;
for i:= to n do
begin
j:=p[f[i]-];
l:=w[j].po;
d[i]:=;
for k:=i- downto l+ do
d[k]:=d[k+]+abs(a[k]-a[i]);
v[i]:=inf*inf;
while j<> do
begin
if w[j].po>i then break;
l:=w[j].po;
if a[l]<=a[i] then
begin
c[l]:=;
for k:=l+ to i- do
c[k]:=c[k-]+abs(a[k]-a[l]);
for k:=l to i- do
v[i]:=min(v[i],c[k]+d[k+]+v[l]);
end;
j:=w[j].next;
end;
end;
writeln(v[n]);
end.

bzoj1049的更多相关文章

  1. 【BZOJ1049】 [HAOI2006]数字序列

    BZOJ1049 [HAOI2006]数字序列 dp好题? 第一问 第一问我会做!令\(b_i=a_i-i\),求一个最长不下降子序列. \(n-ans\)就是最终的答案. 第二问 好难啊.不会.挖坑 ...

  2. BZOJ1049 [HAOI2006]数字序列0

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  3. BZOJ1049: [HAOI2006]数字序列

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1049 题解: ydc的题解:http://pan.baidu.com/share/link?u ...

  4. BZOJ1049:[HAOI2006]数字序列(DP)

    Description 现在我们有一个长度为n的整数序列A.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列. 但是不希望改变过多的数,也不希望改变的幅度太大. Input 第一行包含一个 ...

  5. 洛谷P2501 bzoj1049 [HAOI2006]数字序列

    题目链接 bzoj 洛谷 题解 第一问: 假如 \(i < j\) 如果 \(j\)能从\(i\)转移过来 显然中间空隙必须足够 例如:\(50\) \(53\) \(53\) \(52\) 就 ...

  6. 【BZOJ1049】【Luogu P2501】 [HAOI2006]数字序列 DP,结论,LIS

    很有(\(bu\))质(\(hui\))量(\(xie\))的一个题目. 第一问:求最少改变几个数能把一个随机序列变成单调上升序列. \(Solution:\)似乎是一个结论?如果两个数\(A_i\) ...

  7. bzoj题解汇总(1032~1051)

    bzoj1034:贪心 bzoj1036:树剖 bzoj1037:一个比较巧妙,利用连续性维护的dp. http://www.cnblogs.com/Sdchr/p/6129496.html bzoj ...

  8. Codeforces 713 C Sonya and Problem Wihtout a Legend

    Description Sonya was unable to think of a story for this problem, so here comes the formal descript ...

  9. BZOJ第1页养成计划

    嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1000   BZOJ1001   BZOJ1002   BZOJ1003   BZOJ1004   BZOJ1005   ...

随机推荐

  1. 那天有个小孩跟我说LINQ(六)转载

    2  LINQ TO SQL完结(代码下载)      我们还是接着上次那个简单的销售的业务数据库为例子,打开上次那个例子linq_Ch5 2.1 当数据库中的表建立了主外键 ①根据主键获取子表信息 ...

  2. iOS开发——友盟分享

    ==========2016-01-29 更新=====刘成利 email:liu_cheng_li@qq.com========== 自己成功集成到公司的项目前,也已做了测试好的友盟分享demo 目 ...

  3. javaScript中with的用法

    1 JavaScript中的with语句的作用是为逐级的对象访问提供命名空间式的速写方式, 也就是在指定的代码区域, 直接通过节点名称调用对象 初次接触到with用法,是这样一段代码: 1 2 3 4 ...

  4. Djang DJANGO_SETTINGS_MODULE

    在 site-packages\django 新建一个文件 ’settings.py‘ 内容如下: DEBUG = TrueDEFAULT_FROM_EMAIL = 'alangwansui@qq.c ...

  5. linux的fork函数

       fork函数  头文件:#include<unistd.h> 函数原型:pid_t fork( void);(pid_t 是一个宏定义,其实质是int 被定义在#include< ...

  6. asp.net学习资源汇总

    名称:快速入门地址:http://chs.gotdotnet.com/quickstart/描述:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例程序 ...

  7. JAVA NIO之Character Set

    明白以下几个概念: 字母集(Character Set),汉字,特殊符号,字母这些都是字符集: 字符编码集(Coded character set),将字符集的字符使用数字进行编码:比如ASCII,就 ...

  8. iOS 改变UILabel部分颜色

    //协议 UILabel *xieLabel = [[UILabel alloc] init]; xieLabel.textColor = TextGrayColor; xieLabel.font = ...

  9. Tomcat基础教程(四)

    一.将Web应用部署到Tomcat中 为什么要部署?将Web应用部署到Tomcat中,那么Tomcat就能找到相应的Web应用,当Tomcat启动时就会加载和初始化Web应用,而在Tomcat启动后, ...

  10. 从小白进阶ubuntu高手的必经之路—命令

    精选的十二个ubuntu下的命令,熟记于心,则能甩掉ubuntu小白标签,高手的伟岸形象焕然生发.一.管理员权限绝大部分情况下,命令的行为须要被赋予管理员权限才能执行.命令 sudo 作用:赋予当前命 ...