QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#605572 | #8030. Traveling in the Grid World | ucup-team3519# | TL | 439ms | 4020kb | C++17 | 1.7kb | 2024-10-02 18:00:00 | 2024-10-02 18:00:03 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef double db;
typedef pair<int, int> pi;
#define fi first
#define se second
#define V vector
#define pb push_back
#define all1(x) (x).begin() + 1, (x).end()
#define all0(x) (x).begin(), (x).end()
db dis2(LL x, LL y, LL a, LL b) {
return sqrt(1LL * (x - a) * (x - a) + 1LL * (y - b) * (y - b));
}
clock_t startTime;
double getCurrentTime() {
return (double)(clock() - startTime) / CLOCKS_PER_SEC;
}
mt19937 mrand(chrono::steady_clock().now().time_since_epoch().count());
void solve() {
cout << fixed << setprecision(12);
LL n, m; cin >> n >> m;
if(n > m) swap(n, m);
startTime = clock();
if(__gcd(n, m) == 1) {
cout << dis2(0, 0, n, m) << "\n";
return;
}
db ans = 1e18;
for(LL i = 0; i <= n; i++) {
LL base = (1LL * m * i + n - 1) / n - 1;
LL x = base;
while(x >= 0 && (__gcd(i, x) != 1 || __gcd(n - i, m - x) != 1)) x--;
if(x >= 0) {
ans = min(ans, dis2(0, 0, i, x) + dis2(i, x, n, m));
// cout << i << " " << x << endl;
}
x = base + 1;
if(1LL * x * n == 1LL * i * m) x++;
while(x <= m && (__gcd(i, x) != 1 || __gcd(n - i, m - x) != 1)) x++;
if(x <= m) {
ans = min(ans, dis2(0, 0, i, x) + dis2(i, x, n, m));
// cout << i << " " << x << endl;
}
// if(i % 100 == 0) cout << i << endl;
}
cout << ans << "\n";
// cout << getCurrentTime() << endl;
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
int t; cin >> t;
while(t--)
solve();
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 4004kb
input:
2 2 2 2 3
output:
3.236067977500 3.605551275464
result:
ok 2 numbers
Test #2:
score: 0
Accepted
time: 1ms
memory: 3896kb
input:
225 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 13 2 14 2 15 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3 10 3 11 3 12 3 13 3 14 3 15 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13 4 14 4 15 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 ...
output:
1.414213562373 2.236067977500 3.162277660168 4.123105625618 5.099019513593 6.082762530298 7.071067811865 8.062257748299 9.055385138137 10.049875621121 11.045361017187 12.041594578792 13.038404810405 14.035668847618 15.033296378373 2.236067977500 3.236067977500 3.605551275464 4.576491222541 5.3851648...
result:
ok 225 numbers
Test #3:
score: 0
Accepted
time: 80ms
memory: 3936kb
input:
6000 119 101 13 90 96 3 20 99 42 79 57 22 78 138 42 157 179 93 195 12 24 195 62 129 31 166 128 9 46 118 123 113 99 128 187 45 154 84 24 109 143 91 96 100 146 168 115 98 176 36 99 70 198 174 119 33 130 92 184 9 56 196 6 118 136 166 150 118 178 43 105 47 36 4 132 162 171 53 37 180 11 171 77 67 199 51 ...
output:
156.083311087381 90.934042030474 96.046886075716 101.000000000000 89.470665583754 61.098281481561 158.518156028175 162.520767903674 201.717624415915 195.368884346967 196.471374493754 143.125818774951 168.869772309907 128.316016147635 126.649125933847 167.026943934205 161.817798773806 192.33824372703...
result:
ok 6000 numbers
Test #4:
score: 0
Accepted
time: 439ms
memory: 4020kb
input:
1400 231 870 23 319 363 117 561 492 841 470 849 886 2 611 921 397 227 916 669 867 874 371 533 16 841 789 782 469 367 291 778 136 694 120 593 89 22 575 6 44 180 871 661 554 397 860 265 547 521 412 809 804 6 554 272 867 240 695 408 900 917 926 47 747 748 750 321 151 291 114 330 31 543 194 387 432 144 ...
output:
900.144988346140 319.828078817355 381.389564951912 746.180273168174 963.421506922074 1227.109204594277 611.003273313654 1002.920734654539 943.708111653174 1095.102734920367 949.482490623182 533.240096016794 1153.170412384917 911.857993330102 468.369512244339 789.797442405113 704.298232312002 599.641...
result:
ok 1400 numbers
Test #5:
score: -100
Time Limit Exceeded
input:
140 3868 307 1542 8425 7856 1284 8129 8657 773 3877 3073 1195 9579 2327 4058 1337 7080 2717 4183 8192 6189 9162 4094 9648 8098 864 5240 9869 6891 8861 9787 7768 321 97 3839 1384 3271 461 1031 8399 7425 278 6201 2581 2426 9301 3153 6278 3317 9760 34 6044 328 9027 9636 6166 8786 9001 9148 1501 6941 61...