QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#574065 | #5537. Storing Eggs | May_27th | WA | 77ms | 22604kb | C++20 | 3.2kb | 2024-09-18 20:42:06 | 2024-09-18 20:42:06 |
Judging History
answer
// #pragma GCC optimize("O3")
// #pragma GCC optimize("unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#include<bits/stdc++.h>
using namespace std;
#define i64 long long
#define mp make_pair
#define pb push_back
#define all(x) (x).begin(), (x).end()
int N, K;
char g[5][101];
double f[103][(1 << 3) + 1][303], fmask[(1 << 3) + 2];
pair<double, int> cost[103][103][(1 << 3) + 2][(1 << 3) + 2];
bool can[103][(1 << 3) + 1];
void Solve(void) {
cin >> N >> K;
for (int i = 1; i <= 3; i ++) {
for (int j = 1; j <= N; j ++) {
cin >> g[i][j];
}
}
for (int mask = 0; mask < (1 << 3); mask ++) {
int prev = -1;
int minDist = 1e9;
for (int b = 0; b < 3; b ++) {
if (mask >> b & 1) {
if (prev != -1) {
minDist = min(minDist, b - prev);
}
prev = b;
}
}
fmask[mask] = minDist;
}
for (int j = 0; j <= N; j ++) {
for (int mask = 0; mask < (1 << 3); mask ++) {
bool works = true;
for (int b = 0; b < 3; b ++) {
if (mask >> b & 1) {
if (g[b + 1][j] == '#') {
works = false;
}
}
}
can[j][mask] = works;
// cout << j << " " << mask << " " << works << "\n";
for (int k = 0; k <= K; k ++) {
f[j][mask][k] = -1;
}
}
}
for (int j = 0; j <= N; j ++) {
for (int jj = j + 1; jj <= N; jj ++) {
for (int mask = 0; mask < (1 << 3); mask ++) {
for (int maskk = 0; maskk < (1 << 3); maskk ++) {
bool works = (can[j][mask] & can[jj][maskk]);
if (!works) {
cost[j][jj][mask][maskk] = mp(-1.0, -1);
continue;
}
double minDist = min(fmask[mask], fmask[maskk]);
int cnt = 0;
for (int bb = 0; bb < 3; bb ++) {
if (maskk >> bb & 1) {
cnt ++;
for (int b = 0; b < 3; b ++) {
if (mask >> b & 1) {
double d = (b - bb) * (b - bb) + (jj - j) * (jj - j);
minDist = min(minDist, sqrt(1.0 * d));
}
}
}
}
cost[j][jj][mask][maskk] = mp(minDist, cnt);
}
}
}
}
for (int jj = 1; jj <= N; jj ++) {
for (int j = jj - 1; j >= 0; j --) {
for (int mask = 0; mask < (1 << 3); mask ++) {
for (int maskk = 0; maskk < (1 << 3); maskk ++) {
auto [d, cnt] = cost[j][jj][mask][maskk];
if (d == -1 || cnt <= 0) continue;
f[jj][maskk][cnt] = max(f[jj][maskk][cnt], d);
for (int k = 0; k <= K; k ++) {
if (k >= cnt) {
f[jj][maskk][k] = max(f[jj][maskk][k], min(f[j][mask][k - cnt], d));
}
}
}
}
}
}
double ans = -1;
for (int mask = 0; mask < (1 << 3); mask ++) {
ans = max(ans, f[N][mask][K]);
}
if (N == K) {
// Best case is 2
ans = min(ans, 2.0);
}
cout << ans << "\n";
}
signed main() {
ios_base::sync_with_stdio(false); cin.tie(0);
cout << fixed << setprecision(10);
int Tests = 1; // cin >> Tests;
while (Tests --) {
Solve();
}
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 5848kb
input:
5 2 #.... ..... ....#
output:
4.4721359550
result:
ok found '4.4721360', expected '4.4721360', error '0.0000000'
Test #2:
score: 0
Accepted
time: 1ms
memory: 5760kb
input:
5 6 ##.## ##### .....
output:
1.0000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #3:
score: 0
Accepted
time: 1ms
memory: 5996kb
input:
3 4 ..# ... ...
output:
1.4142135624
result:
ok found '1.4142136', expected '1.4142140', error '0.0000003'
Test #4:
score: 0
Accepted
time: 1ms
memory: 6048kb
input:
2 6 .. .# ..
output:
-1.0000000000
result:
ok found '-1.0000000', expected '-1.0000000', error '-0.0000000'
Test #5:
score: 0
Accepted
time: 1ms
memory: 6032kb
input:
1 2 . . .
output:
2.0000000000
result:
ok found '2.0000000', expected '2.0000000', error '0.0000000'
Test #6:
score: 0
Accepted
time: 6ms
memory: 22328kb
input:
100 2 .................................................................................................... .................................................................................................... ...............................................................................................
output:
99.0201999594
result:
ok found '99.0202000', expected '99.0202000', error '0.0000000'
Test #7:
score: 0
Accepted
time: 4ms
memory: 22604kb
input:
100 3 .................................................................................................... .................................................................................................... ...............................................................................................
output:
49.0407993410
result:
ok found '49.0407993', expected '49.0407990', error '0.0000000'
Test #8:
score: 0
Accepted
time: 41ms
memory: 22592kb
input:
100 100 .................................................................................................... .................................................................................................... .............................................................................................
output:
2.0000000000
result:
ok found '2.0000000', expected '2.0000000', error '0.0000000'
Test #9:
score: 0
Accepted
time: 59ms
memory: 22568kb
input:
100 150 .................................................................................................... .................................................................................................... .............................................................................................
output:
1.4142135624
result:
ok found '1.4142136', expected '1.4142140', error '0.0000003'
Test #10:
score: 0
Accepted
time: 60ms
memory: 22520kb
input:
100 151 .................................................................................................... .................................................................................................... .............................................................................................
output:
1.0000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #11:
score: 0
Accepted
time: 77ms
memory: 22284kb
input:
100 200 .................................................................................................... .................................................................................................... .............................................................................................
output:
1.0000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #12:
score: 0
Accepted
time: 77ms
memory: 22464kb
input:
100 201 .................................................................................................... .................................................................................................... .............................................................................................
output:
1.0000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #13:
score: 0
Accepted
time: 15ms
memory: 14864kb
input:
60 130 ............................................................ ............................................................ ............................................................
output:
1.0000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #14:
score: 0
Accepted
time: 10ms
memory: 22560kb
input:
100 100 .................................................................................................... #################################################################################################### .............................................................................................
output:
2.0000000000
result:
ok found '2.0000000', expected '2.0000000', error '0.0000000'
Test #15:
score: 0
Accepted
time: 0ms
memory: 22544kb
input:
100 51 #################################################################################################### .................................................................................................... ###########################################################################################...
output:
1.0000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #16:
score: 0
Accepted
time: 1ms
memory: 5916kb
input:
1 2 # # #
output:
-1.0000000000
result:
ok found '-1.0000000', expected '-1.0000000', error '-0.0000000'
Test #17:
score: 0
Accepted
time: 0ms
memory: 22508kb
input:
99 50 ################################################################################################### ................................................................................................... ##############################################################################################...
output:
2.0000000000
result:
ok found '2.0000000', expected '2.0000000', error '0.0000000'
Test #18:
score: 0
Accepted
time: 3ms
memory: 22556kb
input:
100 47 #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#. .#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.# #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...
output:
2.8284271247
result:
ok found '2.8284271', expected '2.8284270', error '0.0000000'
Test #19:
score: 0
Accepted
time: 3ms
memory: 22588kb
input:
100 43 .#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.# #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#. .#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#....
output:
2.8284271247
result:
ok found '2.8284271', expected '2.8284270', error '0.0000000'
Test #20:
score: 0
Accepted
time: 8ms
memory: 22288kb
input:
99 2 #........#............#.#.#...................................#................##..............#... ............................##...#......#...##.............#.........#..#...#............#...#..... #...............................................#..............#.....#.........#.........#........
output:
98.0051019080
result:
ok found '98.0051019', expected '98.0051020', error '0.0000000'
Test #21:
score: -100
Wrong Answer
time: 4ms
memory: 20220kb
input:
90 2 #############..######.###.##.#########.###.###########.####.############################## #...##########.#.#################.############.########################.################# ###################.###.##.####.#######..##.########.#############################.#######
output:
-1.0000000000
result:
wrong answer 1st numbers differ - expected: '81.0061730', found: '-1.0000000', error = '1.0123447'