給你乙個長為n的序列a和乙個常數k
有m次詢問,每次查詢乙個區間[l,r]內所有數最少分成多少個連續段,使得每段的和都 <= k
如果這一次查詢無解,輸出"chtholly"
第一行三個數n,m,k第二行n個數表示這個序列a
之後m行,每行給出兩個數l r表示一次詢問
輸出m行,每行乙個整數,表示答案示例1
5 5 72 3 2 3 4
3 34 4
5 51 5
2 4
1112
對於100%的資料,1 <= n , m <= 1000000 , 1 <= ai , k <= 1000000000
思路分析 : 利用st表,st[i][j] 表示以 i 為起點,跳躍 2^j 所到達的點**示例:
#define ll long longconst 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...