デイリー質問day15パンチ
分析
フェンウィックツリー
それが偶数である場合、各文字の変更に回数を維持するために、フェンウィックツリーは1が奇数で、0であります
書式#include <iostreamの> の#include <cstdioを> する#include <CStringの> の#include <アルゴリズム> に#define int型はlong long の#define MAXN 100000 + 10 std名前空間を使用しました。 インラインint型リード() { int型のx = 0。 BOOL F = 1。 チャーC = GETCHAR()。 用(;!isdigit(C)と、c = getchar関数())の場合(C == ' - ')は、f = 0; 用(; isdigit(C); C = GETCHAR())x =(x << 3)+(X << 1)+ C-'0' 。 IF(f)に戻り、X。 0-Xを返します。 } インラインボイドライト(int型X) { IF(X <0){のputchar( ' - ')であり、x = -x;} もし(X> 9)書き込み(X / 10)。 putchar(Xの10%+ '0')。 }は N INT、M。 int型のツリー[MAXN]。 NUM&-numを返します。 } インラインボイドビルド(INT S、INT NUM) { ための式(I = Sをint型、I + = lowbit(I); iが<= N)木[I] + = NUM。 } インラインINTは(INT s)を尋ねる { INT ANS = 0。 (I = sのint型; I> = 1; I- = lowbit(I))のためのANS + =ツリー[I]。 ANSを返します。 } )(主符号付き { read()はN =であり; m =読み取ります()。 以下のために(iは++; I <= M I = 1 INT) { ()=のintを読み取ります。 / * ため(; iがn = <; I = 1 int型私は++) { int型ティム=(i)を尋ねます。 IF(ティム== 0)書き込み(0)。 それ以外の場合(ティム%2 == 0)の書き込み(0); それ以外の場合(ティム%2 == 1)、ライト(1); 裁判所未満<<」「; } COUT << ENDL。 * / (== 1)であれば { (読み取らINT 1 =)、R =リード()。 (L 1)を構築します。 (R + 1、-1)を構築します。 } IF(== 2) { int型のx =リード()。 INTティム=(x)を尋ねます。 IF(ティム%2 == 0)書き込み(0)。 それ以外の場合(ティム%2 == 1)、ライト(1); printf( "\ n")を。 } } 0を返します。 }
論文をギャングしてください(とにかく、私はそれが論文を何を意味するのか知りません)