Description

[0,x]中全是1,其余全是0,每个点有一个权值,求最坏情况下得到x的最小权值.

Sol

DP+单调队列.

你可以去看我的这篇Blog...开这篇纯属为了骗访问...

http://www.cnblogs.com/beiyuoi/p/5974574.html

Code

/**************************************************************
Problem: 2448
User: BeiYu
Language: C++
Result: Accepted
Time:1316 ms
Memory:48420 kb
****************************************************************/
#include<cstdio>
#include<iostream>
using namespace std; const int N = 2005;
#define A(x) (f[i][x-1]+a[x])
#define B(x) (f[x+1][j]+a[x]) int n,a[N];
int f[N][N],g[N][N];
int q[N][N],h[N],t[N]; inline int in(int x=0,char ch=getchar(),int v=1){
while(ch!='-' && (ch>'9'||ch<'0')) ch=getchar();if(ch=='-') v=-1,ch=getchar();
while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*v; } int main(){
// freopen("in.in","r",stdin);
n=in();
for(int i=1;i<=n;i++) a[i]=in(); for(int i=n;i;--i){
f[i][i]=a[i],g[i][i]=i; //f[i][j]=min{ f[i][k-1]+t[k] },g[i][j]<=k<=j; =>q[0]
//f[i][j]=min{ f[k+1][j]+t[k] },i<=k<g[i][j]; =>q[j] h[0]=1,t[0]=0;
h[i]=1,t[i]=0;
q[i][++t[i]]=i; for(int j=i+1;j<=n;++j){
//g[i][j]
g[i][j]=g[i][j-1];
while(g[i][j]<j && f[i][g[i][j]-1] < f[g[i][j]+1][j]) ++g[i][j]; //q[0].pop g[i][j-1]--(g[i][j]-1)
for(int k=g[i][j-1];k<g[i][j];++k)
if(q[0][h[0]] == k) ++h[0];
//j->q[0]
while(h[0]<=t[0] && A(q[0][t[0]]) > A(j)) --t[0];
q[0][++t[0]]=j; //q[j].pop g[i+1][j]-g[i][j]
for(int k=g[i+1][j];k>=g[i][j];--k)
if(q[j][h[j]] == k) ++h[j];
//i->q[j]
while(h[j]<=t[j] && B(q[j][t[j]]) > B(i)) --t[j];
q[j][++t[j]]=i; //f[i][j]
f[i][j]=min(A(q[0][h[0]]),B(q[j][h[j]])); }
} // for(int i=1;i<=n;i++) for(int j=1;j<=n-i+1;j++) printf("%d%c",g[j][j+i-1]," \n"[j==n-i+1]);
// cout<<"***"<<endl;
// for(int i=1;i<=n;i++) for(int j=1;j<=n-i+1;j++) printf("%d%c",f[j][j+i-1]," \n"[j==n-i+1]); cout<<f[1][n]<<endl;
return 0;
}

  

BZOJ 2412: 电路检修的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. BZOJ 2448: 挖油

    Description [0,x]中全是1,其余全是0,每个点有一个权值,求最坏情况下得到x的最小权值. Sol DP+单调队列. 首先就是一个 \(O(n^3)\) 的DP. \(f[i][j]\) ...

  3. 3*060-A 日志记录

    电路检修遇到的问题: 今天在检修一块3060-A电路板时 发现   3.3V烫 但是3.3V路上的电容并没有短路 于是拆单片机   拆RS232EN  拆  FM24V 最后发现  原来是  1117 ...

  4. U盘常见故障及检修

    一般U盘故障分为软故障和硬故障,其中以软故障最为常见.  软故障主要是指U盘有坏块,从而导致U盘能被计算机识别,但没有盘符出现,或者有盘符出现,但当打开U盘时却提示要进行格式化,而格式化又不能成功.前 ...

  5. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  6. [模拟电路] 2、Passive Band Pass Filter

    note: Some articles are very good in http://www.electronics-tutorials.ws/,I share them in the Cnblog ...

  7. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  8. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  9. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

随机推荐

  1. 20145212 《Java程序设计》第7周学习总结

    20145212 <Java程序设计>第7周学习总结 教材学习内容总结 时间的度量 格林威治时间(GMT):通过观察太阳而得,因为地球公转轨道为椭圆形且速度不一,本身自传减速而造成误差. ...

  2. Linux下Redis服务器安装配置

    说明:操作系统:CentOS1.安装编译工具yum install wget  make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel ...

  3. How to read a scientific paper

    How to read a scientific paper Nothing makes you feel stupid quite like reading a scientific journal ...

  4. 获取ip的ip138.com

    代码: function get_onlineip() { $ch = curl_init('http://iframe.ip138.com/ic.asp'); curl_setopt($ch, CU ...

  5. 一个 Sql语句优化的问题- STATISTICS 统计信息

    前段时间,同事遇到一个 Sql语句的问题,一个列表分页功能响应在30 s以上,看数据库里面的数据条数,数据量也不大,相关字段的一些索引也都有,可就是慢.于是找出具体的sql 语句出来分析,分页功能主要 ...

  6. Mongodb3.0.6副本集+分片学习笔记

    一.使用问题记录 1. mongodb3.0.6使用mongostat参数 >./mongostat -h 127.0.0.1:27017 -u root -p 123456 /authenti ...

  7. commons-pool实战之 GenericObjectPool和GenericKeyedObjectPool

    前面两篇文章说了怎么样简单的使用commons-pool库,这里需要考虑一个问题就是在很多时候我们在池里的对象都是比较重型的并且大多数比较稀缺的 资源,比如说数据库连接,这样如果一直把一些连接放在池里 ...

  8. Java Runtime.availableProcessors()方法

    Java Runtime.availableProcessors()方法用法实例教程.   描述 java.lang.Runtime.availableProcessors() 方法返回到Java虚拟 ...

  9. pch

    #define kWeakSelf(weakSelf) __weak __typeof(self)weakSelf = self; #ifndef __OPTIMIZE__#define NSLog( ...

  10. 希望各位博友能对我的自我介绍提出意见(要面试IBM的应用开发工程师,本科应届生一枚)

    面试官你好,首先我非常高兴能参加今天的面试. 我叫XXX(我名字里面有光宗耀祖),也许父母希望我光宗耀祖吧,所以给我起这样的名字.我的家乡山西太原,本科就读于XX大学,专业是信息与计算科学. 我今天要 ...