QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#59761 | #1361. Ant Typing | ziad | TL | 14ms | 3572kb | C++23 | 1.5kb | 2022-11-01 02:13:53 | 2022-11-01 02:13:55 |
Judging History
answer
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <unordered_set>
#include <unordered_map>
#include <queue>
#include <ctime>
#include <cassert>
#include <complex>
#include <string>
#include <cstring>
#include <chrono>
#include <random>
#include <bitset>
#include <array>
#include <climits>
// #pragma GCC optimize ("O3")
// #pragma GCC optimize ("unroll-loops")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
typedef long long ll;
typedef long double ld;
using namespace std;
const int N = 1e3 + 5;
const int M = 1e5 + 5;
const int MOD = 998244353;
int n, dis[14][14];
string s;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
// cout.tie(nullptr);
cin >> s;
n = s.size();
vector<int> perm(9);
iota(perm.begin(), perm.end(), 1);
ll ans = LLONG_MAX;
do {
ll cur_ans = 0;
for (int i = 0; i < 9; ++i) {
for (int j = 0; j < 9; ++j) {
dis[perm[i]][perm[j]] = abs(i - j);
}
}
int cur_pos = perm[0];
for (int i = 0; i < n; ++i) {
int next_key = s[i] - '0';
cur_ans += dis[cur_pos][next_key] + 1;
cur_pos = next_key;
}
ans = min(ans, cur_ans);
} while (next_permutation(perm.begin(), perm.end()));
cout << ans << '\n';
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 14ms
memory: 3572kb
input:
6
output:
1
result:
ok single line: '1'
Test #2:
score: -100
Time Limit Exceeded
input:
352836512461179399826927828445163785261417666171453483576899676763764928341261962358737253818463814858565221466575498899898835568743316628247174676952381449147193191788177911797527361649543158616436321694172452689147288835568666918784929695569394655833978219612584637258492511247969998253315177569943...