JZOJ 5396. 【NOIP2017提高A组模拟10.6】Blocks

原创 2017年10月06日 21:48:29

Description

Description

Input

Input

Output

Output

Sample Input

10 5
1 7 9 9 5 9 3 4 5 8
5 7 20 9 1

Sample Output

10 6 0 2 10

Data Constraint

Data Constraint

Solution

  • 主要思路:单调队列× 2 。

  • 因为操作次数不限,因此若一段区间平均值超过 K ,即为一组合法解。

  • Ai 减去 K ,用 sum 记录前缀和,区间变成和 0 即为合法。

  • Fi 表示右端点为 i 的合法区间中最小的左端点。则:

Fi=Min(j)(1ji  sum[i]sum[j1]0)

  • 显然如果存在 k<j 而且 sum[k]<sum[j] ,则 j 为无用决策。

  • 单调栈维护决策即可。

  • 每次计算 Fi 时二分答案。

  • 时间复杂度:O(MNlogN)

  • 想过?

  • 这种复杂度应该 TLE。

  • 事实上,我们并不需要求出所有的 Fi ,而只需要最大的 iFi

  • 显然如果有 i<ksum[i]sum[k] ,那么 iFi 事实上也没有用。

  • 剩下的询问中,sum 具有单调性。

  • 这样就可以使用两个指针完美解决了。

  • 时间复杂度:O(MN)

  • 我当然不会告诉你 sum 要开 longlong

Code

#include<cstdio>
using namespace std;
const int N=1e6+2;
int a[N],q[N];
long long sum[N];
inline int read()
{
    int X=0,w=1; char ch=0;
    while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}
    while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();
    return X*w;
}
int main()
{
    int n=read(),m=read();
    for(int i=1;i<=n;i++) a[i]=read();
    while(m--)
    {
        int k=read(),ans=0;
        for(int i=q[0]=1;i<=n;i++)
        {
            sum[i]=sum[i-1]+a[i]-k;
            if(sum[i]<sum[q[q[0]]]) q[++q[0]]=i;
        }
        for(int i=n;i;i--)
        {
            while(q[0] && sum[q[q[0]]]<=sum[i]) q[0]--;
            if(i-q[q[0]+1]>ans) ans=i-q[q[0]+1];
        }
        printf("%d ",ans);
    }
    return 0;
}
版权声明:本文是蒟蒻写出来的,神犇转载也要说一声哦!

相关文章推荐

JZOJ100046. 【NOIP2017提高A组模拟7.14】收集卡片

DescriptionStar 计划订购一本将要发行的周刊杂志,但他可不是为了读书,而是—— 集卡。 已知杂志将要发行 N 周(也就是 N 期),每期都会附赠一张卡片。Star 通 过种种途径,了解到...

JZOJ 5195. 【NOIP2017提高组模拟7.3】A

JZOJ 5195. 【NOIP2017提高组模拟7.3】A DescriptionInputOutputSample Input7 3Sample Output4Data ConstraintSol...

JZOJ 100043. 【NOIP2017提高A组模拟7.13】第K小数

JZOJ 100043. 【NOIP2017提高A组模拟7.13】第K小数 Description有两个正整数数列,元素个数分别为N和M。从两个数列中分别任取一个数相乘,这样一共可以得到N*M个数,询...

JZOJ 100036 【NOIP2017提高A组模拟7.10】随机

题目大意: 1<=n=min的临界点上max(m, min)菜会最小。 证明:假设现在在临界

JZOJ 4919. 【NOIP2017提高组模拟12.10】神炎皇

Description 神炎皇乌利亚很喜欢数对,他想找到神奇的数对。 对于一个整数对 (a,b)(a,b),若满足 a+b=na+b 且 a+ba+b 是 abab 的因子,则成为神奇的数对。请问...

JZOJ 100026. 【NOIP2017提高A组模拟7.7】图

JZOJ 100026. 【NOIP2017提高A组模拟7.7】图 Description有一个n个点n条边的有向图,每条边为Input第一行两个数n和k 第二行n个数f(i) 第三行n个数w(i...

JZOJ100041. 【NOIP2017提高A组模拟7.12】列车调度

分析我们可以知道,如果最后的顺序是n、n-1、…、1 那么没有条轨道的序号一定是大到小的。 很自然地可以想到用权值线段树来维护, 每次加入一个新的列车,就在线段树里面找出第一个比它大的 然后就...

JZOJ4923. 【NOIP2017提高组模拟12.17】巧克力狂欢

JZOJ4923. 【NOIP2017提高组模拟12.17】巧克力狂欢

JZOJ4919. 【NOIP2017提高组模拟12.10】神炎皇

JZOJ4919. 【NOIP2017提高组模拟12.10】神炎皇

JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift

JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift DescriptionInputOutputSolution 这题看上去有些 01背包,但是细节上却大有不同。 先将价格从小到大排...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)