社区讨论

subtask3前两个点WA,求调

P14524[BYOI R1] 意识解离参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi1vboj4
此快照首次捕获于
2025/11/16 23:26
4 个月前
此快照最后确认于
2025/11/18 10:32
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int T,n,a[1000005],b[1000005],c[1000005];
int solve()
{
    cin>>n;
    int flg=0,l,r=0,xj=0,pd=0;
    a[0]=INT_MAX;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(flg)continue;
        a[i]-=xj;
        if(a[i]<=0)
        {
            flg=1;
        }
        if(a[i]>a[i-1])
        {
            if(!pd)
            {
                pd=1;
                l=i;
                r=i;
            }
            else
            {
                xj++;
                for(int j=r;j>=l;j--)
                {
                    if(a[j]>a[l-1])
                    {
                        a[j]=a[l-1];
                        for(int J=j+1;J<=r;J++)
                        {
                            a[J]-=1;
                            if(a[J]<=0)
                            {
                                flg=1;
                                break;
                            }
                        }
                        break;
                    }
                }
                l=r=i;
                a[i]-=xj;
            }
        }
        else r++;
    }
//    for(int i=1;i<=n;i++)cout<<a[i]<<" ";
    if(pd)
    {
        xj++;
        for(int j=r;j>=l;j--)
        {
            if(a[j]>a[l-1])
            {
                a[j]=a[l-1];
                for(int J=j+1;J<=r;J++)
                {
                    a[J]-=1;
                    if(a[J]<=0)
                    {
                        flg=1;
                        break;
                    }
                }
                break;
            }
        }
    }
    if(flg)return 0;
    return 1;
}
signed main()
{
    cin>>T;
    while(T--)
    {
        cout<<(solve()?"Yes\n":"No\n");
    }
    return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...