1 条题解

  • 0
    @ 2025-8-24 23:13:43

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Lele_Programmer
    Ad Astra Per Aspera || F1 车迷 || Love Miku

    搬运于2025-08-24 23:13:43,当前版本为作者最后更新于2025-06-10 22:49:38,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    P12209 题解

    思路

    记交易编号为 ii 的第 jj 个输出为 di,jd_{i,j},其是否被使用过为 gi,jg_{i,j}

    每一次处理输入的时候,如果 fromTxIdfromTxId(下文称 idid)和 fromTxOutNumberfromTxOutNumber(下文称 numnum) 均为 1-1,则标记 flagflag11,表示出现特殊交易,否则的话,如果 id<iid<i 即引用的输出必须在此之前并且 gid,numg_{id,num}00 即还未用过,则将 did,numd_{id,num} 加入 addadd 中,并将 gid,numg_{id,num} 标为 11,如果至此还不能成为合法输入,则标记为不合法。

    至此,如果合法,那么来处理交易输出,读入用户的 accountaccount 压根没用,读入 valval,则从 addadd 中减去 valval,并将 di,jd_{i,j} 设置为 valval

    处理完输出,如果已经 flagflag11 即存在特殊交易,则无需判定无解,如果 addadd 不是等于 00,则无解。

    代码

    const int N=105;
    const int M=1005;
    
    int T,n,m;
    int d[M][N];
    bool g[M][N];
    
    int main() {
        read(T);
        while (T--) {
            memset(d,0,sizeof(d));
            memset(g,0,sizeof(g));
            read(n),read(m);
            bool yes=true;
            _rep(i,0,m-1) {
                int inc;
                read(inc);
                bool flag=false;
                bool ok=true;
                int add=0;
                _rep(j,0,inc-1) {
                    int id,num;
                    read(id),read(num);
                    if (!~id && !~num) flag=true;
                    else if (id<i && !g[id][num]) add+=d[id][num],g[id][num]=true;
                    else ok=false;
                }
                if (!ok) yes=false;
                int ouc;
                read(ouc);
                _rep(j,0,ouc-1) {
                    int acc,val;
                    read(acc),read(val);
                    add-=val,d[i][j]=val;
                }
                if (flag) continue;
                if (add!=0) yes=false;
            }
            if (yes) puts("YES");
            else puts("NO");
        }
        return 0;
    }
    
    • 1

    信息

    ID
    12067
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者