#include
#include
#define maxn 100005
using
namespace
std;
int n,m;
long
long a[maxn],d[maxn][18];
inline
int read ()
return n;
}inline
void rmq_pre()
for(int j=1;(1
<1
<=n;i++)//i+(1<<(j-1))][j-1]);
} inline
int rmq(int l,int r)
int main()
return
0;}
#include
#include
#include
#include
#include
#include
#define ll long long
using namespace std;
struct cs
t[824290];
ll a[200005],v[824290];
ll n,m,x,y,z,sum,n;
void clean(ll x)
v[x]=0;
}void inc(ll x,ll y,ll z,ll num) }
void out(int ll,int ll,ll num)
}int main()
else
}}
-比線段樹短啊
1.單點修改,區間查詢(codevs1080 線段樹練習)
單點修改:
#define lowbit(x) x&(~x+1)
using
namespace
std;
int a[maxn],tree[maxn],n,q;
void add(int k,int x)
}
區間查詢:
int read(int k)
return sum;}/*
printf("%d\n",read(b) - read(a-1));//輸出
*/
2.區間修改,單點查詢(codevs1081 線段樹練習 2)
修改和查詢函式與上面是一樣的,不過預處理的時候有所不同,這裡只放主函式**
int main()
scanf("%d",&q);
int t;
for(int i = 1; i <= q; i ++)
if(t == 2)
}return
0;}
區間修改,區間查詢(codevs1082 線段樹練習 3)
#include
#include
#include
#include
#define maxn 200000+5
#define lowbit(x) x&(~x+1)
using
namespace
std;
typedef
long
long ll;
ll a[maxn],d1[maxn],d2[maxn],n,q;
void add(ll *d,ll k,ll x)
}ll read(ll *d,ll k)
return sum;
}int main()
scanf("%lld",&q);
int t;
for(int i = 1; i <= q; i ++)
if(t == 2)
}return
0;}
#include
#include
using
namespace
std;
int x,y,n,m,q;
int fa[20020];
int find (int x)
void unionn(int x,int y)
int main()
for(int i=1;i<=m;i++)
for(int i=1;i<=q;i++)
return
0;}
loj 6270 資料結構板子題
首先可以看出這是log 2log 2 log2 的三維數點問題 然後你就t了 考慮兩個區間a,b的情況有 1 a包含b 2 ab相交但不包含 3 b包含a 考慮第1種情況的區間長度大於b的長度 問題可以轉化成查詢b包含的區間中小於等於區間長度 小於k的數量 我們可以將詢問和區間按區間長度排序 查詢包...
資料結構 資料結構緒論
資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...
資料結構 資料結構演算法
分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...