#590(本部3)ラウンドCodeForces

1361(+46)、瞳の
ランク:1912(リバイバル列車を開始しようとしています)

分析:フェンウィック木問題(あなたがたは書くことフェンウィックツリーを忘れてゲーム...)

コード:

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  のconst  int型 MAXN = 1E5 + 10 4  チャーS [MAXN]。
5  INT C [MAXN] [ 30 ]。
6  int型のlen;
7  
8  INT lowbit(INT X)
 9  {
 10      リターン X&( - X)。
11  }
 12の 
13  空隙INI()
 14  {
 15      のためにINT I = 1; 私は= LENを<; I ++ 16          のためのINT J = I; J> = I - lowbit(I)+ 1 ; j-- 17個の              C [i]は[S [J] - ' ' + 1 ] ++ ;
18 }
 19 20 空隙更新を(int型 POS、チャータール)
 21 {
 22 のためにint型 I = POSと、私は= LEN <; I + = lowbit(I))
 23     {
 24個の          C [i]は[S [POS] - [  + 1 ] -   
        25個の          C [i]は[タール- ' ' + 1 ] ++ ;
26     }
 27の      S [POS] = タール。
28 }
 29 int型の和(INT A、INT B)
 30 {
 31個のint RES [ 30 ]。
32      のmemset(RES、0はsizeof (RES))。
33 INT ANS = 0 34 のためには、int型 I = bを、I> = 1 ; I - = lowbit(I))
 35                            INT J = 1 ; J <= 26 J ++; 36の              RES [J] + = C [I] [J]。
37      のためにint型 iは=; I> = 1 ; I - = lowbit(I))
 38          のためのINT J = 1 ; J <= 26 ; J ++ 39の              RES [J] - =のC [i]は[J] ;
40      のためには、int型 i = 1 ; iは<= 26 ; I ++ 41          であれば(RES [i])とANS ++ 42     戻るANSを。
43  }
 44  
45  のint main()の
 46  {
 47      のint OPE。
48      CIN >>(S + 1 )。
49      LEN =のSTRLEN(S + 1 )。
50      INT N。cinを>> N;
51の     INI()。
52      一方(N-- 53      {
 54          のscanf(" %dの"、およびOPE)。
55          であれば(OPE == 1 56          {
 57              INTPOS; scanf関数(" %のD "、およびPOS)。
58              チャー X [ 10 ]。scanf関数(" %sの" 、X)。
59              更新(POS、X [ 0 ])。
60          }
 61          他の
62          {
 63              int型A、B。
64              のscanf(" %D%dの"、&​​、&B)。
65              COUT <<和( - 1、B)<< ENDL。
66          }
 67      }
 68 }

 

おすすめ

転載: www.cnblogs.com/liuwenhan/p/11622379.html