题目链接:

hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5191

bc(中文):http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=572&pid=1002

题解:

要在原始的n堆前面扩展w个空堆,同时在原始n堆后面扩展w个空堆,然后对[0,w+n+w)这个区间考虑所有的长度为w的子区间,计算出需要移动的方块数,更新答案。

代码:

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long LL; const int maxn = +; int n;
LL w, h;
int arr[maxn*]; void init() {
memset(arr, , sizeof(arr));
} int main() {
while (scanf("%d%lld%lld", &n, &w,&h) == && n) {
init();
LL sum = ;
for (int i = ; i < n; i++) {
scanf("%d", arr + i+w);
sum += arr[i+w];
}
if (sum < w*h) {
printf("-1\n");
continue;
}
//cntf:总共需要填入多少个方块,cntz:总共需要移出多少个方块,cnt保存连续w个的初始和
LL cntz = ,cntf=w*h, cnt = ;
LL ans = w*h;
for (int i = w; i < *w+n; i++) {
//计算新窗口的cntz,cntf,cnt;
if (arr[i - w] - h>) cntz -= (arr[i - w] - h);
else cntf -= (h - arr[i - w]);
cnt -= arr[i - w];
if (arr[i] - h > ) cntz += arr[i] - h;
else cntf += h - arr[i];
cnt += arr[i]; LL tmp;
if (w*h > cnt) tmp =cntf;
else tmp = cntz; ans = min(ans, tmp);
} printf("%lld\n", ans);
}
return ;
}

HDU 5191 Building Blocks的更多相关文章

  1. HDU—— 5159 Building Blocks

    Problem Description After enjoying the movie,LeLe went home alone. LeLe decided to build blocks. LeL ...

  2. hdu 5190 Building Blocks

    问题描述 看完电影后,乐乐回家玩起了积木. 他已经搭好了n堆积木,他想通过调整积木,使得其中有连续W堆积木具有相同的高度,同时他希望高度恰好为H. 乐乐的积木都这了,也就是说不能添加新的积木,只能移动 ...

  3. Intel® Threading Building Blocks (Intel® TBB) Developer Guide 中文 Parallelizing Data Flow and Dependence Graphs并行化data flow和依赖图

    https://www.threadingbuildingblocks.org/docs/help/index.htm Parallelizing Data Flow and Dependency G ...

  4. bc.34.B.Building Blocks(贪心)

    Building Blocks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  5. DTD - XML Building Blocks

    The main building blocks of both XML and HTML documents are elements. The Building Blocks of XML Doc ...

  6. 企业架构研究总结(35)——TOGAF架构内容框架之构建块(Building Blocks)

    之前忙于搬家移居,无暇顾及博客,今天终于得闲继续我的“政治课”了,希望之后至少能够补完TOGAF方面的内容.从前面文章可以看出,笔者并无太多能力和机会对TOGAF进行理论和实际的联系,仅可对标准的文本 ...

  7. TOGAF架构内容框架之构建块(Building Blocks)

    TOGAF架构内容框架之构建块(Building Blocks) 之前忙于搬家移居,无暇顾及博客,今天终于得闲继续我的“政治课”了,希望之后至少能够补完TOGAF方面的内容.从前面文章可以看出,笔者并 ...

  8. HDU 5033 Building(单调栈)

    HDU 5033 Building(单调栈) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5033 Description Once upon a ti ...

  9. [翻译]Review——How JavaScript works:The building blocks of Web Workers

    原文地址:https://blog.sessionstack.com/how-javascript-works-the-building-blocks-of-web-workers-5-cases-w ...

随机推荐

  1. 前端基础-jQuery的动画效果

    阅读目录 隐藏 显示 切换 下拉 上卷 显示 一.jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局, ...

  2. 课时6.HTTP协议(理解)

    HTTP是Hypertext Transfer Protocol的缩写,译为:超文本传输协议 什么是协议? 在现实生活中有很多的协议,例如租房协议/买卖协议/离婚协议 无论是什么协议它们都有一个共同点 ...

  3. HAProxy负载均衡策略

    HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.HAProxy是支持虚拟主机的,HAProxy的优点能够补充Nginx的一些 ...

  4. [译]C语言实现一个简易的Hash table(4)

    上一章我们解释了Hash table中最重要的hash函数,并用伪代码和C语言实现了一个我们自己的hash函数,hash函数中碰撞是无法避免的,当发生碰撞时我们改如何有效的处理呢?这章我们就来讲解下. ...

  5. Python3 图像识别(二)

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 以图搜图的使用已经非常广泛了,我现在来介绍一下简单的以图搜图的相关算法及其实践. 一.感知hash算法 感知哈希算 ...

  6. golang 后台服务设计精要

    原文地址 守护进程 传统的后台服务一般作为守护进程(daemon)运行.linux 上创建 daemon 的步骤一般如下: 创建子进程,父进程退出: 调用系统调用 setsid() 脱离控制终端: 调 ...

  7. 线段树模板(施工ing)

    声明 题目: 洛谷 P3372    优化之处:复杂度 O(n log n)级,可快速维护区间的各种操作(如:区间和.)

  8. PL/SQL轻量版(三)——游标与异常处理

    一.游标 1.概念 游标是一个 指向上下文的句柄( handle) 或指针.通过游标,PL/SQL 可以控制上下文区和处理语句时上下文区会发生些什么事情. 2.游标处理 处理显式游标 主要包含以下四个 ...

  9. 20155230 实验四《android程序设计》实验报告

    20155230 实验四<Android程序设计>实验报告 一.安装Android Stuidio 二.从一个活动启动另一个活动 在启动活动的活动里添加如下语句即可 Intent inte ...

  10. 20155235 2017-2018-1 《Java程序设计》第2周学习总结

    20155235 2017-2018-1 <Java程序设计>第2周学习总结 教材学习内容总结 3.1类型.变量与运算符 类型 基本类型 类类型 变量 基本规则 不可以用数字作为开头,不可 ...