QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#208063#1361. Ant TypingrlongTL 0ms0kbC++141.3kb2023-10-09 05:01:362023-10-09 05:01:36

Judging History

This is the latest submission verdict.

  • [2023-10-09 05:01:36]
  • Judged
  • Verdict: TL
  • Time: 0ms
  • Memory: 0kb
  • [2023-10-09 05:01:36]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

string str;
map<char, int> mp;
int cnts[12][12];
int cost[12][12];

set<int> s;
int curp[12];
long long best = 99999999999999999LL;

void perm() {
    if(s.size() == 0) {
        // compute costs 

        
        for(int i=1;i<=9;i++) cost[i][i] = 0;
        for(int i=1;i<=8;i++) {
            for(int j=i+1;j<=9;j++) {
                cost[ curp[i] ][ curp[j] ] = cost[ curp[j] ][ curp[i] ] = j - i;
            }
        }
        ll cur = 0;
        for(int i=1;i<=9;i++) {
            for(int j=1;j<=9;j++) {
                cur += cnts[i][j] * cost[i][j];
            }
        }
        best = min(best, cur);
        return;
    }
    int k = s.size();
    for(auto it = s.begin(); it != s.end(); it++) {
        int val = *it;
        curp[k] = val;
        s.erase(val);
        perm();
        s.insert(val);
    }
}


int main() {
    cin >> str;
    mp['1'] = 1;
    mp['2'] = 2;
    mp['3'] = 3;
    mp['4'] = 4;
    mp['5'] = 5;
    mp['6'] = 6;
    mp['7'] = 7;
    mp['8'] = 8;
    mp['9'] = 9;
    
    for(int i=0;i<str.length()-1;i++) {
        cnts[ mp[str[i]] ][ mp[str[i+1]] ]++;
    }
    
    
    for(int i=1;i<=9;i++) s.insert(i);
    
    perm();
    cout << best << endl;

}

詳細信息

Test #1:

score: 0
Time Limit Exceeded

input:

6

output:


result: