QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#784541 | #9802. Light Up the Grid | xbzxzn# | WA | 16ms | 5708kb | C++20 | 2.3kb | 2024-11-26 15:18:02 | 2024-11-26 15:18:03 |
Judging History
answer
#include <bits/stdc++.h>
using i64 = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int T;
std::cin >> T;
std::vector<int> a(4);
std::vector<std::array<int, 2>> e;
for (int i = 0; i < 4; i++) {
std::cin >> a[i];
}
e.push_back({a[0], 1});
e.push_back({a[0], 2});
e.push_back({a[0], 4});
e.push_back({a[0], 8});
e.push_back({a[1], 3});
e.push_back({a[1], 12});
e.push_back({a[2], 10});
e.push_back({a[2], 5});
e.push_back({a[3], 15});
const int N = 16;
std::vector dis(N, std::vector<i64>(N, 1E12));
for (int i = 0; i < N; i++) {
//dis[i][i] = 0;
for (auto [w, st] : e) {
int j = (i ^ st);
dis[i][j] = dis[j][i] = std::min(dis[i][j], 1LL * w);
}
}
for (int k = 0; k < N; k++) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
dis[i][j] = std::min(dis[i][j],dis[i][k]+dis[k][j]);
}
}
}
std::vector<i64> pre(1 << N), dp(1 << N, 1E12),vis(1<<N);
dp[0] = 0;
std::priority_queue<std::pair<i64, int>, std::vector<std::pair<i64, int>>, std::greater<>> q;
q.emplace(0, 0);
while (!q.empty()) {
auto [val, st] = q.top();
q.pop();
if(vis[st])continue;
vis[st]=1;
for (int i = 0; i < N; i++) {
if (~st >> i) {
int ns = st | (1 << i);
int state=i^pre[st];
if(dp[ns]>dp[st]+dis[state][15]){
dp[ns]=dp[st]+dis[state][15];
pre[ns]=pre[st]^15^state;
q.push({dp[ns],ns});
}
}
}
}
while (T--) {
int n;
std::cin >> n;
std::vector<int> b(n);
for (int i = 0; i < n; i++) {
std::string t;
std::cin >> t;
b[i] = ((t[0] - '0') << 3);
b[i] += ((t[1] - '0') << 2);
std::cin >> t;
b[i] += ((t[0] - '0') << 1);
b[i] += ((t[1] - '0'));
}
int state=0;
for(int i=0;i<n;i++){
state|=(1<<b[i]);
}
std::cout<<dp[state]<<'\n';
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 14ms
memory: 5708kb
input:
2 1000 100 10 1 4 10 00 01 00 00 10 00 01 1 11 11
output:
1121 2
result:
ok 2 number(s): "1121 2"
Test #2:
score: 0
Accepted
time: 7ms
memory: 5272kb
input:
2 1 1 1 1 4 10 00 01 00 00 10 00 01 1 11 11
output:
5 2
result:
ok 2 number(s): "5 2"
Test #3:
score: 0
Accepted
time: 11ms
memory: 5300kb
input:
1 1000000 1000000 1000000 1000000 1 11 11
output:
2000000
result:
ok 1 number(s): "2000000"
Test #4:
score: -100
Wrong Answer
time: 16ms
memory: 5692kb
input:
10000 8 2 7 8 8 00 01 00 11 00 10 11 11 10 10 01 10 01 00 10 11 8 11 01 11 00 01 10 11 11 00 01 01 01 01 00 11 10 9 00 00 01 01 10 11 00 01 11 10 11 00 11 11 00 11 01 10 9 11 11 10 00 11 00 11 01 00 10 01 11 00 01 01 01 10 01 11 00 01 01 01 10 10 00 11 11 11 11 10 ...
output:
34 32 36 37 42 36 42 38 40 42 36 44 34 39 39 32 29 39 40 40 38 41 46 38 31 38 37 38 34 35 32 41 34 36 41 40 45 34 39 34 29 36 40 40 43 35 39 38 38 38 42 29 41 41 36 42 44 40 41 35 42 40 38 33 34 39 38 37 42 40 34 36 29 34 35 38 36 39 38 37 36 38 35 34 36 34 42 40 38 40 40 40 38 42 38 29 36 40 36 36 ...
result:
wrong answer 4th numbers differ - expected: '36', found: '37'