【BZOJ1831】[AHOI2008]逆序对(动态规划)

【BZOJ1831】[AHOI2008]逆序对(动态规划)

题面

BZOJ
洛谷

题解

显然填入的数拎出来是不降的。
那么就可以直接大力\(dp\)
\(f[i][j]\)表示当前填到了\(i\),上一个填的数是\(j\)的最小逆序对数。
随便拿什么维护一下转移就好了。

#include<iostream>
#include<cstdio>
using namespace std;
#define MAX 10010
inline int read()
{int x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
int n,K,sum,a[MAX],ans=1e9,f[MAX][101],s1[101],s2[101];
int main()
{n=read();K=read();for(int i=1;i<=n;++i)a[i]=read();for(int i=1;i<=n;++i)if(~a[i])s2[a[i]]+=1;for(int i=1;i<=K;++i)s2[i]+=s2[i-1];for(int i=1;i<=K;++i)s1[i]=s2[i];for(int i=1;i<=n;++i)if(~a[i]){sum+=s1[a[i]-1];for(int j=a[i];j<=K;++j)s1[j]-=1;}for(int i=1;i<=n;++i)if(~a[i]){for(int j=1;j<=K;++j)f[i][j]=f[i-1][j];for(int j=a[i];j<=K;++j)s2[j]-=1,s1[j]+=1;}else{for(int j=1;j<=K;++j)f[i][j]=f[i-1][j]+s2[j-1]+s1[K]-s1[j];for(int j=1;j<K;++j)f[i][j+1]=min(f[i][j+1],f[i-1][j]+s2[j]+s1[K]-s1[j+1]);for(int j=2;j<=K;++j)f[i][j]=min(f[i][j],f[i][j-1]);}for(int i=1;i<=K;++i)ans=min(ans,f[n][i]);printf("%d\n",ans+sum);return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/10486547.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chrome控制台如何把vw显示成px_【CSS】rem,em,px的区别和使用场景

前端潮咖点击上面蓝字&#xff0c;关注我们&#xff01;关注关注前端潮咖&#xff0c;每日精选好文作者&#xff1a;大前端小菜鸟来源&#xff1a;cnblogs.com/hyns/p/12380944.html作rem布局原理深度理解(以及em/vw/vh)一、前言我们h5项目终端适配采用的是淘宝那套《Flexible实…

php7对象转换成数组,php 如何把对象转换成数组对象

php把对象转换成数组对象的方法&#xff1a;首先打开相应的PHP代码文件&#xff1b;然后通过“function array_to_object($arr){...}”方法把对象转换成数组即可。本文操作环境&#xff1a;windows7系统、PHP7.1版&#xff0c;DELL G3电脑php-对象(object) 与 数组(array) 的转…

python中的线程之semaphore信号量

semaphore是一个内置的计数器 每当调用acquire()时&#xff0c;内置计数器-1 每当调用release()时&#xff0c;内置计数器1 计数器不能小于0&#xff0c;当计数器为0时&#xff0c;acquire()将阻塞线程直到其他线程调用release()。 来看下面的代码&#xff1a; import time imp…

用什么代码可以改变键盘_为什么我改变了对代码质量的看法

用什么代码可以改变键盘by John Cobb约翰科布(John Cobb) 为什么我改变了对代码质量的看法 (Why I changed the way I think about Code Quality) What do you think about when you think about code quality?当您考虑代码质量时&#xff0c;您会怎么看&#xff1f; Is it …

建模:建模清单

ylbtech-建模&#xff1a;建模清单1.返回顶部 2.返回顶部3.返回顶部4.返回顶部5.返回顶部 6.返回顶部作者&#xff1a;ylbtech出处&#xff1a;http://ylbtech.cnblogs.com/本文版权归作者和博客园共有&#xff0c;欢迎转载&#xff0c;但未经作者同意必须保留此段声明&#xf…

获得picker选项的当前年月值_如果你用OPPO手机!千万记得开启开发者选项,手机性能大幅度提升...

如果你用OPPO手机&#xff01;千万记得开启开发者选项&#xff0c;手机性能大幅度提升用过OPPO手机的用户都知道&#xff0c;手机使用1-2年都会出现卡顿的情况。这也是安卓手机的通病&#xff0c;但也有很多朋友手机使用3年也不会出现卡顿的现象&#xff0c;都是因为打开了手机…

imageset matlab,如何以imageSet或imageDataStore的形式向MATLAB中的BagOfFeatures()函數提供輸入?...

我想使用MATLAB的bagOfFeatures()函數。但它需要以imageSet或imageDataStore的形式輸入。我想運行的代碼如下&#xff1a;如何以imageSet或imageDataStore的形式向MATLAB中的BagOfFeatures()函數提供輸入&#xff1f;Dataset D:\dsktop\kinect_leap_dataset\acquisitions;thre…

Django运维后台的搭建之四:用bootstrap模板让运维前台变得更漂亮

我对于PHP和ajax是属于二把刀的水平&#xff0c;所以做网页前端肯定是比上天还难&#xff0c;但是我又想把网页做的漂亮可爱&#xff0c;怎么办呢&#xff1f;我就只好去download别人的模板&#xff0c;在这里我使用了bootstrap框架做的模板。各位可以去https://wrapbootstrap.…

codeigniter_如何在浏览器中查看CodeIgniter日志文件

codeigniterby Seun Matt通过Seun Matt 如何在浏览器中查看CodeIgniter日志文件 (How to View CodeIgniter Log Files in the Browser) Just like any other page, it is now possible to read CodeIgniter log files in the browser. My Sweet Goodness!与其他页面一样&#…

小程序强制自动更新

(3)强制更新官方版 微信团队2018-03-2315987浏览背景 此前有开发者反馈小程序发布新版本后&#xff0c;新版本覆盖率比较慢&#xff0c;因为小程序的更新机制是异步的&#xff0c;部分用户不会马上应用上新版本。 小程序启动会有两种情况&#xff0c;一种是「冷启动」&#xff…

联想m7400pro更换墨粉盒怎么清零_佳能打印机怎么换墨水 佳能打印机换墨水注意事项【详解】...

佳能打印机是我们办公室用品中比较常见的一个品牌&#xff0c;作为国际知名品牌&#xff0c;其质量也是非常有保障的。在使用的时候打印机没有墨是经常会遇见的。这时候我们就需要更换墨水盒了。但很多不知道具体步骤&#xff0c;或者没有注意相关细节&#xff0c;导致换墨水盒…

oracle数据库连接数超了,oracle数据库当前和最大连接数

1、查询oracle的连接数select count(*) from v$session;2、查询oracle的并发连接数select count(*) from v$session where statusACTIVE;3、查看不同用户的连接数select username,count(username) from v$session where username is not null group by username;4、查看所有用户…

MySQL Workbench导出数据库

步骤&#xff1a; 1. 打开mysql workbench&#xff0c;进入需要导出的数据库&#xff0c;点击左侧栏的【Management】tab键。 2. 点选要输出的数据库 点击【Data Export】选在要输出的数据库选择是否输出存储过程和函数&#xff0c;事件&#xff0c;触发器 点击Start Export3. …

django 传递中文_如何在Django中建立消息传递状态

django 传递中文by Ogundipe Samuel由Ogundipe Samuel 如何在Django中建立消息传递状态 (How to Build a Message Delivery Status in Django) Today, we will make a real-time message delivery status framework with Django and Pusher.今天&#xff0c;我们将使用Django和…

软链接与硬链接

文件引用模型 在linux中&#xff0c;一切皆文件&#xff0c;而文件包含元数据&#xff08;metedata&#xff09;和用户数据&#xff08;user data&#xff09;。元数据中的inode号是系统标识和获取用户数据的唯一凭证&#xff0c;而文件名仅是为了方便用户记忆和使用。为了管理…

c++ 数组的输入遇到特定字符停止输入_C语言 第4章-字符串和格式化输入/输出

#include 用数组name储存字符串&#xff0c;name数组有40个字节&#xff0c;每个字节储存一个字符值。在scanf()函数中&#xff0c;输入字符串name没有&前缀。C预处理器把字符常量DENSITY定义为62.4。strlen()获取字符串长度。1. 字符串1.1. char类型数组双引号标记字符串&…

vue3+typescript引入外部文件

vue3typescript中引入外部文件有几种方法 &#xff08;eg:引入echarts&#xff09; 第一种方法&#xff1a; 1 indext.html中用script引入 <div id"app"></div><script src"https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts-en.common.min.js…

在哪能找到陌生人聊骚_如何说服陌生人帮助您找到工作

在哪能找到陌生人聊骚by Alex Lacey通过亚历克斯莱西 找工作吗&#xff1f; 这是说服陌生人帮助您找到一个人的方法 (Looking for a job? Here’s how to convince strangers to help you find one) 我过去获得40个推荐的7个步骤 (The 7-step process that I used to get 40 …

Python基础 day2

Python基础 一、Python的数据类型 1、int(整型) 在32位机器上&#xff0c;整数的位数为32位&#xff0c;取值范围为-2**31&#xff5e;2**31-1&#xff0c;即-2147483648&#xff5e;2147483647&#xff0c;而.在64位系统上&#xff0c;整数的位数为64位&#xff0c;取值范围为…

matlab 文件指针回到开头,[c/c++] 文件指针位置回到文件开头(rewind)及行开头(ftell+fseek)...

待读入文件1.greenteemo2.csdn3.blog代码&#xff0c;详细说明见注释#include #define LENGTH_OF_LINE 1024int main(){FILE *fp fopen("file.txt", "r"); // 打开文件char line[LENGTH_OF_LINE];while( fgets(line, LENGTH_OF_LINE, fp) ){printf("…