(File IO): input:card.in output:card.out
時間限制: 1000 ms 空間限制: 262144 KB 具體限制
Goto ProblemSet
題目描述
是一頭非常喜歡紙牌的奶牛,雖然她沒有大拇指,但她對紙牌有近乎癡迷的喜愛。不幸的是,牛羣中的其他牛都不是好的對手。他們的水平真的很差。他們總是以一種完全可預測的方式來玩紙牌!儘管如此, 仍然可以選擇如何獲勝。
和她的朋友Elsie 在玩一個簡單的紙牌遊戲,她們拿了一付有 張卡片的牌,牌上的數字編號爲 ,並將其均分成兩份,一份卡片給 和一份卡片給。
然後兩人開始玩牌,一共進行 輪, 在每一輪中, 和 都打一張卡,誰的牌大就得一分。
神奇的 可以預測 打牌順序,並且儘可能的想贏取勝利。請確定可以贏得的最大點數。
輸入
第一行一個整數.
接下來的 行是 將每輪連續的比賽中出的牌。請注意,從這些信息很容易確定 的卡片。
輸出
一行給出 可以得分的最大點數。
樣例輸入
3
1
6
4
樣例輸出
2
數據範圍限制
提示
貝西手上的牌是,她按照 的順序出牌可以獲得2 分。
解題思路
貪心。
準備兩個有序隊列,用田忌賽馬原理。
代碼
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,m,a[100010],b[50010],c[50010],x,ans,k,k1,j;
int main(){
freopen("card.in","r",stdin);
freopen("card.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
a[x]=1;
}
k=0,k1=0;
for(int i=1;i<=n*2;i++)
if(!a[i])
b[++k]=i;
else
c[++k1]=i;
j=1,ans=0;
for(int i=1;i<=n;i++)
{
if(c[j]<b[i])
{
j++;
ans++;
if(j>n)
{
printf("%d",ans);
return 0;
}
}
}
printf("%d",ans);
}