Codeforces(文字kは削除で始まる文字列)

 

 

あなたは、文字列を与えられています S  からなります nは  小文字のラテン文字。polycarpは正確に除去したいです k個の  文字k≤n)文字列から polycarpは、次のアルゴリズムを使用して  のk  回:

  • 少なくとも1つの文字がある場合は、「」、左端の発生を削除し、アルゴリズムを停止し、そうでない場合は次の項目に移動します。
  • 少なくとも1つの文字「がある場合b」は、左端の発生を削除し、アルゴリズムを停止し、そうでない場合は次の項目に移動します。
  • ...
  • 文字「の左端の発生取り除くZ」を、アルゴリズムを停止します。

このアルゴリズムは、文字列から単一の文字を削除します。polycarpは、まさにこのアルゴリズムを実行します kの  ように正確に取り外し、回 k個の  文字。

polycarpは、結果の文字列を見つけます。

入力

入力の最初の行は、2つの整数を含む  N  及び K(1 k個のN 4 10 5 -文字列の長さとのpolycarpが削除された文字の数。

2行目は文字列が含まれています S  からなる  n個  の小文字のラテン文字。

出力

から取得される文字列を印刷 S  のpolycarpが正確に除去した後、 k個の上記のアルゴリズムを使用して文字 k  倍。

結果の文字列が空の場合は、何も印刷しません。何か、空行(改行)を印刷しないように許可されています。

入力1

15  3 
cccaabababaccbc

出力1

cccbbabaccbc

入力2

15  9 
cccaabababaccbc

出力2

CCCCCC

入力3

1  1 

出力3

 

アイデア:

バケットの数保存された文字とのアナロジーバケットソート

 

コード:

1の#include <stdio.hの>
 2の#include < ストリング・H>
 3の#include <iostreamの>
 4の#include < ストリング >
 5の#include <math.h>の
 6の#include <アルゴリズム>
 7の#include <ベクトル>
 8#含む<スタック>
 9の#include <キュー>
 10の#include < 設定 >
 11の#include <地図>
 12の#include <math.h>の
 13  のconst  int型 INF = 0x3f3f3f3f 14 typedefの長い 長いLL。
 CONST  INT MOD = 1E9 + 7 ;
 16  CONST  INT MAXN = 4。 * 1E5 + 10 ;
 17  使用して 名前空間STD;
 18である 
。19  チャー[MAXN] STR;
 20である INT CNT [ 27 ]; // 元の文字の数
21は、 INT NUM [ 27 ] ; // 文字処理の数
22は、 
23である INT (メイン)
 24  {
 25      INT N-、K;
 26は、      scanfの(" %のD%D "、およびN-、&K)。
27      GETCHAR()。
28      のためには、int型 i = 0 ; iがn <; iは++ 29      {
 30          のscanf(" %のC "、&STR [I])。
31          CNT [STR [I] - ' ' + 1 ] ++ ;
32          NUM [STR [I] - ' ' + 1 ] ++ ;
33     }
 34      STR [N] = 0 ;
35 のためにint型 I = 1 ; I <= 26      ; I)が++ // ''とk番目のプロセスが開始
36      {
 37 [          ながら(NUM [I] && K)
 38は         、{
 39              - NUM [I] ;
 40              K-- ;
 41れる         }
 42である     }
 43はである     ためint型 Iを= 0 ; STR [I]; I ++の44である     {
 45          IF - (CNT [STR [I] ' ' + 。1 [STR [I] - ]> NUM ' ' + 1 ])// 文字の位置について説明します削除46
         {
 47              CNT [STR [I] - ' ' + 1 ] - ;
 48 続行;
 49         }
 50 // これがない場合の文字の位置が削除され、文字の出力51で              のprintf(" %のC " 、STR [I] );
 52である    }
 53は、リターン0 ;
 54です }                        
       

 

 

 

 

おすすめ

転載: www.cnblogs.com/jiamian/p/11620309.html