QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#704759#6621. Luggage LockYurily#WA 0ms3808kbC++202.7kb2024-11-02 20:56:432024-11-02 20:56:44

Judging History

你现在查看的是最新测评结果

  • [2024-11-02 20:56:44]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3808kb
  • [2024-11-02 20:56:43]
  • 提交

answer

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

const int N = 4;

    char a[N + 3], b[N + 3];
    int c[N + 3], t[N + 3];
    int ans;

int dis(int c, int t){
    if(t == 1)
        if(c != 0)
            return c;
        else 
            return 10;
    if(t == 2)
        if(c != 0)
            return 10 - c;
        else 
            return 10;
    return 20;
}

void dfs(int k, int sum){
    if(k > N){
        ans = min(ans, sum);
        return ;
    }

    if(sum >= ans)
        return ;
    
    //1: 0->c[i]
    // t[k] = 1;
    // if(t[k - 1] == 1)
    //     if(c[k] != 0){
    //         if(c[k] > c[k - 1])
    //             dfs(k + 1, sum + c[k] - c[k - 1]);
    //         else 
    //             dfs(k + 1, sum);
    //     }
    //     else {
    //         if(c[k - 1] != 0)
    //             dfs(k + 1, sum + 10 - c[k - 1]);
    //         else 
    //             dfs(k + 1, sum);
    //     }
    // else 
    //     if(c[k] != 0)
    //         dfs(k + 1, sum + 10);
    //     else 
    //         dfs(k + 1, sum + c[k]);

    // if(t[k - 1] == 1)
    //     if(dis(c[k], 1) > dis(c[k - 1], 1))
    //         dfs(k + 1, sum + dis(c[k], 1) - dis(c[k - 1], 1));
    //     else 
    //         dfs(k + 1, sum);
    // else 
    //     dfs(k + 1, sum + dis(c[k], 1));

    //2: n-c[i]<-0
    // t[k] = 2;
    // if(t[k - 1] == 2)
    //     if(c[k] != 0){
    //         if(c[k] < c[k - 1])
    //             dfs(k + 1, sum + c[k - 1] - c[k]);
    //         else 
    //             dfs(k + 1, sum);
    //     }
    //     else {
    //         if(c[k - 1] != 0)
    //             dfs(k + 1, sum + c[k - 1]);
    //         else 
    //             dfs(k + 1, sum);
    //     }
    // else 
    //     if(c[k] != 0)
    //         dfs(k + 1, sum + 10 - c[k]);
    //     else 
    //         dfs(k + 1, sum + 10);

    for(int dir = 1; dir <= 2; dir++){
        t[k] = dir;
        if(t[k - 1] == t[k])
            if(dis(c[k], dir) > dis(c[k - 1], dir))
                dfs(k + 1, sum + dis(c[k], dir) - dis(c[k - 1], dir));
            else 
                dfs(k + 1, sum);
        else 
            dfs(k + 1, sum + dis(c[k], dir));
    }

}

// void to10(int k){

// }

void sol(){
    scanf("%c%c%c%c %c%c%c%c\n", &a[1], &a[2], &a[3], &a[4], &b[1], &b[2], &b[3], &b[4]);
    for(int i = 1; i <= N; i++)
        c[i] = (b[i] - a[i] + 10) % 10;
    
    ans = 20;
    t[0] = -1;
    c[0] = -1;
    dfs(1, 0);

    // to10(1);

    printf("%d\n", ans);

}

int main(){
    int T;
    scanf("%d\n", &T);
    while(T--)
        sol();

    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3808kb

input:

6
1234 2345
1234 0123
1234 2267
1234 3401
1234 1344
1234 2468

output:

1
1
10
5
11
4

result:

wrong answer 3rd numbers differ - expected: '4', found: '10'