BZOJ 1200 木梳
Description


Input
第一行为整数L,其中4≤L≤100000,且有50%的数据满足L≤104,表示木板下侧直线段的长。第二行为L个正整数A1,A2,…,AL,其中Ai≤108
Output
仅包含一个整数D,表示为使梳子面积最大,需要从木板上挖掉的格子数。
Sample Input
4 4 6 5 4 2 3 3 5
Sample Output

HINT
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
using namespace std; #define inf (1LL<<60)
#define maxn 100010
typedef long long ll;
int h[maxn],pp[maxn][],n; ll f[maxn][][],ans=inf,sum; int main()
{
freopen("1200.in","r",stdin);
freopen("1200.out","w",stdout);
scanf("%d",&n);
for (int i = ;i <= n;++i)
{
scanf("%d",h+i); sum += h[i];
for (int j = h[i] - ;j <= h[i] + ;++j)
{
pp[i][++pp[i][]] = j;
if (i-) pp[i-][++pp[i-][]] = j;
if (i-) pp[i-][++pp[i-][]] = j;
if (i + <= n) pp[i+][++pp[i+][]] = j;
if (i + <= n) pp[i+][++pp[i+][]] = j;
}
}
for (int i = ;i <= n;++i)
{
sort(pp[i]+,pp[i]+pp[i][]+);
pp[i][] = unique(pp[i]+,pp[i]+pp[i][]+)-pp[i]-;
while (pp[i][] && pp[i][pp[i][]] > h[i]) --pp[i][];
}
memset(f,,sizeof(f));
for (int i = ;i <= pp[][];++i) f[][][i] = f[][][i] = pp[][i];
for (int i = ;i <= n;++i)
for (int j = ;j <= pp[i-][];++j)
for (int k = ;k <= pp[i][];++k)
{
if (pp[i-][j]<pp[i][k])
f[i][][k] = max(f[i][][k],f[i-][][j]+pp[i][k]);
else if (pp[i-][j]>pp[i][k])
f[i][][k] = max(f[i][][k],f[i-][][j]+pp[i][k]);
else
{
f[i][][k] = max(f[i][][k],f[i-][][j]+pp[i][k]);
f[i][][k] = max(f[i][][k],f[i-][][j]+pp[i][k]);
}
}
ans = 1LL<<;
for (int p = ;p < ;++p)
for (int j = ;j <= pp[n][];++j)
ans = min(ans,sum-f[n][p][j]);
printf("%lld",ans);
fclose(stdin); fclose(stdout);
return ;
}
BZOJ 1200 木梳的更多相关文章
- bzoj 1200: [HNOI2005]木梳 DP
1200: [HNOI2005]木梳 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 266 Solved: 125[Submit][Status] ...
- 1200: [HNOI2005]木梳 - BZOJ
Description Input 第一行为整数L,其中4<=L<=100000,且有50%的数据满足L<=104,表示木板下侧直线段的长.第二行为L个正整数A1,A2,…,AL ...
- 【BZOJ】【3530】【SDOI2014】数数
AC自动机/数位DP orz zyf 好题啊= =同时加深了我对AC自动机(这个应该可以叫Trie图了吧……出边补全!)和数位DP的理解……不过不能自己写出来还真是弱…… /************* ...
- 【BZOJ】【1391】【CEOI2008】order
网络流/最小割 暴力建图就好了……S->i 容量为收益,i->j+n 容量为租金,j+n->T容量为购买所花的钱. 如果亏钱的话那么割掉的就是收益,表示不赚钱. 如果租金大于购买所花 ...
- BZOJ 1391 [Ceoi2008]order
1391: [Ceoi2008]order Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完 ...
- 【BZOJ 1119】 1119: [POI2009]SLO (置换)
1119: [POI2009]SLO Description 对于一个1-N的排列(ai),每次你可以交换两个数ax与ay(x<>y),代价为W(ax)+W(ay) 若干次交换的代价为每次 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- bzoj 4026 dC Loves Number Theory 主席树+欧拉函数
题目描述 dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯竭的水题资源.给定一个长度为 n的正整数序列A,有q次询问,每次询问一段区间内所有元素乘积的φ(φ(n)代 ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
随机推荐
- 关于在VMware上装lFEDORA系统
VMware虚拟机启动当中某个操作系统的时候,会出现如下提示 Cannot connect virtual device floppy0. No corresponding device is ava ...
- 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载四(使用程序载入事件)
在了解了PhoneGap中都有哪些事件之后,本节将開始对这些事件的使用方法进行具体地介绍.本节要介绍的是程序载入事件,也就是deviceready.pause和resume这3个事件. [范例4-2 ...
- 数学之路-分布式计算-disco(4)
第一个參数iter是一个迭代器,涉及被map函数产生的键和值.它们是reduce实例. 在本例中.单词随机被托付给不同的reduce实例.然后,要单词同样,处理它的reduce也同样.可确保终于合计是 ...
- Android 开发实践 ViewGroup 实现左右滑出窗口(一)
利用假期把以前做的东西总结整理一下,先从简单的开始吧.实现的效果是这样的: 做了个截屏动画,比例有点不对了,凑合着看吧. 整个窗口有3部分组成,中间的主界面是个列表,左边的滑出界面是个菜单,右边的 ...
- MD5 密码破解 碰撞 网站
MD5反向查询网站 http://www.cmd5.com/ 文件MD5值查询网站 http://www.atool.org/file_hash.php 个人对密码破解的理解 1.使用MD5对密码加密 ...
- 每次打开VS2010都会报“ devenv.exe -Assert Failure”这个错误
把.net framework4.5中文包卸载掉,, 如果还不行就把.net framework4.5也卸载掉,,然后到微软官网下载net framework4.5安装包安装,安装完后把中文包卸载掉就 ...
- CentOS安装最新的Mysql版本
Step1: 检测系统是否自带安装mysql # yum list installed | grep mysql Step2: 删除系统自带的mysql及其依赖命令: # yum -y remove ...
- 自己写的自动生成动态边框的jquery小插件
思路就是在元素四周添加<ul>列表,然后周期性地改变它的颜色,实现动态的效果,不支持ie7.ie8 预览链接http://gorey.sinaapp.com/myBorder/border ...
- 服务器证书安装配置指南(IIS7.5) 分类: ASP.NET 2014-11-05 12:39 105人阅读 评论(0) 收藏
1.启动IIS管理器,点击开始菜单->所有程序->管理工具->Internet信息服务(IIS)管理器: 2.选择"服务器证书": 3.在右边窗口,选择" ...
- mvc4+jquerymobile页面加载时无法绑定事件
问题:在view里写js,在页面第一次加载完成后,无法触发事件, 如:按钮click事件,已经在$(function(){ 添加了click });但就是无法触发,必须刷新下才可以. 原因分析: 主 ...