QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#830169#9916. Defeat the EnemiesCQXYM#WA 23ms3644kbC++171.4kb2024-12-24 16:30:052024-12-24 16:30:06

Judging History

This is the latest submission verdict.

  • [2024-12-24 16:30:06]
  • Judged
  • Verdict: WA
  • Time: 23ms
  • Memory: 3644kb
  • [2024-12-24 16:30:05]
  • Submitted

answer

#include<stdio.h>
#define L long long
#define P 9983244353
void Max(int&x,int y){
	if(x<y){
		x=y;
	}
}
void Add(int&x,int y){
	x+=y;
	if(x>=P){
		x-=P;
	}
}
int c[101],g[20301],lf[20301],a[500000],b[500000];
L f[20301];
void Calc(int n,int k,int H,L&F,int&G){
	//fprintf(stderr,"H%d\n",H);
	for(int i=1;i<=H;i++){
		lf[i]=0;
	}
	for(int i=0;i<n;i++){
		Max(lf[H-b[i]],a[i]);
		//printf("P%d %d\n",a[i],H-b[i]);
	}
	/*for(int i=1;i<=H;i++){
		printf("%d ",lf[i]);
	}
	puts("");*/
	for(int i=1;i<=H;i++){
		//printf("L%d %d\n",i,lf[i-1]);
		f[i]=1e17;
		for(int j=1;j<=k&&j<=i-lf[i-1];j++){
			if(f[i-j]+c[j]<f[i]){
				f[i]=f[i-j]+c[j];
				g[i]=g[i-j]%P;
			}else if(f[i-j]+c[j]==f[i]){
				Add(g[i],g[i-j]);
			}
		}
		if(lf[i-1]>lf[i]){
			lf[i]=lf[i-1];
		}
		//printf("I%d %d %d\n",i,f[i],g[i]);
	}
	if(f[H]<F){
		F=f[H];
		G=g[H];
	}else if(f[H]==F){
		Add(G,g[H]);
	}
}
void Solve(){
	int n,m,k,H=0;
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++){
		scanf("%d",a+i);
	}
	for(int i=0;i<n;i++){
		scanf("%d",b+i);
	}
	for(int i=0;i<n;i++){
		Max(H,a[i]+b[i]);
	}
	scanf("%d",&k);
	for(int i=1;i<=k;i++){
		scanf("%d",c+i);
	}
	L ansf=1e17;
	int ansg;
	for(int i=0;i<=k*2;i++){
		Calc(n,k,H+i,ansf,ansg);
	}
	printf("%lld ",ansf);
	printf("%d\n",ansg);
}
int main(){
	g[0]=1;
	int t;
	scanf("%d",&t);
	for(int i=0;i<t;i++){
		Solve();
	}
	return 0;
}

详细

Test #1:

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

input:

4
5 5
3 5 2 1 2
3 1 3 2 3
3
2 3 4
3 2
2 2 2
2 2 2
3
2 3 3
7 6
5 3 4 6 6 3 4
4 6 4 2 3 5 5
4
2 4 6 7
10 100
38 49 79 66 49 89 21 55 13 23
67 56 26 39 56 16 84 50 92 82
11
6 6 7 8 9 9 9 9 9 9 9

output:

9 1
6 4
18 18
99 44387

result:

ok 8 numbers

Test #2:

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

input:

1000
5 3
1 1 3 1 2
3 2 1 1 2
1
5
5 3
3 3 2 2 1
1 1 3 1 1
3
3 1 3
5 5
4 3 5 1 4
5 5 2 5 5
2
1 5
5 5
5 5 5 5 4
2 1 2 4 1
2
1 1
5 3
2 1 2 1 1
1 3 2 1 1
1
5
2 1
1 1
1 1
3
2 2 1
5 5
2 3 5 2 2
5 2 4 3 1
2
3 3
5 1
1 1 1 1 1
1 1 1 1 1
3
5 4 4
5 4
1 4 4 4 2
4 3 1 3 3
1
2
1 5
2
2
3
4 2 4
1 5
4
5
1
4
2 5
1 5
1...

output:

20 1
3 1
9 1
5 4
20 1
2 1
15 4
8 4
14 1
4 1
36 1
12 1
27 1
2 1
20 1
4 1
10 1
23 1
10 1
4 1
28 1
4 1
5 1
4 1
6 1
8 1
6 1
16 1
9 6
5 1
30 1
4 1
4 1
2 1
35 1
10 1
2 1
4 1
15 6
4 1
20 1
4 1
6 1
40 1
4 1
18 1
8 1
7 1
6 1
2 1
10 1
3 1
9 1
8 1
4 1
6 4
20 1
8 2
10 1
2 1
2 1
50 1
24 1
6 1
10 16
10 1
6 1
3 1
...

result:

ok 2000 numbers

Test #3:

score: -100
Wrong Answer
time: 23ms
memory: 3608kb

input:

200
50 16
15 15 15 14 15 13 15 15 14 15 16 16 16 12 16 16 16 16 14 13 14 16 13 16 13 16 14 13 16 16 12 14 16 15 13 16 14 16 12 15 14 15 13 14 15 15 15 15 16 13
13 14 16 13 16 16 16 15 13 15 13 16 15 15 16 16 16 16 16 15 16 16 14 12 15 16 16 16 13 12 15 15 16 12 15 14 16 16 16 12 16 16 16 16 15 14 15...

output:

14 6889
68 33856
60 841
388 14400
20 214369
100 1
72 8281
6 256
39 30
4 1
58 1
12 144
4 144
116 169
46 38416
100 1
26 11025
88 36
80 1
10 81
114 100
92 1531055553
56 1
50 1296
400 -1912340480
68 1
32 9
6 1
1100 1
100 -598740071
46 1600
80 57
44 576
92 1
26 441
7 320
106 9
68 29241
34 324
29 7878
4 1...

result:

wrong answer 44th numbers differ - expected: '413318192', found: '1531055553'