UESTC_我要长高 CDOJ 594
韩父有N个儿子,分别是韩一,韩二…韩N。由于韩家演技功底深厚,加上他们间的密切配合,演出获得了巨大成功,票房甚至高达2000万。舟子是名很有威望的公知,可是他表面上两袖清风实则内心阴暗,看到韩家红红火火,嫉妒心遂起,便发微薄调侃韩二们站成一列时身高参差不齐。由于舟子的影响力,随口一句便会造成韩家的巨大损失,具体亏损是这样计算的,韩一,韩二…韩N站成一排,损失即为C×(韩i与韩i+1的高度差(1≤i<N))之和,搞不好连女儿都赔了.韩父苦苦思索,决定给韩子们内增高(注意韩子们变矮是不科学的只能增高或什么也不做),增高1cm是很容易的,可是增高10cm花费就很大了,对任意韩i,增高Hcm的花费是H2.请你帮助韩父让韩家损失最小。
Input
有若干组数据,一直处理到文件结束。
每组数据第一行为两个整数:韩子数量N(1≤N≤50000)和舟子系数C(1≤C≤100)
接下来N行分别是韩i的高度(1≤hi≤100)。
Output
对每组测试数据用一行输出韩家的最小损失。
Sample input and output
| Sample Input | Sample Output |
|---|---|
5 2 |
15 |
解题报告
用单调队列来优化(正解)...空间复杂度也可以优化到O(100*2)...好吧我又没有优化
当时先用的线段树来O(log)得到最优解,结果本机测试跑极限数据1.5s+才出。。。果断放弃(常数太大)
之后采用rmq...交了一发TLE,彻底断了我的念头...
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
typedef long long ll;
using namespace std;
const int maxn = 5e4 + ;
int n,c,h[maxn];
ll q[];
ll f[maxn][];
ll MAX; int main(int argc,char *argv[])
{
MAX = << ;
MAX *= MAX;
while(scanf("%d%d",&n,&c) != EOF)
{
for(int i = ; i <= n ; ++ i)
scanf("%d",h+i);
for(int i = ; i <= n ; ++ i)
for(int j = ; j <= ; ++ j)
f[i][j] = MAX;
for(int i = h[] ; i <= ; ++ i)
f[][i] = (i-h[])*(i-h[]);
int front , rear ;
for(int i = ; i <= n ; ++ i)
{
front = rear = ;
for(int j = h[i-] ; j <= ; ++ j)
{
while(front < rear && f[i-][q[rear-]]-c*q[rear-] > f[i-][j]-c*j)
rear--;
q[rear++] = j;
}
for(int j = h[i] ; j <= ; ++ j)
if (j >= q[front])
f[i][j] = f[i-][q[front]] - c*q[front] + c*j + (j-h[i])*(j-h[i]);
front = rear = ;
for(int j = h[i-] ; j <= ; ++ j)
{
while(front < rear && f[i-][q[rear-]]+c*q[rear-] > f[i-][j]+c*j )
rear--;
q[rear++] = j;
}
for(int j = h[i] ; j <= ; ++ j)
{
while(j > q[front] && front < rear)
front++;
if (q[front] >= j)
f[i][j] = min(f[i][j],f[i-][q[front]] + c*q[front] - c*j + (j-h[i])*(j-h[i]));
}
}
ll ans = f[n][h[n]];
for(int j = h[n] ; j <= ; ++ j)
ans = min(ans,f[n][j]);
printf("%lld\n",ans);
}
return ;
}
UESTC_我要长高 CDOJ 594的更多相关文章
- 一看就懂的MySQL的聚簇索引,以及聚簇索引是如何长高的
这一篇笔记我们简述一下 MySQL的B+Tree索引到底是咋回事? 聚簇索引索引到底是如何长高的. 一点一点看,其实蛮好理解的. 如果你看过了我之前的笔记,你肯定知道了MySQL进行CRUD是在内存中 ...
- UESTC 594 我要长高 - 单调性优化
韩父有N个儿子,分别是韩一,韩二…韩N.由于韩家演技功底深厚,加上他们间的密切配合,演出获得了巨大成功,票房甚至高达2000万.舟子是名很有威望的公知,可是他表面上两袖清风实则内心阴暗,看到韩家红红火 ...
- 【单调队列优化dp】uestc 594 我要长高
http://acm.uestc.edu.cn/#/problem/show/594 [AC] #include<bits/stdc++.h> using namespace std; t ...
- UESTC - 594 我要长高
他们oj挂掉啦, 我先保存一下代码... 直接dp复杂度, n * 100 * 100, 我们可以将前一个人的信息丢进单调队列中去,可以优化成n * 100; #include<bits/std ...
- UESTC_方老师分身 I CDOJ 914
方老师分身 I Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- UESTC_方老师买表 CDOJ 885
老师买表 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Stat ...
- PHP-生成缩略图和添加水印图-学习笔记
1.开始 在网站上传图片过程,经常用到缩略图功能.这里我自己写了一个图片处理的Image类,能生成缩略图,并且可以添加水印图. 2.如何生成缩略图 生成缩略图,关键的是如何计算缩放比率. 这里,我根据 ...
- 一个前端所需具备的PS能力
前端网页设计+静态实现案例 放一个2天半内给某公司完成的(设计 + 静态实现)的案例吧,静态阴影用CSS3实现的http://www.cnblogs.com/MuYunyun/p/5693615.ht ...
- 百度编辑器UEditor与UEditor 公式插件完整Demo
1.下载UEditor(我的是.net项目) 2.下载UEditor公式插件 3.新建解决方案和项目 4.在浏览器中预览index.html页面 结果: 5.index.html源码 <!DOC ...
随机推荐
- ASP.NET应用程序和ASP.NET网站所共有的文件: App_Browsers 等
App_Browsers 包含 ASP.NET 用于标识个别浏览器并确定其功能的浏览器定义 (.browser) 文件.有关更多信息,请参见浏览器定义文件架构(browsers 元素)和如何:在 A ...
- Longest Palindromic Substring 解答
Question Given a string S, find the longest palindromic substring in S. You may assume that the maxi ...
- 高精度快速幂(Java版)
import java.io.*; import java.math.*; import java.util.*; import java.text.*; public class Main { pu ...
- shell数组(产生不同的随机数)
#!/bin/bash # declare -a ARRAY read -p "Please input num[1-39]:" EMENUM #对比新生成的随机数是否重复 fun ...
- Scala-Partial Functions(偏函数)
如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子集,对于这个参数范围外的参数则抛出异常,这样的函数就是偏函数(顾名思异就是这个函数只处理传入来的部分参数). 偏函数是个特质其的类型为Pa ...
- java框架BeanUtils及路径问题练习
内省----->一个变态的反射 BeanUtils主要解决 的问题: 把对象的属性数据封装 到对象中. 使从文件中读取的数据往对象中赋值更加简单: BeanUtils的好处: 1. ...
- 10. 混淆矩阵、总体分类精度、Kappa系数
一.前言 表征分类精度的指标有很多,其中最常用的就是利用混淆矩阵.总体分类精度以及Kappa系数. 其中混淆矩阵能够很清楚的看到每个地物正确分类的个数以及被错分的类别和个数.但是,混淆矩阵并不能一眼就 ...
- Silverlight调用网站项目的Session
项目中遇到Silverlight调网站Session的问题了,试了几种方法,用这种方法获取到了,如果有不对不恰当的地方,还望各路大神给指正出来. 解决方法: 1.Silverlight调用网站的接口 ...
- PHP学习笔记三十四【记录日志】
<?php function my_error2($errno,$errmes) { echo "错误号:".$errno; //默认时区是格林威治相差八个时区 //设置 1 ...
- Python学习笔记5(字符串与正则表达式)
1.字符串 1.1字符串的格式化 #格式化语法 "%s" % str1 "%s %s" % (str1,str2) #格式化字符串 str1 = "v ...