T1 :最小值(min)题解 ——2019.10.15


思路:
对于 % 30 的数据,可以想到一个 Dp 方程:

其中dp[i]表示分割[1,i]的最大答案

代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
const int Nt = ; const long long inf = 0x3f3f3f3f3f3f3f3f;
int ri() {
char c = getchar(); int x = , f = ; for(;c < '' || c > ''; c = getchar()) if(c == '-') f = -;
for(;c >= '' && c <= ''; c = getchar()) x = (x << ) + (x << ) - '' + c; return x * f;
}
int a[Nt], st[Nt], tp, n, A, B, C, D;
long long T[Nt << ], f[Nt], mx[Nt]; void Up(int i, long long x)
{for(T[i += Nt] = x; i >>= ;) T[i] = std::max(T[i << ], T[i << | ]);} long long Cal(long long x) {return ((A * x + B) * x + C) * x + D;} int main() {
freopen("min.in","r",stdin);
freopen("min.out","w",stdout);
n = ri(); A = ri(); B = ri(); C = ri(); D = ri();
for(int i = ;i <= n; ++i) a[i] = ri();
std::memset(T, -0x3f, sizeof(T));
f[] = ; mx[] = ; st[tp = ] = a[]; Up(, Cal(a[]));
for(int i = ;i <= n; ++i) {
f[i] = T[]; long long x = f[i];
for(;st[tp] > a[i + ] && tp;) x = std::max(x, mx[tp]), Up(tp--, -inf);
st[++tp] = a[i + ]; mx[tp] = x; Up(tp, x + Cal(st[tp]));
}
printf("%lld\n", f[n]);
return ;
}
T1 :最小值(min)题解 ——2019.10.15的更多相关文章
- C 题解———2019.10.16
现在很痛苦,等过阵子回头看看,会发现其实那都不算事. [题目描述]定义一个排列 a 的价值为满足|a[i]-i|<=1 的 i 的数量.给出三个正整数 n,m,p,求出长度为 n 且价值恰好为 ...
- A 题解————2019.10.16
[题目描述] 对于给定的一个正整数n, 判断n是否能分成若干个正整数之和 (可以重复) ,其中每个正整数都能表示成两个质数乘积. [输入描述]第一行一个正整数 q,表示询问组数.接下来 q 行,每行一 ...
- B 题解————2019.10.16
相信他说的话,但不要当真 [题目描述]有一个长度为 n 的自然数序列 a,要求将这个序列恰好分成至少 m 个连续子段. 每个子段的价值为该子段的所有数的按位异或.要使所有子段的价值按位与的结果最大,输 ...
- 2019.10.15 CSP初赛知识点整理
初赛需要的知识点整理如下: (1)计算机的硬件组成与基本常识 (2)单位/进制的转换 (3)进制/逻辑运算相关 (4)概率与期望 (5)排序的各种性质 (6)简单数据结构的使用(栈.队列.链表等) ( ...
- T2:中间值(median)———2019.10.15
代码: #include <bits/stdc++.h> int ri() { , f = ; ; ) + (x << ) - ' + c; return x * f; } ; ...
- Fiborial 题解——2019.10.14
一看到这个题 就感觉...cao,, 什么东西...??! 然后就开始暴力求Fn 然鹅我并不会写高精(我太菜了) 只能求到大概10左右 在吧Fn给质因数分解 求出其因子个数 妄图找到什么有关的规律 但 ...
- 忍者钩爪 ( ninja) 题解———2019.10.19
可以到这里测..嘿嘿嘿 题目: [问题 描述 ] 小 Q 是一名酷爱钩爪的忍者, 最喜欢飞檐走壁的感觉, 有一天小 Q 发现一个练习使用钩 爪的好地方,决定在这里大显身手. 场景的天花板可以被描述为一 ...
- Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析
一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...
- TIZ_c 第0周总结(2019/10/15-2019/10/22)工欲善其事必先利其器
TIZ_c 第0周总结(2019/10/15-2019/10/22)工欲善其事必先利其器 任务清单 给自己取一个酷酷的id,并选择1-2个喜欢的方向.(只是初步选择,后期可更改) 改下群名片.例如yo ...
随机推荐
- Oracle逻辑结构学习笔记
数据库(Database)由若干表空间(Tablespace)组成,表空间(Tablespace)由若干段(Segment)组成,段(Segment)由若干区(Extent)组成,区(Extent)又 ...
- pandas的使用(6)离散化和合并
pandas的使用(6)离散化和合并
- Spark Core知识点复习-1
Day1111 Spark任务调度 Spark几个重要组件 Spark Core RDD的概念和特性 生成RDD的两种类型 RDD算子的两种类型 算子练习 分区 RDD的依赖关系 DAG:有向无环图 ...
- printf()的用法
a 符号 作用 —————————————————————————— %d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 ...
- golang --学习笔记 运行时间计算
package main import ( "fmt" "time" ) func main() { start := time.Now() //do some ...
- 《 .NET并发编程实战》阅读指南 - 第2章
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- WPF MultiBinding,多值转化器IMultiValueConverter,自制调色板 palette
public class RGBConverter : IMultiValueConverter { //正向修改,整合颜色值 public object Convert(object[] value ...
- .Net Core实战教程(三):使用Supervisor配置守护进程
安装Supervisor yum install python-setuptools easy_install supervisor 配置Supervisor mkdir /etc/superviso ...
- delphi实现窗体闪烁功能
delphi实现窗体闪烁功能 以前做窗口闪动时都没有考虑到让任务栏上的按钮闪动的问题, 现在一个客户需要任务栏按钮闪动,发现以前使用的flashwindow不能达到要求了, 查找了一下,找到flash ...
- echarts 折线图百分比 tooltip 实例 两种方法
方法一 在知道有几个类型时:下面有五个类型 tooltip : { show : true, trigger: 'axis', formatter: '{b0}<br/>{a0}: {c0 ...