程式設計題解析 髮型糟糕的一天

2021-07-05 13:36:14 字數 692 閱讀 9717

題目描述

題目來自www.openjudge.cn,標題叫做「髮型糟糕的一天」,題目描述詳見

題目的總時間限制: 2000ms 單個測試點時間限制: 1000ms。

錯誤解法

採用以下結構的兩重迴圈的話,將發生超時現象。

for (i = 0; i < n; i++)

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

如果奶牛i可以看到奶牛j,則計數器加1;

解題思路

不去統計每一頭奶牛能看到前方多少頭奶牛;而是去統計一頭奶牛能被後方多少頭奶牛看見。所有能看見奶牛i的奶牛的高度必定形成乙個單調遞減序列,且高度大於奶牛i的高度。

我們用堆疊來儲存單調遞減序列。若奶牛i的高度為h[i],那麼把棧頂部所有高度小於等於h[i]的元素都彈出(因為按題意,這些奶牛是無法看到奶牛i的),餘下的元素個數就是能夠看到奶牛i的奶牛的數目。

**實現

#include 

#include

using

namespace

std;

int main()

cout

<< result << endl;

}

糟糕的一天 棧

n role presentation style position relative n n頭奶牛排成一列,後面的奶牛可以看見前面比它矮的,切沒有被更高奶牛擋住的牛。求所有奶牛一共可以看見多少頭奶牛?很明顯,這道題是乙個單調棧。啥?你問我單調棧是啥?不就是單調的棧嗎。將奶牛乙個乙個進棧,同時保證棧...

資料庫糟糕的一天

這幾天一直在運算元據庫,由於局方有乙個需求,10000客服新裝故障的明細統計,我們這邊是從客服接受資料,可是接受過來的資料具有很高的重複的性,我們必須對其進行去重處理,但是,新裝的去重欄位沒有乙個人能給乙個確切的說法,一會說這個字段,一會兒另乙個字段,依賴你做了幾天就是在這兒糾結這個事,本來本人對系...

學習程式設計的第一天

今天第一次使用devcpp,用這個軟體完成了一些簡單的程式設計,突然發現一扇嶄新的道路敞開在我的面前,原來以前玩的遊戲都是這樣被創造的啊!看著這些源 突然想到了當年玩魔獸爭霸的時候編輯rpg遊戲,我只會用地圖修改器創作遊戲,但是別人卻是用一長串看不懂的源 編寫,當時覺得那就像天書一樣複雜難懂,沒想到...