QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#414685 | #6751. Game | CodeK_G | WA | 24ms | 10992kb | C++14 | 1.4kb | 2024-05-19 15:06:40 | 2024-05-19 15:06:40 |
Judging History
answer
# include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 200010;
int n;
int a[N];
LL s[N], w[N];
int cnt[N];
bool st[N];
int h[N], e[N], ne[N], idx;
void add(int a, int b, int c)
{
e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}
bool check(LL mid)
{
int a = h[1], b = h[n + 1], c = h[0], d = h[n];
add(1, n + 1, mid);
add(n + 1, 1, -mid);
add(0, n, mid);
add(n, 0, -mid);
memset(st, 0, sizeof st);
memset(cnt, 0, sizeof cnt);
for(int i = 1; i <= n + 1; i ++) s[i] = 1e16;
s[0] = 0;
queue<int>q;
q.push(0);
while(q.size())
{
int t = q.front();
q.pop();
st[t] = false;
for(int i = h[t]; ~i; i = ne[i])
{
int j = e[i];
if(s[j] > s[t] + w[i])
{
s[j] = s[t] + w[i];
cnt[j] = cnt[t] + 1;
if(cnt[j] >= n + 2) return false;
if(!st[j])
{
st[j] = true;
q.push(j);
}
}
}
}
h[n] = d;
h[0] = c;
h[n + 1] = b;
h[1] = a;
idx -= 4;
return true;
}
int main()
{
scanf("%d", &n);
LL r = 0;
for(int i = 1; i <= n; i ++)
{
scanf("%d", &a[i]);
r = r + a[i];
}
r /= 2;
memset(h, -1, sizeof h);
for(int i = 1; i <= n + 1; i ++) add(i, i - 1, 0);
for(int i = 2; i < n + 1; i ++) add(i - 2, i, a[i]);
add(n - 1, n + 1, a[1]);
LL l = 0;
while(l < r)
{
LL mid = l + r + 1 >> 1ll;
if(!check(mid)) r = mid - 1;
else l = mid;
}
printf("%lld\n", r);
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 8132kb
input:
2 7 5
output:
5
result:
ok 1 number(s): "5"
Test #2:
score: 0
Accepted
time: 15ms
memory: 10992kb
input:
200000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...
output:
10000050000
result:
ok 1 number(s): "10000050000"
Test #3:
score: 0
Accepted
time: 24ms
memory: 10976kb
input:
200000 861662489 745782129 265647834 549189505 370940221 849264541 392033409 728418798 198339990 783085331 609804410 358855280 393622065 778945552 40954966 557170903 603005334 323311229 205757461 358768170 600992776 530531842 353294276 91047369 31457845 490614287 352572900 59552090 942395591 4363418...
output:
50041744223374
result:
ok 1 number(s): "50041744223374"
Test #4:
score: -100
Wrong Answer
time: 2ms
memory: 10172kb
input:
2 935731565 82105791
output:
0
result:
wrong answer 1st numbers differ - expected: '82105791', found: '0'