タイトル
水の問題が、私は内部文字列を知らないので、並べ替えることもでき、トリックを学び、トラブルに行います
#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。 } }