貪心題 萌萌噠的GG

2021-06-30 16:16:33 字數 1329 閱讀 8606

萌萌噠的gg

時間限制: 10 sec  

記憶體限制: 128 mb

11月15號是gg的破蛋日,這一天萌萌的gg很早就起床,小(zi)小(xi)打扮了一下,就去參加傳說中的acm-icpc亞洲賽了。 這一去讓原本萌萌噠的gg變得更加萌 了,在那**的北京賽區中gg**的萌萌噠連回家的路都忘記了。於是萌萌的gg便向英勇帥氣的dx問起路來,但是dx不想讓gg這麼容易就能回家,於是他出了一道acm題,說只要gg能夠做出來,就帶他回家。 嗚嗚~~~~(>_<)~~~~ ,這可難倒gg,於是gg哭著向聰明的你請教,希望你能做出來,不然gg就回不了家了。。。 題目是這樣紫滴:

資料有t組,給你兩個值s,k ( 1 <=t <= 10000,2 <= strlen(s) <= 1000, 0 <= k < strlen(s)); s表示乙個字串(只包含數字,沒有前導0),k表示在這個s中刪除k個數,使最後得到數(沒有前導0)最小。

對於每一組資料輸出「case #x: y」,x表示第幾組,y表示刪除後得到的最小的數,注意雙引號不要輸出。

291623 21063 1

case #1: 123case #2: 63

第一組資料刪除9和6得到數最小; 第二組刪除1,比刪除其他數,得到的值小;

廣東工業大學acm集訓隊新手選拔賽

分析:1、明天就要藍橋杯比賽了,今天就猛刷題。讀完這道題後,看見輸入數字位數會達到1000位,就會想到陣列處理,然後會想到不是常規做法,就尋找其中的計算方式。

2、好久沒有做過貪心題了,這是一道貪心題。當我們拿到乙個數後,輸出最小,肯定是從最高開始判斷,刪除後位數肯定小於等於strlen(s)-k,所以,從最高位開始遍歷,尋找相對於下一位大的數字,然後刪除。如91623,9比1大,所以刪除9,然後遍歷,1比6小,不刪除,繼續遍歷,接著6比2大,所以刪除6。到此,已經刪除2位數字了,結束遍歷。用這種方法解決,複雜度是相當低的,10以內就10個數,必刪除乙個。若是個遞增數列,就刪除後面數字唄。

3、程式需要處理一下細節,我為了ac它,就沒把程式簡化了。首先要考慮到當一樣大的時候,還要回去刪除數字,如9996623,刪除2個數字吧,比到9比6時,刪除9,然後需要判斷前面是否有9。另外就是輸出時,注意沒有前導0.

language :c++

code:

#include #include using namespace std;

int main()

cnt--;

m++; //記錄刪除多少數字後,輸出時的起點位置

ans++;

//cout}

}bool flag=true;

bool fla=true;

count++;

cout<<"case #"<

萌萌噠的第四題

1099 萌萌噠的第四題 time limit 2s memory limit 128mbyte submissions 427solved 260 description 給乙個數x,定義乙個函式f x 的結果是x的各位數字的平方和,若經過無數次遞迴操作之後若結果為1,也就是f f f f x 1...

萌萌噠的第四題

description 給乙個數x,定義乙個函式f x 的結果是x的各位數字的平方和,若經過無數次遞迴操作之後若結果為1,也就是f f f f x 1,那麼這個數被認為是乙個特別的數。給出乙個數x請問這個數是否特別。input 包含多組測試資料 20 每組資料一行乙個整數x 1 x 10000000...

萌萌噠的第一題

1096 萌萌噠的第一題 time limit 2s memory limit 128mbyte submissions 1308solved 233 description 有一批n個資料需要通過rpc呼叫獲取資訊,為了加快速度,我們想要把n個資料平均分成若干份,每份的資料量為x x可以整除n 假...