hdu 1166排兵布陣單點修改+區間查詢的樹狀陣列的應用:
1 #include2using
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 #include2using
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 #include2using
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 ...