解题报告:51nod 加农炮
生活随笔
收集整理的這篇文章主要介紹了
解题报告:51nod 加农炮
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2017-10-07?16:15:16
writer;pprp
題目來源:?Codility 基準時間限制:1?秒 空間限制:131072?KB 分值:?40?難度:4級算法題 一個長度為M的正整數(shù)數(shù)組A,表示從左向右的地形高度。測試一種加農(nóng)炮,炮彈平行于地面從左向右飛行,高度為H,如果某處地形的高度大于等于炮彈飛行的高度H(A[i] >= H),炮彈會被擋住并落在i - 1處,則A[i - 1] + 1。如果H <= A[0],則這個炮彈無效,如果H > 所有的A[i],這個炮彈也無效。現(xiàn)在給定N個整數(shù)的數(shù)組B代表炮彈高度,計算出最后地形的樣子。 例如:地形高度A = {1, 2, 0, 4, 3, 2, 1, 5, 7}, 炮彈高度B = {2, 8, 0, 7, 6, 5, 3, 4, 5, 6, 5},最終得到的地形高度為:{2, 2, 2, 4, 3, 3, 5, 6, 7}。 Input 第1行:2個數(shù)M,?N中間用空格分隔,分別為數(shù)組A和B的長度(1?<=?m,?n?<=?50000) 第2至M?+?1行:每行1個數(shù),表示對應(yīng)的地形高度(0?<=?A[i]?<=?1000000)。 第M?+?2至N?+?M?+?1行,每行1個數(shù),表示炮彈的高度(0?<=?B[i]?<=?1000000)。 Output 輸出共M行,每行一個數(shù),對應(yīng)最終的地形高度。 Input示例 9?11 1 2 0 4 3 2 1 5 7 2 8 0 7 6 5 3 4 5 6 5 Output示例 2 2 2 4 3 3 5 6 7可以暴力求解:直接去做
代碼如下: /* @theme:51nod 加農(nóng)炮 @writer:pprp @begin:16:00 @end:16:17 @declare:暴力求解 */ #include <iostream> #include <cstring> #include <algorithm> #include <cstdiO>using namespace std; int M, N; int h[1000000];int main() {freopen("in.txt","r",stdin);memset(h,0,sizeof(h));cin >> M >> N;int maxh = -100;for(int i = 0 ; i < M ; i++){cin >> h[i];if(maxh < h[i]){maxh = h[i];}}int cmp;for(int i = 0 ; i < N ; i++){cin >> cmp;if(cmp <= h[0] || cmp > maxh)continue;for(int j = 0 ; j < M ; j++){if(h[j] >= cmp){h[j-1]++;break;}}}for(int i = 0 ; i < M ; i++){cout << h[i] << endl;}return 0; }
預(yù)處理,用lower_bound做
/* @theme:51nod 加農(nóng)炮 @writer:pprp @begin:16:20 @end: @declare:預(yù)處理 */ #include <iostream> #include <cstring> #include <algorithm> #include <cstdiO>using namespace std; int h[100000+10]; int canno[100000+10]; int M, N;int main() {freopen("in.txt","r",stdin);cin >> M >> N;int maxh = -1000;for(int i = 0 ; i < M ; i++){cin >> h[i];maxh = max(maxh,h[i]);canno[i] = maxh;// 預(yù)處理 }int cmp;for(int i = 0 ; i < N ; i++){cin >> cmp;int j;if(cmp <= h[0] || cmp > maxh)continue;j = lower_bound(canno,canno+M,cmp)-canno;h[j-1]++;canno[j-1] = max(canno[j-1],h[j-1]);}for(int i = 0 ; i < M ; i++)cout << h[i] << endl;return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/pprp/p/7635135.html
總結(jié)
以上是生活随笔為你收集整理的解题报告:51nod 加农炮的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对抗极域电子教室#破解、解除
- 下一篇: vscode vetur 不想标签属性老