贪吃蛇WA40求调/kel
查看原帖
贪吃蛇WA40求调/kel
176849
Aranea晨曦楼主2022/10/31 12:02

WA40,前8个点AC后面全是WA

#include<bits/stdc++.h>
#define in(x) scanf("%d",&x)
#define out(x) printf("%d",x)
#define outs(x) printf(x)
#define ed printf("\n")
#define ll long long
#define ull unsigned long long
#define mpr make_pair
#define pr pair<int,int>
#define fo(i,a,b) for(int i=a;i<=b;++i)
#define fu(i,a,b) for(int i=a;i<b;++i)
#define INF 2139062143
#define Aranea_Debug
#define N 1000010
#define v first
#define id second
using namespace std;
int a[N];
int main()
{
    int meow,n;
    in(meow);
    fu(nyan,0,meow)
    {
        if(!nyan)
        {
            in(n);
            fu(i,0,n)in(a[i]);
        }
        else
        {
            int k,x,y;in(k);
            while(k--)in(x),in(y),a[x-1]=y;
        }
        //cerr<<"\nnew turn:\n";
        deque<pr>q1,q2;
        fu(i,0,n)
            //q1.push_back(mpr(a[i],i)),cerr<<a[i]<<' ';
            q1.push_back(mpr(a[i],i));
        //cerr<<endl;
        int ans;
        while(true)
        {
            if(q1.size()+q2.size()==2)
            {
                ans=1;
                break;
            }
            pr mn=q1.front(),mx;
            q1.pop_front();
            if(q2.empty()||(!q1.empty()&&q1.back().v>q2.back().v))
            	mx=q1.back(),q1.pop_back();
            else mx=q2.back(),q2.pop_back();
            pr now=mpr(mx.v-mn.v,mx.id);
            //cerr<<now.v<<' '<<mx.v<<' '<<mn.v<<endl;
            if(!q1.empty()&&now.v>q1.front().v)
                q2.push_front(now);
            if(now.v<q1.front().v||q1.empty())//"冒险"
            {
                int cnt=0;
                ans=q1.size()+q2.size()+2;//不吃
                while(true)
                {
                    ++cnt;
                    if(q1.size()+q2.size()+1==2)
                        break;
                    pr neww;
                    if(q2.empty()||(!q1.empty()&&q1.back().v>q2.back().v))
                    	neww=q1.back(),q1.pop_back();
                    else neww=q2.back(),q2.pop_back();
                    now=mpr(neww.v-now.v,neww.id);
                    if((!q1.empty()&&now.v>q1.front().v)||(!q2.empty()&&now.v>q2.front().v))//递归结束
                        break;
                }
                ans=(cnt%2 ? ans : ans-1);
                break;
            }
        }
        out(ans),ed;
    }
    return 0;
}

一个hack

1
15
0 1 2 2 2 2 3 3 4 5 5 6 7 8 8

ans 8
我的输出是7()

2022/10/31 12:02
加载中...