BZOJ_3427_Poi2013 Bytecomputer_DP

Description

给定一个{-1,0,1}组成的序列,你可以进行x[i]=x[i]+x[i-1]这样的操作,求最少操作次数使其变成不降序列。

Sample Input

6
-1 1 0 -1 0 1

Sample Output

3


分析:容易知道最后的序列中一定只有-1,0,1

f[i][j]表示当前在第i个人,把这个数变成j的最小花费。

枚举这一位和前一位都是啥,满足能转移的条件即可。

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 1000050
int a[N],f[N][3],n;
int main() {
int i;
scanf("%d",&n);
memset(f,0x3f,sizeof(f));
for(i=1;i<=n;++i) scanf("%d",&a[i]);
f[1][a[1]+1]=0;
for(i=2;i<=n;++i) {
if(a[i]==-1) {
f[i][0]=f[i-1][0];
//f[i][1]=f[i-1][2]+1;
f[i][2]=f[i-1][2]+2;
}else if(a[i]==0) {
f[i][0]=f[i-1][0]+1;
f[i][1]=min(f[i-1][1],f[i-1][0]);
f[i][2]=f[i-1][2]+1;
}else {
f[i][0]=f[i-1][0]+2;
f[i][1]=f[i-1][0]+1;
f[i][2]=min(min(f[i-1][0],f[i-1][1]),f[i-1][2]);
}
}
int tmp=min(min(f[n][0],f[n][1]),f[n][2]);
if(tmp>10000000) {
puts("BRAK");
}else printf("%d\n",tmp);
}

BZOJ_3427_Poi2013 Bytecomputer_DP的更多相关文章

随机推荐

  1. js常用 弹出确认 取消对话框

    <!DOCTYPE html><html><head> <title></title> <meta charset='utf-8'&g ...

  2. 解决记录:win10 无法安装VS2017,visual studio installer下载进度始终为0

    问题描述:win10 下无法安装VS2017,visual studio installer下载进度始终为0,点击取消按钮后,也没有反应,visual studio installer也关闭不掉: 具 ...

  3. JavaScript中两个对象数组 属性undefined

    var BaiduUsers = []; var UserArray = function(name, phone, id, id2) { this.name = name; this.phone = ...

  4. MLDS笔记:Generalization

    1 泛化能力 用VC维来衡量一个模型的表达能力,比如2维线性模型的VC维为3. 在图1-2中,随便给啥训练数据该model都能learn起来. 从理论上来看,当2个model在训练数据上表现一样时,为 ...

  5. VirtualBox 自动挂载共享文件夹

    在文件 /etc/rc.local 中(用root用户)追加如下命令 mount -t vboxsf sharing /mnt/share 重启后就大功告成了,网上大部分说的修改etc下面的fstab ...

  6. TypeScript 的声明文件的使用与编写

    https://fenying.net/2016/09/19/typings-for-typescript/ TypeScript 是 JavaScript 的超集,相比 JavaScript,其最关 ...

  7. ERR_NAME_NOT_RESOLVED错误的解决

    参考:http://zhidao.baidu.com/link?url=-Beq80OXoSKef_9SmGXkQHvq2AkSE0aGfac02ykorglQF6JTP7F1XNtVxFn9EMfn ...

  8. ccos2d-x 学习

    渲染驱动方式,事件驱动方式 this->addChild(pSprite, 0); 的第二个参数(int zOrder)表示要添加到this类对象中的顺序.是由里向外的方向.值越大表示越在外面. ...

  9. python__基础 : 类的__init__,__str__,__del__方法

    __init__:当实例化一个类的时候,首相会执行__new__方法创建一个对象,接下来会执行__init__方法对对象的一些属性进行初始化. 所以如果对象有属性,一般会直接写在__init__方法里 ...

  10. 微信小程序开发入门:10分钟从0开始写一个hello-world

    小程序开发需要三个描述整体程序的app文件 和 一个描述多个页面的 pages文件夹. (1)三个app文件分别是app.js,app.json,app.wxss. app.js文件是脚本文件处理一些 ...