P2422 良好的感觉(两头单调)】的更多相关文章

描述:https://www.luogu.com.cn/problem/P2422 kkk做了一个人体感觉分析器.每一天,人都有一个感受值Ai,Ai越大,表示人感觉越舒适.在一段时间[i, j]内,人的舒适程度定义为[i, j]中最不舒服的那一天的感受值 * [i, j]中每一天感受值的和.现在给出kkk在连续N天中的感受值,请问,在哪一段时间,kkk感觉最舒适? 先考虑暴力. 怎么暴力?我会枚举区间左右端点 光是枚举左右端点就已经T飞了 我们考虑最小值有多少种情况? 没错,是n种,每个数都可能…
题目链接 写代码能力需要极大提升.我在五分钟之内想到了单调栈,然后花了一个小时的时间去看我单调队列为啥写错了…… 首先这题需要转换自己的思维.枚举所有“最小点”,然后看它往左往右最大能扩展多少. 维护一个单调递增的序列,弹栈时就会是这种情况: 设被弹出去的元素是s,那它为什么会被弹出去呢?因为它比当前元素大. 比当前元素大说明了什么呢?说明如果有一个区间以它为最小值,那这个区间向右扩展的极限就在当前元素前面.因为区间不能继续向右扩展,一扩展,区间就包含当前元素了,那元素s就不是最小值了,而我们这…
P2422 良好的感觉 给定一段序列, 其中元素 \(0 \leq a_{i} \leq 100000\) 定义一段子段 \([L, R]\) 的舒适值为 \(\min_{L \leq i \leq R}a_{i} * \sum_{i = L}^{R}a_{i}\) 求最大舒适值(并定位其位置) \(n \leq 500000\) Solution 首先 \(O(n^{2})\) 枚举区间, 前缀和乱搞啥的显然不合理 考虑式子, 后一项我们可以前缀和求出, 于是重点放在 \(\min_{L \l…
P2422 良好的感觉 题目描述 kkk做了一个人体感觉分析器.每一天,人都有一个感受值Ai,Ai越大,表示人感觉越舒适.在一段时间[i, j]内,人的舒适程度定义为[i, j]中最不舒服的那一天的感受值 * [i, j]中每一天感受值的和.现在给出kkk在连续N天中的感受值,请问,在哪一段时间,kkk感觉最舒适? 输入格式 第一行为N,代表数据记录的天数 第二行N个整数,代表每一天的感受值 输出格式 一行,表示在最舒适的一段时间中的感受值. 输入输出样例 输入 #1 6 3 1 6 4 5 2…
Code: #include<bits/stdc++.h> #define maxn 1000000 #define ll long long using namespace std; void setIO(string s) { string in=s+".in"; freopen(in.c_str(),"r",stdin); } int S[maxn],top,n; ll f[maxn],sumv[maxn],arr[maxn]; int main(…
话说正解是单调栈优化DP,然而貌似根据某种玄学的推算,这个题暴力出解貌似也是可以的.首先,我们枚举所有的点作为最小点,然后横向展开,遇到更小的就停止...然后再操作一下,看上去时间O(N^2),然而由于数据的随机生成性,差不多能做到O(NlogN)出解,然而由于数据的过于随机性,这么做比正解还要快...但是如果数据整齐的话应该怎么办呢,比如都是同一个数的情况.. 这时我们可以先排序,从最大的开始搜起,然后如果有进行最优性剪枝,复杂度貌似可以保证在O(NlogN^2)左右. #include<io…
题目意思就是:最大化一个区间的和与这个区间的最小值的乘积. 换一个角度看问题,如果我们穷举一个最小值 $ a_i $ ,然后往左右扩展,显然是对的,复杂度 $ O(n^2) $.所以我们要优化一下这个过程. 首先扩展这个过程的原则就是所有加入这个区间的数都必须小于选定的最小值 $ a_i $,那么我们可以把这个过程换一个叙述方法,就是对于每个数我们分别往左右找到第一个比 $ a_i $ 小的数,编号分别记成 $ l_i $ . $ r_i $ ,则答案就是 $ sum(l_i+1,r_i-1)…
题目大意 给出一个柱形图中柱子的高度,每个柱子的宽度为1,柱子相邻.求出柱形图中可能形成的矩形的最大面积. 题目分析 以每个柱子(高度为h[i])为中心,向两边延展求出以该h[i]为高度的矩形的最大宽度w[i].h[i]*w[i]得到以该柱子为中心的最大矩形面积,遍历一遍之后取最大值即可.     关键在于求出以柱子i为中心的两边延展的矩形最大宽度.先考虑柱子i延伸到左边的最大距离:坐标p不断左移,直到h[p] < h[i],然后i - p即为柱子向左延伸的最大长度.如果直接这么做,复杂度为O(…
t老师的做法好神…… 题目描述 桌面上有 n 个水果,分别是苹果和橘子.Bytea需要从水果中选择连续的一个区间,并从左到右或从右到左拿水果,且过程中橘子的数量必须始终不小于苹果的数量.求最长的区间大小. 输入格式 第一行一个整数 n($1 \le n \le 100000$),表示水果个数. 接下来一行共有 n 个字符$a_1, a_2, ..., a_n (a_i \in \{j,p\})$,分别表示苹果和橘子(波兰语). 输出格式 输出一行共一个数字,表示最长的区间大小. 样例输入 6 j…
Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(IDE) 1. 在Eclipse中安装PyDev插件 2. 配置Python Interpreters 四. 创建Python Project 五. 编写HelloWorld 六. 小结 一. Python简介: Python在Linux.windows.Mac os等操作系统下都有相应的版本,不管在…