QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#108761#5123. StreetsshenxingeWA 882ms20912kbC++231.4kb2023-05-26 16:57:422023-05-26 16:57:46

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-05-26 16:57:46]
  • 评测
  • 测评结果:WA
  • 用时:882ms
  • 内存:20912kb
  • [2023-05-26 16:57:42]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn(1e5+10),maxe(1e5),inf(1e9+7);
int n,m,T,X[maxn],Y[maxn],A[maxn],B[maxn],va[maxn],vb[maxn],f[maxn][20],st[maxn],top,mx,c;
inline int F(int i,int j){return i*vb[j]+j*va[i];}
inline int check(int i,int j){
	for(int l=20;l;l--) if(f[f[j][l]][0]&&F(i,f[j][l])>=F(i,f[f[j][l]][0])) j=f[j][l];
	if(j!=mx&&F(i,f[j][0])<=c) return true; return F(i,j)<=c;
}
signed main(){
	ios::sync_with_stdio(false),cin.tie(nullptr);
	cin >> n >> m >> T;for(int i=1;i<=maxe;i++) va[i]=vb[i]=inf;
	for(int i=1;i<=n;i++) cin >> X[i];for(int i=1;i<=n;i++) cin >> A[i];
	for(int i=1;i<=m;i++) cin >> Y[i];for(int i=1;i<=m;i++) cin >> B[i];
	for(int i=1;i<=n;i++) for(int j=1;j<i;j++) va[X[i]-X[j]]=min(va[X[i]-X[j]],A[i]+A[j]);
	for(int i=1;i<=m;i++) for(int j=1;j<i;j++) vb[Y[i]-Y[j]]=min(vb[Y[i]-Y[j]],B[i]+B[j]);
	for(int i=maxe;i;i--) if(vb[i]!=inf){
		while(top>1&&(vb[st[top]]-vb[i])*(st[top-1]-st[top])>=(vb[st[top-1]]-vb[st[top]])*(st[top]-i)) top--;
		if(!top) mx=i; else f[i][0]=st[top]; st[++top]=i;
	}
	for(int i=1;i<20;i++) for(int u=1;u<=maxe;u++) f[u][i]=f[f[u][i-1]][i-1];
	while(T--){cin >> c;int ans=0;
		for(int i=maxe,p=1;i;i--) if(va[i]!=inf) while(true){
			while(p<=mx&&vb[p]==inf) p++; if(p<=mx&&check(i,p)) ans=max(ans,i*(p++)); else break;
		}cout << ans << '\n';
	}
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 22ms
memory: 20736kb

input:

3 4 20
1 3 4
3 1 2
1 3 4 7
4 2 1 2
1
5
6
7
9
10
11
12
15
16
17
22
23
28
30
35
43
47
49
57

output:

0
0
1
1
1
2
2
3
3
4
4
6
6
9
9
12
12
12
18
18

result:

ok 20 numbers

Test #2:

score: -100
Wrong Answer
time: 882ms
memory: 20912kb

input:

4995 4998 100
4 7 20 34 44 100 102 130 175 198 205 250 257 259 267 278 300 324 337 346 353 364 403 427 439 440 451 523 532 534 555 599 634 639 756 802 805 825 855 859 890 905 912 915 953 989 1014 1031 1052 1059 1097 1124 1183 1216 1297 1308 1337 1342 1361 1392 1400 1421 1451 1471 1523 1537 1542 1619...

output:

9991201920
9846069112
907122720
8760274420
6060281040
9937597384
9829379855
8760274420
7574750880
4509287264
6775157696
2333014890
5639921024
8604323616
9847265560
8760672560
8729294196
8602154816
8634860320
4509287264
1009880032
6527220480
9801310985
2333014890
5841619424
8602154816
1714219520
6697...

result:

wrong answer 2nd numbers differ - expected: '9941157660', found: '9846069112'