牛客 華華開始學資訊學

2021-10-07 23:23:27 字數 1781 閱讀 5058

專題寫到自閉 寫寫牛客放鬆一下

題目思路

兩個基本的線段樹操作 單點修改和區間查詢

但是題目要求每次加值要給在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的,結果我讀入讀錯了。總而言之,不小心即釀成大錯。第一題水得很呢,不過深搜滿分真是神奇,明明...