牛客網上的ST階躍表

2022-06-27 05:42:13 字數 988 閱讀 3111

給你乙個長為n的序列a和乙個常數k

有m次詢問,每次查詢乙個區間[l,r]內所有數最少分成多少個連續段,使得每段的和都 <= k

如果這一次查詢無解,輸出"chtholly"

第一行三個數n,m,k

第二行n個數表示這個序列a

之後m行,每行給出兩個數l r表示一次詢問

輸出m行,每行乙個整數,表示答案
示例1

5 5 7

2 3 2 3 4

3 34 4

5 51 5

2 4

111

2

對於100%的資料,1 <= n , m <= 1000000 , 1 <= ai , k <= 1000000000

思路分析 : 利用st表,st[i][j] 表示以 i 為起點,跳躍 2^j 所到達的點

**示例:

#define ll long long

const ll maxn = 1e6+5;

const double pi = acos(-1.0);

const ll inf = 0x3f3f3f3f;

ll n, m, k;

ll st[maxn][25];

ll a[maxn];

ll sum[maxn], cnt[maxn];

ll l, r;

ll log[maxn];

void init()

} }

int main()

for(ll i = 1; i <= n; i++)

init();

//prllf("---- %d\n", st[2][0]);

for(ll i = 1; i <= m; i++)

}printf("%lld\n", ans+1);

}

}return 0;

}

牛客網上,華為迷宮問題

定義乙個二維陣列n m 其中2 n 10 2 m 10 如5 5陣列下所示 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。入口點為 0,0 既第一空格是可以走的路。input 乙個n m的二...

牛客網上的最後一位

題意 牛牛選擇了乙個正整數x,然後把它寫在黑板上。然後每一天他會擦掉當前數字的最後一位,直到他擦掉所有數字。在整個過程中,牛牛會把所有在黑板上出現過的數字記錄下來,然後求出他們的總和sum.例如x 509,在黑板上出現過的數字依次是509,50,5,他們的和就是564.牛牛現在給出乙個sum,牛牛想...

牛客(鄰接表)

本來是想要模擬節點的收縮過程,但是實在是太難做了。後來看了別人的 才想到,其實跟節點的分布沒有關係,只跟與一節點相連的點數有關係 設為x 一秒最多有x個人到達1。可以用並查集,但是我頭鐵就是要dfs,vector超時了,用鄰接表結構體少開了一倍又re了。include include include...