QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#414689#6751. GameCodeK_GWA 27ms11012kbC++141.5kb2024-05-19 15:11:132024-05-19 15:11:14

Judging History

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

  • [2024-05-19 15:11:14]
  • 评测
  • 测评结果:WA
  • 用时:27ms
  • 内存:11012kb
  • [2024-05-19 15:11:13]
  • 提交

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) 
				{
					h[n] = d;
					h[0] = c;
					h[n + 1] = b;
					h[1] = a;
					idx -= 4;
					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;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 9864kb

input:

2
7 5

output:

5

result:

ok 1 number(s): "5"

Test #2:

score: 0
Accepted
time: 21ms
memory: 11012kb

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: 27ms
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: 0
Accepted
time: 0ms
memory: 8272kb

input:

2
935731565 82105791

output:

82105791

result:

ok 1 number(s): "82105791"

Test #5:

score: 0
Accepted
time: 1ms
memory: 8132kb

input:

3
171939825 807658157 660882486

output:

820240234

result:

ok 1 number(s): "820240234"

Test #6:

score: 0
Accepted
time: 1ms
memory: 8272kb

input:

3
587965118 408133317 80363283

output:

488496600

result:

ok 1 number(s): "488496600"

Test #7:

score: 0
Accepted
time: 2ms
memory: 10004kb

input:

3
587892759 387652767 805243353

output:

890394439

result:

ok 1 number(s): "890394439"

Test #8:

score: 0
Accepted
time: 1ms
memory: 7876kb

input:

3
323926161 274794059 912783085

output:

598720220

result:

ok 1 number(s): "598720220"

Test #9:

score: -100
Wrong Answer
time: 2ms
memory: 7904kb

input:

4
469392609 458382533 411521312 498263282

output:

880913921

result:

wrong answer 1st numbers differ - expected: '918779868', found: '880913921'