2017-08-02 14:27:18

writer:pprp

题意:

  • 每块木板宽度均为1,高度为h[i]
  • n块木板连接为宽度为n的栅栏
  • 每次可以刷一横或一竖(上色)
  • 最少刷多少次可以使得栅栏被全部上色
  • 1 ≤ n ≤ 5000

算法分析:可以横着刷,可以竖着刷,横着刷是为了减小竖着刷的次数

    采用分治,每个分治中都取横着刷和竖着刷两者的最小值


代码及说明如下:

#include <iostream>
#include <queue> using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = ;
int n;
int a[maxn]; //在递归算法中不要用n,应该考虑的是在每个部分,而不能只是在第一个递归中的角标
int dfs(int l,int r)
{
int MIN = INF;
int cnt = ; //找到所有木板中最短的那个
for(int i = l ; i <= r; i++)
{
MIN = min(MIN, a[i]);
} //将数目加上最短板长度
cnt += MIN; //所有的木板减去这个长度
for(int i = l; i <= r; i++)
{
a[i] -= MIN;
} int left = l; // 分段递归解决问题
for(int i = l; i <= r; i++)
{
if(a[i] == )
{
cnt +=dfs(left,i-);
left = i+ ;
}
} //最后一段,需要一个判断
if(left <= r)
cnt += dfs(left,r); return min(cnt,r-l+);
} int main()
{
cin >> n; for(int i = ; i <= n ; i++)
{
cin >> a[i];
} cout << dfs(,n) << endl; return ;
}

painting fence - 分治 - Codeforces 448c的更多相关文章

  1. codeforces 256 div2 C. Painting Fence 分治

    C. Painting Fence time limit per test 1 second memory limit per test 512 megabytes input standard in ...

  2. CF-448C Painting Fence 分治

    Painting fence 题意 乍一看以为是之前做过的一道单调队列优化的DP,不是. 也是有n块木板,每个木板宽1米,有一个高度ai,现在要把他们刷成橘色,给了你一个宽一米的刷子,你可以横着刷,或 ...

  3. C. Painting Fence 分治

    memory limit per test 512 megabytes input standard input output standard output Bizon the Champion i ...

  4. 【题解】Painting Fence

    [题解]Painting Fence 分治模板.贪心加分治.直接\(O(n^2logn)\)分治过去.考虑一块联通的柱形是子问题的,是递归的,贪心分治就可.记得对\(r-l+1\)取\(min\). ...

  5. Codeforces Round #256 (Div. 2) C. Painting Fence(分治贪心)

    题目链接:http://codeforces.com/problemset/problem/448/C C. Painting Fence time limit per test 1 second m ...

  6. Codeforces 448C:Painting Fence 刷栅栏 超级好玩的一道题目

    C. Painting Fence time limit per test 1 second memory limit per test 512 megabytes input standard in ...

  7. CF448C Painting Fence (分治递归)

    Codeforces Round #256 (Div. 2) C C. Painting Fence time limit per test 1 second memory limit per tes ...

  8. Codeforces 448 C. Painting Fence

    递归.分治. . . C. Painting Fence time limit per test 1 second memory limit per test 512 megabytes input ...

  9. Codeforces Round #256 (Div. 2/C)/Codeforces448C_Painting Fence(分治)

    解题报告 给篱笆上色,要求步骤最少,篱笆怎么上色应该懂吧,.,刷子能够在横着和竖着刷,不能跳着刷,,, 假设是竖着刷,应当是篱笆的条数,横着刷的话.就是刷完最短木板的长度,再接着考虑没有刷的木板,,. ...

随机推荐

  1. python框架Scrapy中crawlSpider的使用

    一.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo3 二.进入工程目录,根据爬虫模板生成爬虫文件 #scrapy genspi ...

  2. sqli_labs第一关

    安装 从https://github.com/Audi-1/sqli-labs下载源代码 搭建环境用的是phpstudy 编辑sqli\sql-connections\db-creds.inc文件 修 ...

  3. IO流入门-第五章-FileWriter

    FileWriter基本用法和方法示例 /* java.io.Writer java.io.OutputStreamWriter 转换流(字节输出流--->字符输出流) java.io.File ...

  4. gunicorn

    https://blog.csdn.net/jailman/article/details/78496522 gunicorn工作原理 Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Pyth ...

  5. 第05章—Swagger2打造在线接口文档

    spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...

  6. Shell正则表达式和文本处理工具

    作业一:整理正则表达式博客 一.什么是正则 正则就是用一些具有特殊含义的符号组合而成(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 通配符是由shell解释得. ...

  7. 转!!配置Tomcat时server.xml和content.xml自动还原问题

    原博文地址:http://www.cnblogs.com/zuosl/p/4342190.html 当我们在处理中文乱码或是配置数据源时,我们要修改Tomcat下的server.xml和content ...

  8. FatMouse and Cheese---hdu1078(记忆化搜索=搜索+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1078 题意就是有n*n的地图,每个地方都有食物,数量不同,老鼠在(0,0)的位置每次它最多跳 k 步, ...

  9. 微信js分享朋友圈(一)

    1.绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对应的接口权限. 2.引入js文件 <script type=&q ...

  10. win8 内置管理员账号既能使用metro应用又能使用默认共享

    一.内置管理员账号打开METRO应用 1.按WIN+R 弹出运行框. 2.输入gpedit.msc点确定,打开本地组策略编辑器. 3.逐级选择"计算机配置","Windo ...