QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#582559 | #6621. Luggage Lock | gates_orz | AC ✓ | 20ms | 24904kb | C++17 | 3.1kb | 2024-09-22 16:50:12 | 2024-09-22 16:50:12 |
Judging History
answer
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
typedef long long LL;
#define int LL
#define inl inline
const int N = 3e5 + 10;
const int M = N * 2;
//const int mod=998244353;
const int mod = 1000000007;
const double eps = 1e-8;
//const int mod=1e9+7;
typedef pair<int,int> PII;
//const int INF=0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
int n, m;
void become_faster() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
}
int h[N],e[M],ne[M],idx,w[M];
int dist[N],vis[N];
map<PII,int>mm;
void add(int a,int b,int c) {
//if(mm[{a,b}]||mm[{b,a}])return;
//mm[{a,b}]=mm[{b,a}]=1;
e[idx]=b;
ne[idx]=h[a];
w[idx]=c;
h[a]=idx++;
}
void dijk(int s)
{
memset(dist, 0x3f, sizeof(dist));
memset(vis, 0, sizeof(vis));
dist[s] = 0;
priority_queue<PII, vector<PII>, greater<PII> >heap;
heap.push({ 0,s });
while (!heap.empty())
{
//cout<<"s"<<endl;
PII tmp = heap.top();
heap.pop();
int ver = tmp.second, dis = tmp.first;
if (vis[ver])continue;
vis[ver] = 1;
for (int i = h[ver]; i != -1; i = ne[i])
{
int j = e[i];
if (dist[j] > dis + w[i])
{
dist[j] = dis + w[i];
heap.push({ dist[j],j });
}
}
}
}
int to_dig(string s) {
int res=0;
for(auto c:s) {
res=res*10+(c-'0');
}
return res;
}
void init() {
memset(h,-1,sizeof(h));
for(int i=0;i<=9999;i++) {
string s=to_string(i);
while(s.size()!=4)s="0"+s;
for(int st=0;st<4;st++) {
for (int ed = st; ed < 4; ed++) {
string t = s;
for (int k = st; k <= ed; k++) {
int x = s[k] - '0';
x++;
if (x >= 10)x = 0;
t[k] = x + '0';
}
int tmp=to_dig(t);
//if(i==1234)cout<<"t="<<t<<endl;
add(i,tmp,1);
add(tmp,i,1);
}
}
for(int st=0;st<4;st++) {
for (int ed = st; ed < 4; ed++) {
string t = s;
for (int k = st; k <= ed; k++) {
int x = s[k] - '0';
x--;
if (x <0 )x = 9;
t[k] = x + '0';
}
int tmp=to_dig(t);
//if(i==1234)cout<<"t="<<t<<endl;
add(i,tmp,1);
add(tmp,i,1);
}
}
}
dijk(0);
}
void solve() {
int a,b;
string s1,s2;
cin>>s1>>s2;
for(int i=0;i<4;i++) {
int x1=s1[i]-'0';
int x2=s2[i]-'0';
x2-=x1;
if(x2<0)x2+=10;
s2[i]=x2+'0';
}
int d=to_dig(s2);
cout<<dist[d]<<"\n";
}
signed main() {
become_faster();
int T = 1;
//T=read();
init();
cin>>T;
//for(int i=1;i<=100;i++)solve(i);
while (T--) solve();
return 0;
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 4ms
memory: 23444kb
input:
6 1234 2345 1234 0123 1234 2267 1234 3401 1234 1344 1234 2468
output:
1 1 4 5 1 4
result:
ok 6 numbers
Test #2:
score: 0
Accepted
time: 17ms
memory: 23956kb
input:
100000 9138 9251 0887 4577 2745 6294 6883 1197 8654 2502 7867 7941 7505 2717 1497 7726 3337 8042 2767 8782 5311 4368 9711 6229 7105 8101 3553 6673 6544 7940 8848 8920 1458 6315 4605 2931 5505 7310 5963 4765 7625 0418 4049 0136 2078 6899 3339 1080 2276 6814 4249 4182 1861 0824 8975 8926 6447 6965 226...
output:
3 6 6 8 9 7 6 7 10 9 6 8 5 4 8 5 8 7 9 4 8 8 8 6 8 5 7 5 7 5 7 7 6 8 4 10 6 5 6 7 7 7 4 7 8 6 5 9 7 6 7 11 10 10 7 5 6 5 7 6 7 9 5 5 6 6 8 5 7 9 10 6 10 5 6 7 6 6 8 6 8 7 7 8 7 8 6 7 6 5 5 6 6 5 7 5 9 6 7 7 7 9 6 9 5 5 8 10 7 3 5 6 7 9 8 6 6 7 10 5 5 6 9 8 6 8 6 5 7 6 11 5 9 6 7 5 10 7 5 8 9 8 7 7 7...
result:
ok 100000 numbers
Test #3:
score: 0
Accepted
time: 15ms
memory: 24904kb
input:
100000 9858 8095 5633 8247 7807 5071 8866 7889 5514 6684 8306 0389 7596 6446 4524 5643 6468 8305 0785 8831 5956 2146 7220 7908 0962 8309 7774 1534 3560 7810 8074 4999 3749 2452 6714 3339 0234 7385 0496 5276 3726 5829 2534 4590 2971 0686 2855 5324 2894 6769 4659 4721 9146 2348 9167 6160 5334 3586 811...
output:
8 9 9 4 4 7 5 3 8 8 6 3 6 8 6 9 6 8 8 5 5 6 8 7 9 6 5 6 7 7 5 7 7 6 9 8 9 4 7 6 5 3 6 6 7 8 10 5 7 8 2 5 4 6 4 5 8 9 4 5 7 5 8 5 5 8 6 6 6 9 8 6 5 5 8 8 6 6 9 4 4 6 5 8 7 6 7 6 6 5 7 6 8 5 11 4 6 8 4 7 7 8 9 10 7 7 6 7 8 6 6 5 7 5 5 5 4 8 9 8 8 7 9 8 8 5 9 4 5 7 8 8 6 8 6 8 5 7 8 7 6 3 7 9 2 4 9 8 6...
result:
ok 100000 numbers
Test #4:
score: 0
Accepted
time: 11ms
memory: 23776kb
input:
100000 9488 6804 6451 0373 5506 4831 6036 2853 4745 5956 0213 1322 0425 3480 8524 2110 7050 1974 4508 8431 6912 5256 4697 8971 9601 1560 1826 8308 2312 4485 7595 5232 2845 0945 9488 4570 8182 2910 8014 8711 4542 4871 4145 3048 0974 7483 5613 8436 7823 5398 4194 5108 4676 7109 1100 7861 3646 9977 030...
output:
8 7 6 9 2 2 8 9 9 8 5 9 6 7 8 6 3 8 10 6 4 4 7 8 7 5 5 6 6 6 10 4 6 6 8 5 7 4 5 3 7 9 7 6 8 6 6 4 10 8 6 8 5 3 7 3 5 6 9 7 7 5 9 4 9 8 5 7 4 6 2 5 5 4 6 3 7 8 7 7 3 4 8 7 7 10 4 5 6 8 9 9 7 6 8 7 7 8 8 8 5 3 8 7 9 7 6 7 3 8 8 6 6 9 7 8 9 3 8 4 5 9 6 4 9 9 5 5 7 5 7 8 7 8 4 9 5 7 9 6 9 6 7 7 7 11 6 9...
result:
ok 100000 numbers
Test #5:
score: 0
Accepted
time: 15ms
memory: 23260kb
input:
100000 7977 1861 4178 8550 4176 3296 9067 3624 3371 4124 7903 9441 8117 4963 8003 4347 4371 4755 0955 8419 9896 9497 7866 5905 0265 6409 6503 1506 6615 2306 3772 9102 2154 8926 2758 4981 0039 2755 5620 2032 3554 2770 4282 6588 3380 1931 5161 5464 2204 6165 4761 3382 5888 9509 8673 2579 9480 5439 887...
output:
9 8 3 6 8 7 7 7 8 7 5 7 8 8 5 6 7 3 10 8 7 7 6 6 9 6 7 9 9 7 10 7 8 8 5 5 5 7 9 4 5 7 6 6 5 5 6 7 10 5 8 6 4 5 7 8 7 6 5 5 9 6 7 6 6 6 4 6 6 3 5 7 9 2 3 7 5 4 7 3 9 6 6 7 7 7 9 6 8 5 8 7 8 10 9 9 9 5 6 8 6 7 7 9 10 7 7 5 8 3 5 6 5 7 7 8 8 6 4 8 5 6 9 7 8 8 4 6 7 8 7 10 7 5 9 7 9 3 5 7 5 8 6 7 7 8 4 ...
result:
ok 100000 numbers
Test #6:
score: 0
Accepted
time: 15ms
memory: 23256kb
input:
100000 6700 8700 7657 1240 2505 5812 7989 1758 0801 9714 5968 7812 2361 4954 6420 1616 9945 9162 3897 0314 4576 0783 3907 1462 1180 6105 2947 5838 1063 8541 3627 2118 4743 6624 8841 6903 8072 9021 1568 8778 0129 0048 8895 1343 7871 2171 6815 2775 3595 7701 7874 6619 2681 2825 3748 9138 8188 5967 051...
output:
2 9 6 7 4 8 9 9 5 8 9 6 10 5 5 6 5 8 6 5 4 7 5 7 8 6 4 6 3 8 5 6 7 6 6 5 8 6 8 8 7 8 4 7 3 7 7 7 7 5 8 5 6 7 8 6 8 5 7 3 9 5 8 6 4 6 6 3 6 7 6 3 7 5 7 7 10 5 9 7 9 5 7 2 7 10 6 7 9 7 7 6 6 4 7 7 8 7 6 6 6 8 2 3 8 7 6 6 7 6 6 8 7 5 5 4 6 6 8 8 6 3 5 8 6 6 4 4 8 6 10 2 7 5 8 7 6 4 6 5 7 6 8 4 7 7 7 6 ...
result:
ok 100000 numbers
Test #7:
score: 0
Accepted
time: 20ms
memory: 24412kb
input:
100000 4778 8595 7951 1788 9065 5259 0708 6871 5857 1931 4615 7331 8197 2913 9803 4977 7643 3927 2170 6996 6322 1248 1850 7024 1479 7764 2698 8873 2587 6303 7246 3319 2683 6408 6579 2753 2478 8663 3328 0613 7644 4928 8435 4719 1101 7384 5468 9284 1131 7215 7368 1074 2948 6764 7960 1676 3684 8758 459...
output:
11 11 11 11 11 11 12 11 11 12 11 11 11 11 12 11 11 12 11 11 11 11 11 12 11 11 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 12 11 11 12 12 11 12 11 12 11 11 11 11 11 11 11 11 11 11 11 11 11 12 11 11 11 11 12 11 11 11 11 11 11 12 11 11 12 11 11 11 11 12 12 11 12 11 11 11 11 11 11 11 11 11 12 12 11 11 ...
result:
ok 100000 numbers