• HDU 3415 Max Sum of MaxKsubsequence


    很裸的一道单调队列题(把数列扩大一倍即可),但是要注意题目的比较条件(定义比较函数),不然会WA
     
     
    代码:

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;

    const int N=100010;
    typedef pair<int,int> PII;

    int T,n,k;
    int a[N<<1],dp[N<<1];
    PII que[N<<1];
    int st,ed;
    int ans,p1,p2;



    bool cmp(const PII &a,const PII &b) {
        if(a.first!=b.first) return a.first<b.first;
        return a.second>b.second;
    }


    void push(int x,int p) {
        que[ed++]=PII(x,p);
        while(ed-st>=2 && cmp(que[ed-2],que[ed-1])) que[ed-2]=que[ed-1],ed--;
    }


    int getdec(int cur) {
        if(cur-k<0) return 0;
        else return a[cur-k];
    }

    __inline int readInt() {
        char ch=getchar();
        int ret=0,s=1;
        while(ch!='-' && (ch<'0'||ch>'9')) ch=getchar();
        if(ch=='-') s=-1,ch=getchar();
        while(ch>='0'&&ch<='9') ret=ret*10+ch-'0',ch=getchar();
        return ret*s;
    }

    int main() {
        scanf("%d",&T);
        while(T--) {
            scanf("%d%d",&n,&k);
            for(int i=0;i<n;i++) a[i]=readInt();
            for(int i=n;i<n+k-1;i++) a[i]=a[i-n];
            for(int i=1;i<n+k-1;i++) a[i]+=a[i-1];
            st=ed=0;
            ans=a[0],p1=p2=0;
            for(int i=0;i<n+k-1;i++) {
                while(ed-st>=1 && que[st].second<=i-k) st++;
                push(a[i],i);
                int tans=que[st].first-getdec(i);
                if(tans>ans){
                    ans=tans;
                    int sta=i>=k?i-k+1:0;
                    int end=que[st].second;
                    p1=sta;p2=end;
                }
            }
            printf("%d %d %d\n",ans,p1%n+1,p2%n+1);
        }
        return 0;
    }
  • 相关阅读:
    贪心算法 Wooden Sticks
    HDOJ 2189 悼念512汶川大地震遇难同胞——来生一起走
    hdoj1069 Monkey and Banana(最长上升子序列)
    2012级计科《程序设计基础Ⅱ》期末上机考试
    Constructing Roads In JGShining's Kingdom
    c语言学习随笔之指针(二)
    c语言学习随笔之指针(一)
    遍历网页框架结构
    笔记本测试软件(让奸商头疼的软件)0
    ResizePicturevb.net
  • 原文地址:https://www.cnblogs.com/programCaiCai/p/a298454de440afd274fea3f8ee6e42f8.html
Copyright © 2020-2023  润新知