BestCoder Round #34_1002 以及 hdu 5191
枚举最终的W堆积木在哪,确定了区间,那么就需要把高于H的拿走,低于H的补上,高处的积木放到矮的上面,这样最优。
注意多出来的积木可以放在已有积木的前面或者后面,独立成一堆积木,所以需要在n堆积木的前后分别开一个长度为w的数组,所以整个数组的长度应该为n+2*w.
代码如下:
#include<stdio.h>
#include<string.h> long long int a[],high[],low[]; //high数组用来保存前i个元素中比h高的部分的总和,low组用来保存前i个元素中比h低的部分的总和 int main()
{
int n,w,h; while(scanf("%d%d%d",&n,&w,&h)!=EOF)
{
long long int sum=;
memset(a,,sizeof(a));
memset(high,,sizeof(high));
low[]=; //注意初始化
for(int i=;i<=w;i++)
low[i]=i*h;
for(int i=w+;i<=w+n;i++)
{
scanf("%I64d",&a[i]);
sum+=a[i];
if(a[i]>h) //分类
{
high[i]=high[i-]+a[i]-h;
low[i]=low[i-];
}
else
{
low[i]=low[i-]+h-a[i];
high[i]=high[i-];
}
}
for(int i=w+n+;i<=n+w+w;i++)
{
high[i]=high[i-];
low[i]=low[i-]+h;
}
if(sum<(long long int)w*h)
{
printf("-1\n");
continue;
}
long long int step=;
for(int i=;i<=n+w+;i++)
{
if(high[i+w-]-high[i-]==low[i+w-]-low[i-])
{
if(step>high[i+w-]-high[i-])
step=high[i+w-]-high[i-];
}
if(high[i+w-]-high[i-]>low[i+w-]-low[i-])
{
if(step>high[i+w-]-high[i-])
step=high[i+w-]-high[i-];
}
if(high[i+w-]-high[i-]<low[i+w-]-low[i-])
{
if(step>low[i+w-]-low[i-])
step=low[i+w-]-low[i-];
}
}
printf("%I64d\n",step);
}
return ;
}
BestCoder Round #34_1002 以及 hdu 5191的更多相关文章
- BestCoder Round #32_1001 以及 hdu 5182
http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=570&pid=1001 http://acm.hdu. ...
- HDU 5904 - LCIS (BestCoder Round #87)
HDU 5904 - LCIS [ DP ] BestCoder Round #87 题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的 分析: 状态转移方程式 ...
- HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力)
HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=59 ...
- hdu 5667 BestCoder Round #80 矩阵快速幂
Sequence Accepts: 59 Submissions: 650 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- hdu 5643 BestCoder Round #75
King's Game Accepts: 249 Submissions: 671 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6 ...
- hdu 5641 BestCoder Round #75
King's Phone Accepts: 310 Submissions: 2980 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- hdu 5636 搜索 BestCoder Round #74 (div.2)
Shortest Path Accepts: 40 Submissions: 610 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: ...
- hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956 Poor Hanamichi Time Limit: 2000/1000 MS (Java/Ot ...
- hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]
传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131 ...
随机推荐
- LuaFramework热更新过程(及可更新的loading界面实现)
1.名词解释: 资源包:点击 LuaFramework | Build XXX(平台名) Resource,框架会自动将自定义指定的资源打包到StreamingAssets文件夹,这个 ...
- oracle-plsql序列问题
场景:用来汇总工作中数据库的异常问题! 1 问题 序列在会话中未定义 解决: 创建Sequence后直接查询它的当前值(CURRVAL)会出错,要先调用Sequence对象.NEXTVAL,才能查询当 ...
- foreach是怎么实现遍历的
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...
- Bower的入门
接触Bower一年多了,今天对于它的有一些疑问,并且写此博文记录之. 首先把Bower的官网附上: https://bower.io/ (一)什么是Bower Bower:就是一个前端包管理工具.能够 ...
- SpringMVC+MyBatis 事务管理一
前言 spring事务管理包含两种情况,编程式事务.声明式事务.而声明式事务又包括基于注解@Transactional和tx+aop的方式.那么本文先分析编程式注解事务和基于注解的声明式事务. 编程式 ...
- R读取excel文件乱码 read.xlsx() 解决方法
1. 参考[R语言]R读取含中文excel文件,read.xlsx乱码问题 该文章总结得很好,可以直接跳到最后看博主的总结. 2. 如果依旧是乱码那么用read.xlsx2()去读取excel文件, ...
- wamp问题:关于另个php.ini文件的”…
一.现象解说 修改从图表打开的php.ini文件,重启apache后,我们的问题没有解决... 二.解决方法 1.php.ini的位置 wamp/apache2/bin/php.ini wamp/ph ...
- 微信小程序movable-view移动图片和双指缩放
先从movable-view开始说起吧. movable-view是小程序自定义的组件.其描述为:"可移动的视图容器,在页面中可以拖拽滑动". 官方文档地址:https://mp. ...
- POJ--1088--dp--滑雪
#include<iostream> using namespace std; ; }; }; int dp(int,int); int row,col; int main() { whi ...
- 这是个巧妙的表达式: a ˆ= b ˆ= a ˆ= b 它不需要临时变量就可 以交换 a 和 b 的值。
这不具有可移植性.它试图在序列点之间两次修改变量 a, 而这是无定义的. 例如,有人报告如下代码: int a = 123, b = 7654; a ^= b ^= a ^= b; 在 SCO 优化 ...