代码求调,谢谢
  • 板块P1714 切蛋糕
  • 楼主jlwz
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/6/27 13:41
  • 上次更新2023/11/3 12:19:52
查看原帖
代码求调,谢谢
708997
jlwz楼主2023/6/27 13:41

测试数据

#include<iostream>
#include<deque>
using namespace std;

int n,m;
int a[500005],nax=0;
int b[500005];
deque<int> dq;

void show(deque<int> dq)
{
	while(!dq.empty())
	{
		cout<<dq.front()<<" ";
		dq.pop_front();
	}
	cout<<endl; 
}

int main()
{
	//freopen("P1714_1.in","r",stdin);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        b[i]=b[i-1]+a[i];
    }
    if(a[1]>0)
    {
        nax=a[1];
        dq.push_back(1);
    }
    for(int i=2;i<=n;i++)
    {
        if(a[i]<0)
            continue;
        else
        {
        	dq.push_back(i);
           if(dq.front()+1!=dq.back()&&dq.front()!=dq.back())
           {
                int aa=a[dq.front()];
                int bb=a[dq.back()];
                if(dq.size()>2)
                {
                    if(dq.back()-dq.front()>=m)
                    {
                        int p,q;
                        dq.pop_back();
                        p=b[dq.back()]-b[dq.front()]+a[dq.front()];
                        q=b[i]-b[dq.back()]+a[i];
                        if(q>=p)
                        {
                            dq.pop_front();
                            dq.push_back(i);
                        }
                    }
                    else
                    {
                        dq.pop_back();
                        dq.pop_back();
                        dq.push_back(i);
                    }
                }
                int c=b[dq.back()]-b[dq.front()]+a[dq.front()];
                nax=max(aa,bb);
                nax=max(nax,c);
                if(nax==aa)
                {
                    dq.pop_back();
                }
                else if(nax==bb)
                {
                    dq.pop_front();
                }
           }
        }
        //show(dq);
    }
    cout<<nax<<'\n';
    //show(dq);
    return 0;
}
2023/6/27 13:41
加载中...