幾道樹狀陣列的模板題

2022-05-20 12:26:08 字數 4021 閱讀 5518

hdu 1166排兵布陣單點修改+區間查詢的樹狀陣列的應用:

1 #include2

using

namespace

std;

3 typedef unsigned int

ui;4 typedef long

long

ll;5 typedef unsigned long

long

ull;

6#define pf printf

7#define mem(a,b) memset(a,b,sizeof(a))

8#define prime1 1e9+7

9#define prime2 1e9+9

10#define pi 3.14159265

11#define scand(x) scanf("%llf",&x)

12#define f(i,a,b) for(int i=a;i<=b;i++)

13#define scan(a) scanf("%d",&a)

14#define dbg(args) cout<<#args<<":"<15

#define pb(i) push_back(i)

16#define ppb(x) pop_back(x)

17#define inf 0x3f3f3f3f

18#define maxn 50005

19int

n,m,t;

20int

c[maxn],a[maxn];

21char s[10

];22

int lowbit(int

x)23

26int query1(int

x)27

33return

ans;

34}

35int query(int l,int

r)36

39int modify(int x,int

c)4045}

46int

main()

4763

intx,y;

64while(scanf("%s"

,s))

6572

if(s[0]=='a'

)7376if(s[0]=='s'

)7780}

81}82 }

hdu1556單點查詢與區間修改的應用:

1 #include2

using

namespace

std;

3 typedef unsigned int

ui;4 typedef long

long

ll;5 typedef unsigned long

long

ull;

6#define pf printf

7#define mem(a,b) memset(a,b,sizeof(a))

8#define prime1 1e9+7

9#define prime2 1e9+9

10#define pi 3.14159265

11#define scand(x) scanf("%llf",&x)

12#define f(i,a,b) for(int i=a;i<=b;i++)

13#define scan(a) scanf("%d",&a)

14#define dbg(args) cout<<#args<<":"<15

#define pb(i) push_back(i)

16#define ppb(x) pop_back(x)

17#define inf 0x3f3f3f3f

18#define maxn 100005

19int

n,m,t;

20int

c[maxn],a[maxn];

21int lowbit(int

x)22

25void update1(int x,int

c)2631}

32void update(int l,int

r)33

37int query(int

x)38

44return

res;45}

46int

main()

4761 f(i,1

,n)62

66 pf("\n"

);67}68

69 }

樹狀陣列中c[i]覆蓋從i位置向前的lowbit(i)個位置,所以當用樹狀陣列初始化初值為k的數列時,c[i]=k*lowbit(i);如果是在二維中初始化時c[i][j]=k*lowbit(i)*lowbit(j);

做的時候無限wa,注意初始陣列的時候一定注意邊界,它的輸入是0-1000,所以+1後1-1001區間的數都是要變成1的。

**如下:

1 #include2

using

namespace

std;

3 typedef unsigned int

ui;4 typedef long

long

ll;5 typedef unsigned long

long

ull;

6#define pf printf

7#define mem(a,b) memset(a,b,sizeof(a))

8#define prime1 1e9+7

9#define prime2 1e9+9

10#define pi 3.14159265

11#define scand(x) scanf("%llf",&x)

12#define f(i,a,b) for(int i=a;i<=b;i++)

13#define scan(a) scanf("%d",&a)

14#define dbg(args) cout<<#args<<":"<15

#define pb(i) push_back(i)

16#define ppb(x) pop_back(x)

17#define inf 0x3f3f3f3f

18#define maxn 1005

19int

n,m,t;

20int

c[maxn][maxn];

21int lowbit(int

x)22

2526

void update(int x,int y,int

c)2734}

35}36int query(int x,int

y)37

47 x-=lowbit(x);48}

49return

ans;50}

51int query2(int l1,int r1,int l2,int

r2)52

55char s[3

];56

void

aaa()

5765 pf("\n"

);66

}67 pf("

##################\n

"); 68}

69int

main()

7083

scan(n);

84int

xa,xb,ya,yb,n1;

85 pf("

case %d:\n

",kk);

86while(n--)

8799

else

if(s[0]=='a'

)100

104else

if(s[0]=='d'

)105

112else

if(s[0]=='m'

)113

121//

aaa();

122}

123}

124 }

幾道KMP模板題

記錄下kmp學習過程 注意 這裡的模板s1是文字串s2是匹配串 模式串 hdu1711 number sequence鏈結 最小匹配位置 include include include include using namespace std typedef long long ll const ll...

樹狀陣列模板

假設有一列數 1 i n 支援如下兩種操作 1.將ai的值加d。2.輸出ai ai 1 aj 1 i j n 樹狀陣列是一種特殊的資料結構,這種資料結構的時空複雜度和線段樹相似,但是它的係數要小得多 hdu 1166 敵兵布陣 題目 a國在海岸線沿直線布置了n個工兵營地。由於採取了某種先進的監測手段...

樹狀陣列模板

已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數數加上x 2.求出某乙個數的和 這種水水的樹狀陣列,博主就不做介紹,直接上 希望大家可以多多捧場!include include include include include include include include include ...