專題寫到自閉 寫寫牛客放鬆一下
題目思路
兩個基本的線段樹操作 單點修改和區間查詢
但是題目要求每次加值要給在1到n上所有modd等於0都加上
如果直接列舉所有滿足條件的點然後再修改 當d很小的時候 複雜度會很大
直接這樣寫只能過百分八十
所以我們要分成兩類操作
我們以500為界限
大於500 直接列舉修改
小於500 我們記錄在乙個lazy陣列中
在之後查詢時直接用這個陣列計算值就好了
ac**
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define pi 3.1415926535898
#define ll long long
#define lson rt<<
1#define rson rt<<1|
1#define eps 1e-6
#define ms
(a,b)
memset
(a,b,
sizeof
(a))
#define legal
(a,b) a&b
#define print1 printf
("111\n"
)using namespace std;
const int maxn =
1e5+10;
const int inf =
0x1f1f1f1f
;const int mod =
2333
;ll t[maxn<<2]
,f[550];
void
pushup
(int rt)
void
build
(int rt,int l,int r)
int mid=
(l+r)
>>1;
build
(lson,l,mid)
;build
(rson,mid+
1,r);}
void
add(int p,int v,int rt,int l,int r)
int mid=
(l+r)
>>1;
if(p<=mid)
add(p,v,lson,l,mid)
;else
add(p,v,rson,mid+
1,r)
;pushup
(rt);}
ll query
(int l
,int r
,int l,int r,int rt)
int mid=
(l+r)
>>1;
ll res=0;
if(l<=mid)
res+=
query(l
,r,l,mid,lson);if
(r>mid)
res+=
query(l
,r,mid+
1,r,rson)
;return res;
}int main()
else
f[b]
+=c;}if
(a==2)
}}
牛客23054 華華開始學資訊學 樹狀陣列分塊
因為上次在月月面前丟人了,所以華華決定開始學資訊學。十分鐘後,他就開始學樹狀陣列了。這是一道樹狀陣列的入門題 給定乙個長度為n的序列a,所有元素初值為0。接下來有m次操作或詢問 操作 輸入格式 1 d k,將a d加上k。詢問 輸入格式 2 l r,詢問區間和,即 華華很快就學會了樹狀陣列並通過了這...
資訊學競賽
以資訊學,尤其是程式設計的相關知識為基礎的中 小學學科競賽。分為noi 全國青少年資訊學奧林匹克競賽 noip 全國青少年資訊學奧林匹克聯賽 分割槽聯賽 ioi 出國參加國際奧林匹克競賽 等等 推薦語言為 pascal lazarus 0.9.10或free pascal編譯器2.0.1版 c c ...
2016 8 17資訊學題解
這次考試翻車很嚴重啊,我從下面往上翻排名,我心裡正在竊喜,然後就懵逼地看到我翻車了,19名,90分,第一題本來可以80的,結果我把迴圈邊界寫錯了,第二題本來可以80的,結果我少判斷了個東西,第四題本來可以60的,結果我讀入讀錯了。總而言之,不小心即釀成大錯。第一題水得很呢,不過深搜滿分真是神奇,明明...