程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> bzoj4396【Usaco2015 Dec】High Card Wins

bzoj4396【Usaco2015 Dec】High Card Wins

編輯:C++入門知識

bzoj4396【Usaco2015 Dec】High Card Wins


 

4396: [Usaco2015 dec]High Card Wins

Description

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 2N cards, conveniently numbered 1…2N, and divide them into N cards for Bessie and N cards for Elsie. The two then play N 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.

 

奶牛Bessie和Elsie在玩一種卡牌游戲。一共有2N張卡牌,點數分別為1到2N,每頭牛都會分到N張卡牌。

游戲一共分為N輪,因為Bessie太聰明了,她甚至可以預測出每回合Elsie會出什麼牌。

每輪游戲裡,兩頭牛分別出一張牌,點數大者獲勝。

Bessie現在想知道,自己最多能獲勝多少輪?

 

Input

The first line of input contains the value of N (1≤N≤50,000).
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

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

Sample Input

3
1
6
4

Sample Output

2

HINT

 

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.

Problem credits: Austin Bannister and Brian Dean

Source

貪心。將兩個人排序,用a和b兩個數組表示。每次從a數組中拿出一個最小的,再從b數組中拿出一個最小的大於這個數的數,直到b數組中所有數都小於a數組中的數。(額...大家理解就行了)
#include
#include
#include
#include
#include
#include
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
#define pa pair
#define maxn 100005
#define inf 1000000000
using namespace std;
int n,x,cnta,cntb,j=0,ans=0;
int a[maxn],b[maxn];
bool f[maxn];
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
int main()
{
	n=read();
	F(i,1,n){x=read();f[x]=true;}
	F(i,1,2*n)
	{
		if (f[i]) a[++cnta]=i;
		else b[++cntb]=i;
	}
	F(i,1,n)
	{
		j++;
		while (j<=n&&b[j]n) break;
		ans++;
	}
	printf("%d\n",ans);
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved