教育Codeforcesラウンド78题解

タイトル

水の問題が、私は内部文字列を知らないので、並べ替えることもでき、トリックを学び、トラブルに行います

#include <iostreamの> 
する#include <cstdioを> 
する#include <cmath> 
の#include <CStringの> 
する#include <アルゴリズム>
 使用して 名前空間をSTD。
CONST  INT N = 1E5 + 10 const  int型 INF = 0x3f3f3f3f int型 [ 27 ]、bは[ 27 ]。
INT のmain(){
     int型のT。
    cinを >> トン。
    一方、(t-- ){
         文字列P。
        文字列sの。
        CIN >> P >>S;
        int型私は、
        INT L1 = s.size()。
        INT L2 = p.size()。 
        INTフラグ= 0 もし(L1 < L2){ 
            COUT << " NO " << ENDL。
            続け; 
        } 
        のためには、式(I = 0、I <L1-L2 + 1 ; I ++ ){ 
        memsetの(0はsizeof )。
        memset(B、0はsizeof B)。
            フラグ =0 ;
            ストリング TMP = s.substr(I、L2)。
            int型J;
            (J = 0 ; J <p.size(); J ++ ){
                 int型の記号= P [J] - ' ' 
                [記号] ++ ; 
            } ため(J = 0 ; J <tmp.size(); J ++ ){
             int型の記号= TMP [J] - ' ' 
            B [サイン] ++ ;} 
             ため(J = 0 ; J < 26 ; J ++
            ){
              もし!([J] = B [J]){ 
                 フラグ = 1 休憩; 
             }} 
        もし(フラグ== 0 ){ 
            COUT << " YES " << ENDL。
            休憩; 
        } 
    } 
    もし(フラグ== 1 
    COUT << " NO " << ENDL。
}}
コードの表示

Bタイトル

数学

私たちは、プレフィックスと要件を取るのでもちろん、差異を計算することで、我々は当然、その大に近づいて小さな増加を持ちたいです

私たちは知っている、と同じ行に接頭辞とパリティの違いを知ることができます

#include <iostreamの> 
する#include <cstdioを> 
する#include <cmath> 
の#include <CStringの> 
する#include <アルゴリズム>
 使用して 名前空間をSTD。
CONST  INT N = 1E5 + 10 const  int型 INF = 0x3f3f3f3f INT のmain(){
     int型のT。
    cinを >> トン。
    一方、(t-- ){
         int型 S [N] = { 0 }。
        int型のA、B; 
        CIN >> B;
        もし(> B)
        スワップ(B)
        int型の合計= B- int型私は、
        以下のために(iは= 1 ; I <Nであり; iは++ ){ 
            S [I] = S [I- 1 ] + I。
        } 
        であれば(和== 0 
        COUT << 0 << ENDL。
        {
             ためには、式(I = 1、I <N; I ++ ){
                 もし、(S [i]が-sum> = 0 &&(S [i]が-sum)%2 == 0 ){ 
                    COUT << I <<endl;
                    休憩; 
                } 
            } 
        } 
    } 
}
コードの表示

Cのタイトル

限り、この問題を最小限に多くの場合、互いにストライク接頭辞と接尾辞対向として

この質問に、このようなジョブに等しい貢献の二つのタイプとして、2-1に変換されなければなりません

ヒント:使用マップ

#include <iostreamの> 
する#include <cstdioを> 
する#include <cmath> 
の#include <CStringの> 
する#include <アルゴリズム> 
の#include <地図> 
 使用して 名前空間STDを、
CONST  INT N = 2E5 + 10 const  int型 INF = 0x3f3f3f3f INT のmain(){
     int型のT。
    cinを >> トン。
    一方、(t-- ){
         int型 S [N] = { 0 }。
        マップ < int型int型 >POS;
        int型私は、
        int型のn; 
        cinを >> N; 
        POS [ 0 ] = 0 ;
        ための式(I = 1 ; iが<= 2 * N; I ++ ){
             int型
            cinを >> ;
            もし(== 2  = - 1 
            S [i]は = S [I- 1 ] + もし(I <= N)
            POS [S [I] = I。
        } 
        int型RES = 2 * N。
        以下のための(iはN =、iは<= 2 * N; iは++ ){ 
            オートは、それが = pos.find(S [i]を-s [ 2 * N])。
            もし(!それ= pos.end())
            RES =分(RES、I-IT-> 秒)。
        } 
        COUT << RES << ENDL。
    } 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/ctyakwf/p/12235548.html