ZOJ4029 浙江省賽

2021-08-19 15:09:49 字數 784 閱讀 1203

之前想到了先列舉logp(a[i])=k,然後找到對應區間,之後發現向下取整並無法直接用字首和去維護,於是就繼續二分k-2k,2k-3k這種區間,然而顯然是過不了的,tlegg,不過最後掛機也只能寫寫暴力了。

結果發現k只有31,所以sum[k][i]來預處理a[i]/k向下取整,的字首和,30*n的複雜度,那麼列舉出k後二分找到對應區間就能直接求出這段區間的value之和了。

注意,減法部分要+mod)%mod,wa了好久。。。這種小細節又錯了,菜哭.jpg

#include#include#include#define maxl 500010

#define mod 1000000000

#define eps 1e-8

using namespace std;

int n,m;

int a[maxl];

long long sum[32][maxl];

long long ans;

inline void prework() }

inline void mainwork()

r=upper_bound(a+l,a+n+1,x)-a;

curans=(curans+(sum[mi][r-1]-sum[mi][l-1]+mod)%mod)%mod;

l=r;

} ans=(cas*curans+ans)%mod; }}

inline void print()

int main()

return 0;

}

2015浙江省賽

zoj 3872 beauty of array 對於每個數,計算這個數被累加的次數。找到這個數左邊這個數出現的地方,在這之間的所有數的數量 這個數後面的數的數量,即為這個數被計算的次數 include include typedef long long ll int a 1000005 post ...

2019浙江省賽

題意 n個點的二叉樹 無向邊 的單向邊,構造一條到達且只到達每個點一次的路徑。題解 兩次dfs。第一次dfs為向i 1優先,2i次之。然而,發現某些點有兩條出路,這是由於該點在最底層 有些點沒有達到,這是因為這些點在最後一層或倒數第二層的右下角 第二次dfs時先判斷該點的右子節點是否達到過,如果沒到...

浙江省賽 A B L M 題解

我們教練說5題省賽拿牌有希望,然後acm校隊乙個大佬說至少要到6 7題才能拿銅。t t 我a了四題,我隊友a了五題,他把j題a了,我沒在機房打比賽,所以我們隊就不小心分成倆號交了,我j題沒看懂,後來就沒再寫了。相當於我們隊還是a了五道題,我隊友可是大佬 賊強 哈哈哈 j題抽空補上,那就放一下我ac的...