提交记录 31359


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_dsh_260814 noip17b. 【NOIP2017】时间复杂度 Accepted 100 6.31 us 8 KB C++ 3.39 KB
提交时间 评测时间
2026-08-14 01:44:37 2026-08-14 01:44:42
typedef unsigned long long u64;

static inline const char* skipws(const char* p) {
    while (*p==' '||*p=='\n'||*p=='\r'||*p=='\t') ++p;
    return p;
}
static inline const char* parse_int(const char* p, int* out) {
    int v=0;
    while (*p>='0'&&*p<='9') { v=v*10+(*p-'0'); ++p; }
    *out=v; return p;
}

int solve(const char* in, char* out) {
    const char* p = in;
    char* o = out;
    int t;
    p = parse_int(p, &t);
    while (t--) {
        int L;
        p = skipws(p); p = parse_int(p, &L);
        p = skipws(p); ++p; ++p; // "O("
        int expw = 0;
        if (*p == 'n') { ++p; ++p; p = parse_int(p, &expw); }
        else { ++p; }
        ++p; // ')'
        int stk_var[128], stk_isn[128], stk_dead[128], stk_contrib[128];
        int top = 0;
        int used[128] = {0};
        int err = 0, dead = 0, cur = 0, maxc = 0;
        for (int i = 0; i < L; ++i) {
            p = skipws(p);
            char c = *p++;
            if (c == 'F') {
                p = skipws(p);
                int vi = (unsigned char)*p++;
                p = skipws(p);
                int xisnum = (*p != 'n');
                int xv = 0;
                if (xisnum) { while (*p>='0'&&*p<='9'){xv=xv*10+(*p-'0');++p;} }
                else ++p;
                p = skipws(p);
                int yisnum = (*p != 'n');
                int yv = 0;
                if (yisnum) { while (*p>='0'&&*p<='9'){yv=yv*10+(*p-'0');++p;} }
                else ++p;
                int this_dead = 0, this_isn = 0;
                if (!xisnum && yisnum) this_dead = 1;
                else if (xisnum && !yisnum) this_isn = 1;
                else if (xisnum && yisnum) { if (xv > yv) this_dead = 1; }
                if (used[vi]) err = 1;
                used[vi] = 1;
                int contrib = this_isn && (dead == 0);
                stk_var[top] = vi;
                stk_isn[top] = this_isn;
                stk_dead[top] = this_dead;
                stk_contrib[top] = contrib;
                ++top;
                if (this_dead) ++dead;
                if (contrib) { ++cur; if (cur > maxc) maxc = cur; }
            } else {
                if (top == 0) err = 1;
                else {
                    --top;
                    used[stk_var[top]] = 0;
                    if (stk_contrib[top]) --cur;
                    if (stk_dead[top]) --dead;
                }
            }
        }
        if (top != 0) err = 1;
        if (err) { *o++='E'; *o++='R'; *o++='R'; }
        else if (maxc == expw) { *o++='Y'; *o++='e'; *o++='s'; }
        else { *o++='N'; *o++='o'; }
        *o++='\n';
    }
    return (int)(o - out);
}

#ifdef LOCAL_TEST
#include <cstdio>
int main() {
    char in[1<<16]; int n = fread(in,1,sizeof in, stdin); in[n]=0;
    char out[1<<12];
    int len = solve(in, out);
    fwrite(out,1,len,stdout);
    return 0;
}
#else
struct di { u64 ver; const char *in; u64 insz; char *out; u64 outlim; u64 outsz; };
#define AT_DUCK 0x6b637564ULL
extern "C" void __libc_start_main(
    int (*m)(int,char**,char**), int argc, char **argv,
    void (*i)(void), void (*f)(void), void (*r)(void), void *se)
{
    char **p = argv + argc + 1; while (*p) ++p; ++p;
    struct di *D = 0;
    while (p[0]) { if (p[0]==(char*)AT_DUCK){D=(struct di*)p[1];break;} p+=2; }
    int len = solve(D->in, D->out);
    D->outsz = (u64)len;
    __asm__ volatile("mov $60,%rax; xor %rdi,%rdi; syscall");
    __builtin_unreachable();
}
int main(){ return 0; }
#endif

CompilationN/AN/ACompile OKScore: N/A

Testcase #13.93 us8 KBAcceptedScore: 10

Testcase #22.99 us8 KBAcceptedScore: 10

Testcase #33.65 us8 KBAcceptedScore: 10

Testcase #44.88 us8 KBAcceptedScore: 10

Testcase #54.79 us8 KBAcceptedScore: 10

Testcase #63.79 us8 KBAcceptedScore: 10

Testcase #75 us8 KBAcceptedScore: 10

Testcase #85.7 us8 KBAcceptedScore: 10

Testcase #95.78 us8 KBAcceptedScore: 10

Testcase #106.31 us8 KBAcceptedScore: 10


Judge Duck Online | 评测鸭在线
Server Time: 2026-09-12 09:08:02 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠