问题标题: 酷町堂:4231 优势数组

0
0
已解决
熊潇然
熊潇然
初级启示者
初级启示者

4231   优势数组

经验值:1200 时间限制:1000毫秒 内存限制:128MB

题目描述 Description

给出两个数组a和b。数组a相对于数组b的优势指的是满足a[i]>b[i]的不同的i的数目。现在求出数组a的一个相对于数组b的优势最大的一种排列的,优势的大小。

输入描述 Input Description

第一行,一个整数n
第二行,n个整数,a1 a2 a3 … an
第三行,n个整数,b1 b2 b3 … bn

输出描述 Output Description

最大的可能的优势

样例输入 Sample Input

4 2 7 11 15 1 10 4 11

样例输出 Sample Output

4

数据范围及提示 Data Size & Hint

2 11 7 15这种排列,可以在每一个位置上都占有优势

 

错误代码 WA 0分:

#include<bits/stdc++.h>
using namespace std;
int n,a[1005],b[1005],cnt;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	sort(a+1,a+1+n);
	sort(b+1,b+1+n);
	int la=1,ra=n;
	int lb=1,rb=n;
	for(int i=1;i<=n;i++){
		if(a[la]<b[lb]){
			la++;rb--;
			cnt--;
		}else if(a[la]>b[lb]){
			la++;lb++;
			cnt++;
		}else{
			if(a[ra]>b[rb]){
				ra--;rb--;
				cnt++;
			}else if(a[ra]<b[rb]){
				la++;rb--; 
				cnt--;
			}else{
				if(a[la]<b[rb]){
					cnt--;
				}
				la++;rb--;
			}
		}
	}
	cout<<cnt; 
	return 0;
}

这一题不是跟【5605   盲比多少游戏(game)】差不多吗,为什么我不对???

求大佬指点

熊潇然在2022-11-05 09:22:42追加了内容

@张世贤 还是WA 0分:

#include<bits/stdc++.h>
using namespace std;
int n,a[1005],b[1005],cnt;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	sort(a+1,a+1+n);
	sort(b+1,b+1+n);
	for(int i=1;i<=n;i++){
		if(a[i]>b[i]){
			cnt++;
		}
	}
	cout<<cnt; 
	return 0;
}

 


0
已采纳
张世贤
张世贤
中级守护
中级守护

谁说要用for循环的?

我说一个l是a的

一个l(之前名字有点问题)是b的

so use while 循环

0
0
张世贤
张世贤
中级守护
中级守护

你考虑的太复杂了

排序后,能赢则赢,没法赢就躺平(跳过这个a[l]->l++)

so,只需一个l(a数组)和一个r(b数组)就可以了

0
我要回答