QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#380814#2432. Go with the Flowckiseki#AC ✓5893ms4304kbC++202.0kb2024-04-07 12:50:322024-04-07 12:50:33

Judging History

你现在查看的是最新测评结果

  • [2024-04-07 12:50:33]
  • 评测
  • 测评结果:AC
  • 用时:5893ms
  • 内存:4304kb
  • [2024-04-07 12:50:32]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define all(x) begin(x), end(x)
#ifdef CKISEKI
#define safe cerr << __PRETTY_FUNCTION__ << " line " << __LINE__ << " safe\n"
#define debug(a...) debug_(#a, a)
#define orange(a...) orange_(#a, a)
void debug_(auto s, auto ...a) {
  cerr << "\e[1;32m(" << s << ") = (";
  int f = 0;
  (..., (cerr << (f++ ? ", " : "") << a));
  cerr << ")\e[0m\n";
}
#include <experimental/iterator>
void orange_(auto s, auto L, auto R) {
  cerr << "\e[1;33m[ " << s << " ] = [ ";
  using namespace experimental;
  copy(L, R, make_ostream_joiner(cerr, ", "));
  cerr << " ]\e[0m\n";
}
#else
#define safe ((void)0)
#define debug(...) safe
#define orange(...) safe
#endif

int main() {
  cin.tie(nullptr)->sync_with_stdio(false);
  int n;
  cin >> n;
  vector<string> a(n);
  for (auto &ai : a)
    cin >> ai;

  auto solve = [&](int l) {
    int ans = 0;
    vector<pair<int, int>> pre;
    int p = 0;
    while (p < n) {
      vector<pair<int, int>> cur;
      int w = 0;
      while (w < l and p < n) {
        int curw = int(a[p].size()) + !!w;
        if (w + curw > l)
          break;
        w += curw;
        p += 1;
        cur.emplace_back(w, 1);
      }
      cur.pop_back();

      size_t o = 0;
      for (auto &[y, v] : cur) {
        ans = max(ans, v);
        while (o < pre.size()) {
          if (pre[o].first + 1 < y)
            o += 1;
          else
            break;
        }
        if (o == pre.size())
          continue;
        if (abs(pre[o].first - y) <= 1) {
          v = max(v, pre[o].second + 1);
        }
        if (o + 1 < pre.size() and abs(pre[o + 1].first - y) <= 1) {
          v = max(v, pre[o + 1].second + 1);
        }
        ans = max(ans, v);
      }
      pre = cur;
    }
    return ans;
  };

  int len = 0;
  for (const auto &ai : a)
    len = max(len, int(ai.size()));

  pair<int, int> ans = {-1, 0};
  for (int l = len; l < 2500 * 81; ++l)
    ans = max(ans, pair{solve(l), -l});
  cout << -ans.second << ' ' << ans.first << '\n';
  return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 50ms
memory: 3796kb

Test #2:

score: 0
Accepted
time: 56ms
memory: 3564kb

Test #3:

score: 0
Accepted
time: 10ms
memory: 3620kb

Test #4:

score: 0
Accepted
time: 73ms
memory: 3564kb

Test #5:

score: 0
Accepted
time: 402ms
memory: 3932kb

Test #6:

score: 0
Accepted
time: 116ms
memory: 3836kb

Test #7:

score: 0
Accepted
time: 59ms
memory: 3528kb

Test #8:

score: 0
Accepted
time: 59ms
memory: 3628kb

Test #9:

score: 0
Accepted
time: 56ms
memory: 3624kb

Test #10:

score: 0
Accepted
time: 62ms
memory: 3628kb

Test #11:

score: 0
Accepted
time: 80ms
memory: 3628kb

Test #12:

score: 0
Accepted
time: 147ms
memory: 3644kb

Test #13:

score: 0
Accepted
time: 1697ms
memory: 3716kb

Test #14:

score: 0
Accepted
time: 1709ms
memory: 3752kb

Test #15:

score: 0
Accepted
time: 1700ms
memory: 3908kb

Test #16:

score: 0
Accepted
time: 4608ms
memory: 3828kb

Test #17:

score: 0
Accepted
time: 4606ms
memory: 3988kb

Test #18:

score: 0
Accepted
time: 4609ms
memory: 4076kb

Test #19:

score: 0
Accepted
time: 4348ms
memory: 3752kb

Test #20:

score: 0
Accepted
time: 4301ms
memory: 3816kb

Test #21:

score: 0
Accepted
time: 5125ms
memory: 3892kb

Test #22:

score: 0
Accepted
time: 5890ms
memory: 4304kb

Test #23:

score: 0
Accepted
time: 4297ms
memory: 3732kb

Test #24:

score: 0
Accepted
time: 4308ms
memory: 3760kb

Test #25:

score: 0
Accepted
time: 3938ms
memory: 3888kb

Test #26:

score: 0
Accepted
time: 3908ms
memory: 3784kb

Test #27:

score: 0
Accepted
time: 3904ms
memory: 3768kb

Test #28:

score: 0
Accepted
time: 1815ms
memory: 4016kb

Test #29:

score: 0
Accepted
time: 1830ms
memory: 3688kb

Test #30:

score: 0
Accepted
time: 1810ms
memory: 3732kb

Test #31:

score: 0
Accepted
time: 5663ms
memory: 4220kb

Test #32:

score: 0
Accepted
time: 5104ms
memory: 3836kb

Test #33:

score: 0
Accepted
time: 5113ms
memory: 3908kb

Test #34:

score: 0
Accepted
time: 4139ms
memory: 3764kb

Test #35:

score: 0
Accepted
time: 16ms
memory: 3828kb

Test #36:

score: 0
Accepted
time: 5099ms
memory: 4180kb

Test #37:

score: 0
Accepted
time: 5795ms
memory: 4220kb

Test #38:

score: 0
Accepted
time: 5793ms
memory: 3932kb

Test #39:

score: 0
Accepted
time: 5543ms
memory: 4216kb

Test #40:

score: 0
Accepted
time: 5603ms
memory: 3952kb

Test #41:

score: 0
Accepted
time: 5640ms
memory: 4256kb

Test #42:

score: 0
Accepted
time: 5812ms
memory: 4252kb

Test #43:

score: 0
Accepted
time: 5843ms
memory: 4056kb

Test #44:

score: 0
Accepted
time: 5808ms
memory: 3936kb

Test #45:

score: 0
Accepted
time: 5516ms
memory: 4012kb

Test #46:

score: 0
Accepted
time: 5515ms
memory: 4260kb

Test #47:

score: 0
Accepted
time: 5530ms
memory: 3952kb

Test #48:

score: 0
Accepted
time: 5508ms
memory: 3964kb

Test #49:

score: 0
Accepted
time: 5713ms
memory: 4048kb

Test #50:

score: 0
Accepted
time: 5598ms
memory: 4284kb

Test #51:

score: 0
Accepted
time: 5525ms
memory: 3952kb

Test #52:

score: 0
Accepted
time: 5517ms
memory: 3960kb

Test #53:

score: 0
Accepted
time: 5318ms
memory: 3924kb

Test #54:

score: 0
Accepted
time: 81ms
memory: 3792kb

Test #55:

score: 0
Accepted
time: 993ms
memory: 3932kb

Test #56:

score: 0
Accepted
time: 311ms
memory: 3880kb

Test #57:

score: 0
Accepted
time: 5873ms
memory: 3980kb

Test #58:

score: 0
Accepted
time: 5893ms
memory: 4292kb

Test #59:

score: 0
Accepted
time: 1061ms
memory: 3744kb

Test #60:

score: 0
Accepted
time: 805ms
memory: 3708kb

Test #61:

score: 0
Accepted
time: 87ms
memory: 3796kb

Test #62:

score: 0
Accepted
time: 654ms
memory: 3704kb

Test #63:

score: 0
Accepted
time: 1866ms
memory: 3728kb

Test #64:

score: 0
Accepted
time: 1087ms
memory: 3696kb

Test #65:

score: 0
Accepted
time: 5360ms
memory: 4008kb

Test #66:

score: 0
Accepted
time: 6ms
memory: 3856kb