zoukankan      html  css  js  c++  java
  • 【P2629】好消息,坏消息(前缀和+单调队列优化DP)

    一激动一颓就会忘了总结。。。

    前面的大黄题就不总结了。

    这个题我只想说一声艹,一开始的思路就是正确的,然后计算的时候有了一个瑕疵,不过很快也就改过来了。然后却一直连样例都过不了。仔仔细细看了老半天,经过了半个小时之后,忍不住瞄了一眼题解,突然觉悟到自己的前缀和打错了。。。。。。。

    附前缀和计算方法:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #define re register
    #define wc 0.0000000001
    using namespace std;
    int head,tail,n,m,a[2000001],d,q[3000001],ans,cnt,b[10000001],s[2000001];
    int main()
    {
        cin>>n;
        for(re int i=1;i<=n;i++)
        {
            cin>>a[i];
            a[i+n]=a[i];
        }
        for(re int i=1;i<=2*n;i++)
        s[i]=s[i-1]+a[i];
        head=1;tail=0;
        for(re int i=1;i<=2*n;i++)
        {
            while(head<=tail&&s[i]<=s[q[tail]])
            tail--;
            q[++tail]=i;
            while(head<=tail&&i-q[head]>n)
            head++;    
            if(i>n&&s[q[head]]-s[i-n-1]<0)
            b[i]=1;
            
        }
        
        for(re int i=n+1;i<=n*2;i++)
        {
            if(!b[i])
            ans++;
        }
        cout<<ans;
    }
    s[i]-s[j-1]为i到j的前缀和,而不是s[i]-s[j];
  • 相关阅读:
    APP Https双向认证抓包
    剖析XSS
    php连接mysql
    linux去掉某一字符开头的行
    memcached+php客户端
    memcached-repcached
    memcached+memadmin
    Linux GPT分区
    Linux查看文件夹大小
    linux挂载windwos共享文件
  • 原文地址:https://www.cnblogs.com/victorique/p/8426846.html
Copyright © 2011-2022 走看看