AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 更多
    • 题解
    • 分享
    • 商店
    • 问答
    • 吐槽
  • App
  • 登录/注册

本地 WA,提交 RE!



0


题目链接

rt,代码提交显示 Segmentation Fault ,但是本地正常,输出 1

#include<bits/stdc++.h>
#define N 1001
using namespace std;
int f[N][N],g[N][N];
int T,n,a[N];

int main()
{
    scanf("%d",&T);
    while (T--)
    {
        int cnt=0; scanf("%d",&n);
        for (int i=1;i<=n;i++) scanf("%d",&a[i]);

        for (int len=1;len<=n;len++)
            for (int l=1,r=len;r<=n;l++,r++)
                if (l==r) f[l][r]=g[l][r]=a[l];
                else
                {
                    int x=a[r],l=f[l][r-1],r=g[l][r-1];

                    if (x==r) f[l][r]=0;
                    else if (x<l&&x<r||x>l&&x>r) f[l][r]=x;
                    else if (l>r) f[l][r]=x-1; else f[l][r]=x+1;

                    x=a[l],l=f[l+1][r],r=g[l+1][r];

                    if (x==l) g[l][r]=0;
                    else if (x<l&&x<r||x>l&&x>r) g[l][r]=x;
                    else if (r>l) g[l][r]=x-1; else g[l][r]=x+1;
                }       
        printf("%d\n",f[2][n]!=a[1]);
    }
    return 0;
}


提问于17天前
前缀自动机
6411


1 个问答



2

for中定义了l和r,下面又使用了l和r变量,所以报错。代码可改成下面这样

#include<bits/stdc++.h>
#define N 1001
using namespace std;
int f[N][N],g[N][N];
int T,n,a[N];

int main()
{
    scanf("%d",&T);
    while (T--)
    {
        int cnt=0; scanf("%d",&n);
        for (int i=1;i<=n;i++) scanf("%d",&a[i]);

        for (int len=1;len<=n;len++)
            for (int l=1,r=len;r<=n;l++,r++)
                if (l==r) f[l][r]=g[l][r]=a[l];
                else
                {
                    int x=a[r],L=f[l][r-1],R=g[l][r-1];

                    if (x==R) f[l][r]=0;
                    else if (x<L && x<R || x>L && x>R) f[l][r]=x;
                    else if (L>R) f[l][r]=x-1; else f[l][r]=x+1;

                    x=a[l],L=f[l+1][r],R=g[l+1][r];

                    if (x==L) g[l][r]=0;
                    else if (x<L && x<R || x>L && x>R) g[l][r]=x;
                    else if (R>L) g[l][r]=x-1; else g[l][r]=x+1;
                }
        printf("%d\n",f[2][n]!=a[1]);
    }
    return 0;
}
回答于16天前
啼莺修竹
20509

thx,通过了 –  前缀自动机   16天前


我来回答
你确定删除吗?

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息