QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#259794#7793. 雷同hos_lyric#20 514ms4332kbC++142.4kb2023-11-21 13:56:552024-07-04 03:08:02

Judging History

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

  • [2024-07-04 03:08:02]
  • 评测
  • 测评结果:20
  • 用时:514ms
  • 内存:4332kb
  • [2023-11-21 13:56:55]
  • 提交

answer

#include <cassert>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <functional>
#include <iostream>
#include <limits>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

using namespace std;

using Int = long long;

template <class T1, class T2> ostream &operator<<(ostream &os, const pair<T1, T2> &a) { return os << "(" << a.first << ", " << a.second << ")"; };
template <class T> ostream &operator<<(ostream &os, const vector<T> &as) { const int sz = as.size(); os << "["; for (int i = 0; i < sz; ++i) { if (i >= 256) { os << ", ..."; break; } if (i > 0) { os << ", "; } os << as[i]; } return os << "]"; }
template <class T> void pv(T a, T b) { for (T i = a; i != b; ++i) cerr << *i << " "; cerr << endl; }
template <class T> bool chmin(T &t, const T &f) { if (t > f) { t = f; return true; } return false; }
template <class T> bool chmax(T &t, const T &f) { if (t < f) { t = f; return true; } return false; }
#define COLOR(s) ("\x1b[" s "m")


constexpr Int INF = 1001001001001001001LL;

int N;
vector<Int> W;


namespace brute {
Int dp[1 << 12][13];
Int run() {
cerr<<"[brute::run]"<<endl;
  vector<Int> WSum(1 << N, 0);
  for (int u = 0; u < N; ++u) {
    for (int p = 0; p < 1 << u; ++p) {
      WSum[p | 1 << u] = WSum[p] + W[u];
    }
  }
  for (int p = 0; p < 1 << N; ++p) {
    fill(dp[p], dp[p] + (N + 1), INF);
  }
  for (int u = 0; u < N; ++u) {
    dp[1 << u][0] = 0;
  }
  for (int p = 1; p < 1 << N; ++p) {
    for (int q = p; --q &= p; ) {
      for (int a = 0; a < N; ++a) for (int b = 0; b < N; ++b) {
        chmin(dp[p][max(a, b) + 1], dp[p - q][a] + dp[q][b] + ((1LL<<min(a,b))-1) + WSum[p]);
      }
    }
  }
  Int ans = INF;
  for (int a = 0; a <= N; ++a) {
    chmin(ans, dp[(1 << N) - 1][a]);
  }
  return ans;
}
}  // brute


int main() {
  for (int numCases; ~scanf("%d", &numCases); ) { for (int caseId = 1; caseId <= numCases; ++caseId) {
    scanf("%d", &N);
    W.resize(N);
    for (int u = 0; u < N; ++u) {
      scanf("%lld", &W[u]);
    }
    sort(W.begin(), W.end());
    
    const Int brt = brute::run();
    printf("%lld\n", brt);
  }
#ifndef LOCAL
  break;
#endif
  }
  return 0;
}

詳細信息

Subtask #1:

score: 5
Accepted

Test #1:

score: 5
Accepted
time: 1ms
memory: 3952kb

input:

4
6
1 3 5 7 9 11
6
2 4 6 8 10 12
6
100 1000 100 10 100 10
2
114514 1919810

output:

86
103
1981
2034324

result:

ok 4 tokens

Subtask #2:

score: 15
Accepted

Dependency #1:

100%
Accepted

Test #2:

score: 15
Accepted
time: 513ms
memory: 4332kb

input:

5
12
2 4 3 2 2 3 4 2 3 2 2 1
12
3 3 3 2 3 2 3 2 1 1 2 4
12
6 2 2 2 5 4 6 1 2 8 8 6
12
1 4 2 2 1 6 7 2 4 1 7 5
12
11 1 2 6 16 16 15 8 8 16 6 12

output:

114
109
183
146
400

result:

ok 5 tokens

Test #3:

score: 0
Accepted
time: 513ms
memory: 4316kb

input:

5
12
4 2 4 3 2 4 4 4 3 1 1 1
12
3 4 6 5 2 3 2 5 1 3 4 4
12
3 6 4 3 5 2 5 2 5 2 3 1
12
1 2 2 3 7 7 6 4 1 2 9 3
12
12 5 12 4 3 9 3 14 5 11 6 6

output:

120
154
150
162
316

result:

ok 5 tokens

Test #4:

score: 0
Accepted
time: 514ms
memory: 4248kb

input:

5
12
3 1 2 1 2 3 1 1 1 2 1 3
12
4 7 7 6 6 2 3 7 1 7 6 6
12
13 7 13 7 9 1 5 13 3 13 9 7
12
12 12 15 13 15 22 33 33 21 9 15 3
12
123141171 193440418 455041175 665153544 746164805 372591232 659412139 493891488 760749047 4896558 90497398 964891156

output:

80
223
349
708
18084123310

result:

ok 5 tokens

Test #5:

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

input:

5
12
2 4 3 2 5 1 6 2 5 2 1 4
12
2 6 6 6 12 8 8 6 12 6 10 11
12
23 26 26 31 13 20 13 31 2 1 15 30
12
56 33 66 31 27 64 26 2 48 55 46 66
12
113216 35921 62630 73720 41172 102245 41642 39101 40760 105980 2857 63443

output:

133
335
782
1809
2470930

result:

ok 5 tokens

Subtask #3:

score: 0
Runtime Error

Dependency #2:

100%
Accepted

Test #6:

score: 0
Runtime Error

input:

5
30
34 3 20 7 6 9 22 3 24 2 3 40 25 9 6 4 3 36 5 38 21 9 5 4 21 6 28 32 17 3
30
1 6 9 2 6 9 7 2 2 4 3 5 6 8 9 7 2 7 12 7 8 4 9 8 2 8 2 12 3 2
30
4 1 1 4 4 1 3 4 3 2 4 4 1 1 2 3 3 3 2 1 2 4 4 3 3 4 4 4 3 1
30
9 6 9 8 3 10 10 1 6 1 1 6 6 10 4 9 1 4 1 6 1 10 4 9 10 7 5 2 9 8
28
7 9 6 3 5 5 1 10 9 3 1 ...

output:


result:


Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Skipped

Dependency #4:

0%

Subtask #6:

score: 0
Runtime Error

Test #39:

score: 0
Runtime Error

input:

2
2500
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3...

output:


result:


Subtask #7:

score: 0
Skipped

Dependency #5:

0%