QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#574065#5537. Storing EggsMay_27thWA 77ms22604kbC++203.2kb2024-09-18 20:42:062024-09-18 20:42:06

Judging History

This is the latest submission verdict.

  • [2024-09-18 20:42:06]
  • Judged
  • Verdict: WA
  • Time: 77ms
  • Memory: 22604kb
  • [2024-09-18 20:42:06]
  • Submitted

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'