[CSP-S模拟测试]:最小值(DP+乱搞)
题目背景
$Maxtir$更喜欢序列的最小值。
题目传送门(内部题128)
输入格式
第一行输入一个正整数$n$和四个整数$A,B,C,D$。
第二行输入$n$个整数,第$i$个数表示$a_i$。
输出格式
输出一行一个整数$ans$表示答案。
样例
样例输入:
5 0 0 1 10
9 9 5 2 6
样例输出:
81
数据范围与提示
对于$10\%$的数据,满足$n\leqslant 100$
对于$20\%$的数据,满足$n\leqslant 1,000$
对于另外$20\%$的数据,满足$A=B=0,C\leqslant 0$
对于$100\%$的数据,满足$n\leqslant 2\times 10^5,\forall|f(a_i)|\leqslant 10^{13}$,输入数据均在整数$int$范围内
题解
第一眼,$\Theta(n^2)DP$,设$dp[i]$表示选到$i$的最大贡献。
转移很简单,枚举转移点即可。
第二眼,数据不好造,于是可以$j\geqslant \max(0,i-106)$就好啦……
其实我也不知道为什么$105$就$WA50$,$106$就直接$AC$了这也太巧了吧……
最后讲个故事,快搬好小板凳!!!
(话说你们为什么都爱听我讲故事额……
北岸大神:“动动,为什么我$QJ$还是会$TLE30$哇?!”
我:“???,不可能哇~“
北岸大神:”我调成$300$了!“
北岸大神:”我调成$100$了!“
北岸大神:”我$TM$都调成$1$了!!!“
我:”那你确定你写的是$j\geqslant \max(0,i-106)$嘛?“
北岸大神:”确定哇“
然而$\downarrow$

我:”……“
北岸大神:”窝槽“
左拐头朝下,小心别挂树叉上,忒疼。
时间复杂度:$\Theta(106\times n)$。
期望得分:$10$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int n,A,B,C,D;
long long a[200001];
long long dp[200001];
int main()
{
memset(dp,-0x3f,sizeof(dp));
scanf("%d%d%d%d%d",&n,&A,&B,&C,&D);
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
dp[0]=0;
for(int i=1;i<=n;i++)
{
int minn=max(0,i-106);
long long res=a[i];
for(int j=i-1;j>=minn;j--)
{
dp[i]=max(dp[i],dp[j]+A*res*res*res+B*res*res+C*res+D);
res=min(res,a[j]);
}
}
printf("%lld",dp[n]);
return 0;
}
rp++
[CSP-S模拟测试]:最小值(DP+乱搞)的更多相关文章
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2)(A.暴力,B.优先队列,C.dp乱搞)
A. Carrot Cakes time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
- 2016 10 28考试 dp 乱搞 树状数组
2016 10 28 考试 时间 7:50 AM to 11:15 AM 下载链接: 试题 考试包 这次考试对自己的表现非常不满意!! T1看出来是dp题目,但是在考试过程中并没有推出转移方程,考虑了 ...
- 【NOIP模拟赛】beautiful 乱搞(平衡树)+ST
biubiu~~~ 我用平衡树处理的这道题,然而这种方法还是要看评测姬..... 正解是乱搞....就是枚举每一位数作为中位数,比他小的看做-1比他大的看做1,那么我们从一开始就有了一个绵延的山,我们 ...
- [CSP-S模拟测试]:军训队列(DP+乱搞)
题目描述 有$n$名学生参加军训,军训的一大重要内容就是走队列,而一个队列的不规整程度是该队中最高的学生的身高与最矮的学生的身高差值的平方.现在要将$n$名参加军训的学生重新分成$k$个队列,每个队列 ...
- BZOJ - 2500 树形DP乱搞
题意:给出一棵树,两个给给的人在第\(i\)天会从节点\(i\)沿着最长路径走,求最长的连续天数\([L,R]\)使得\([L,R]\)为起点的最长路径极差不超过m 求\(1\)到\(n\)的最长路经 ...
- HZOJ 20190727 T2 单(树上dp+乱搞?+乱推式子?+dfs?)
考试T2,考试时想到了40pts解法,即对于求b数组,随便瞎搞一下就oxxk,求a的话,很明显的高斯消元,但考试时不会打+没开double挂成10pts(我真sb),感觉考试策略还是不够成熟,而且感觉 ...
- [BZOJ4011][HNOI2015]落忆枫音-[dp乱搞+拓扑排序]
Description 传送门 Solution 假如我们的图为DAG图,总方案数ans为每个点的入度In相乘(不算1号点).(等同于在每个点的入边选一条边,最后一定构成一棵树). 然而如果加了边x- ...
- [OpenJudge90][序列DP+乱搞]滑雪
滑雪 总时间限制: 1000ms 内存限制: 65536kB [描述] Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次 ...
- 【NOIP模拟赛】【乱搞AC】【奇技淫巧】【乘法原理】回文串计数
回文串计数 (calc.pas/calc.c/calc.cpp) [题目描述] 虽然是一名理科生,Mcx常常声称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名的热爱,这也促使他走向了以记忆量 ...
随机推荐
- 基于VS搭建OpenCV环境
OpenCV OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库.OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行, ...
- redis集群搭建和哨兵模式以及AOF和RDB持久化
Redis主从+哨兵模式 1.环境准备 (1)三台独立的linux主机 (2)IP分别为:10.150.200.182 (从) 10.150.200.184(从) 10.150.200.195(主) ...
- Arkady and a Nobody-men CodeForces - 860E (虚树)
大意: 给定有根树, 根节点深度为$1$. 定义$r(a,b)$为$b$子树内深度不超过$a$的节点数$-1$ 定义$z_a$为$a$的所有祖先的$r$之和. 对于所有点求出$z$的值. 一个点$y$ ...
- 使用zookeeper报错 stat is not executed because it is not in the whitelist. envi is not executed because it is not in the whitelist.
在使用四字命令或者zk ui界面查看zookeeper集群时,出现如下提示: stat is not executed because it is not in the whitelist. envi ...
- js注册实现
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Oracle Help 类
public static string ConnString = @"Data Source=xxx;USER ID=xxx;PASSWORD=xxx"; /// <sum ...
- celery 分布式异步队列框架使用方法
简介: Celery 是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向broker传递消息,然后celery ...
- |、&、||、&&、^符号含义
|和&为计算机中二进制之间的位运算 在计算机中二进制的0表示false,1表示true. |为位运算中的或运算:它的运算逻辑为一真则真,全假则假 &为位运算中的并运算:它的运算逻辑为一 ...
- 解决GitHub添加sshkey仍然无法访问clone远程仓库的问题
1 ssh -v git@github.com 通过这个命令打印调试信息 ebug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS rece ...
- Linux系统下C语言获取Time
获取时间的函数有很多,具体包括如下: time()/gettimeofday()等等,下面是获取具体到usecond的时间程序: #include <iostream> #include ...