双人博弈1

题目描述

小可和达达正在打牌,他们俩每人都有n张牌,每张牌的大小是从0到9的。

每一轮他们俩每个人出一张牌,数字大的获胜。特殊的如果数字相同则为平局。

但是阴险狡诈的达达,已经知道了小可的出牌顺序为S。所以他可以调整自己的牌的顺序来应对小可的牌。

请问达达最少可以输多少次,最多可以赢多少次。

输入描述

第一行:输入一个正整数n,表示每个人的牌数。

第二行:输入一个长度为n的字符串,表示按照顺序排好的小可的牌。

第三行:输入达达的牌。

输出描述

达达最少可以输多少次,最多可以赢多少次。

输入样例
3
123
321
输出样例
0
2
数据描述

30%的数据:1≤n≤10

另有20%的数据:1≤n≤1000

100%的数据:1≤n≤10^​5​​

AC代码
#include<bits/stdc++.h>
using namespace std;
char a[100008],b[100008];
int main(){
	int n,ans1=0,ans2=0;
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=0;i<n;i++) cin>>b[i];
	sort(a,a+n);
	sort(b,b+n);
	int i=0,j=0;
	while(i<n&&j<n){
		if(b[j]>=a[i]) i++,j++;
		else j++,ans1++;
	}
	i=j=0;
	while(i<n&&j<n){
		if(b[j]>a[i]) i++,j++,ans2++;
		else j++;
	}
	cout<<ans1<<"\n"<<ans2<<"\n"; 
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值