(Jizhong)2200 [トレーニング] GDKOIカードゲーム(カード)[貪欲]

(ファイルIO):入力:card.in出力:card.out
制限時間:1000msのスペースの制約:262144キロバイトの特定の制限
後藤ProblemSet


タイトル説明
B E S S E ベッシー 、彼女が親指ませんでしたが、非常に多くのカード牛のようなものですが、彼女はトランプの愛とほぼ強迫観念を持っています。残念ながら、群れの他の牛が良い相手ではありません。彼らのレベルは本当に悪いです。彼らはカードをプレイするために、完全に予測可能な方法で常にあります!それにもかかわらず、 B E S S E ベッシー まだ勝つためにどのように選択することができます。
B E S S E ベッシー との単純なカードゲームをプレイする彼女の友人エルシーは、彼らは、有料aに持っています 2 n個 2N カードカード、デジタル数字のカードがあるに 1 - 2 n個 1 - 2N 、及びカードに2つに分割され B E S S E ベッシー とカードへ E リットル S E エルシー
その後、彼らは、行動の合計をカードをプレイし始めました n個 n個 ホイール、各ラウンドにおいて、 B E S S E ベッシー E リットル S E エルシー 、大きなポイントを持っているカードをカードをプレイしています。
マジック B E S S E ベッシー 予測することができ E リットル S E エルシー カードの順序、および勝利のようにのように。確認してください B E S S E ベッシー ポイントの最大数を獲得することができます。


入力
整数最初の行を N 1 N 50 000 N(1≤N≤50,000)
N N ラインです E リットル S E エルシー 連続ゲームカードを四捨五入します。情報から決定することは容易であることに注意してください B E S S E ベッシー カード。

出力
ラインが与えられています B E S S E ベッシー 点の最大数を獲得することができます。


サンプル入力
。3
。1
。6
。4

サンプル出力
2


データ範囲の制限


ヒント
カードのベッシーの手があります 2 3 5 2,3,5 、彼女によると、 2 3 5 2,3,5 シーケンシャル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);
}
公開された119元の記事 ウォンの賞賛8 ビュー4912

おすすめ

転載: blog.csdn.net/kejin2019/article/details/104975652