题目描述

Bessie the cow is a huge fan of card games, which is quite surprising, given her lack of opposable thumbs. Unfortunately, none of the other cows in the herd are good opponents. They are so bad, in fact, that they always play in a completely predictable fashion! Nonetheless, it can still be a challenge for Bessie to figure out how to win.

Bessie and her friend Elsie are currently playing a simple card game where they take a deck of  cards, conveniently numbered , and divide them into  cards for Bessie and  cards for Elsie. The two then play  rounds, where in each round Bessie and Elsie both play a single card, and the player with the highest card earns a point.

Given that Bessie can predict the order in which Elsie will play her cards, please determine the maximum number of points Bessie can win.

输入描述:

The first line of input contains the value of
The next N lines contain the cards that Elsie will play in each of the successive rounds of the game. Note that it is easy to determine Bessie's cards from this information.

输出描述:

Output a single line giving the maximum number of points Bessie can score.

示例1

输入
3
1
6
4
输出
2
说明
Here, Bessie must have cards 2, 3, and 5 in her hand, and she can use these to win at most 2 points by saving the 5 until the end to beat Elsie's 4.

解答

每个牌肯定是管第一个比它小的牌是最优的
所以我们只需要从小到大记录对面目前还剩几张牌,手里只要有能管的就管上一个
#include<iostream>
#include<cstdio>
 
using namespace std;
 
int n;
bool f[100010];
int ans=0;
 
int main(){
	scanf("%d",&n);
	for(int i=0; i<n; i++){
		int x;
		scanf("%d",&x);
		f[x]=true;
	}
	int num=0;
	for(int i=1; i<=2*n; i++){
		if(f[i])num++;
		if(!f[i] && num)num--,ans++;
	}
	printf("%d\n",ans);
	
	return 0;
}

来源:everlasting的博客