1323 刪數問題(加強版)

2022-08-01 07:27:12 字數 1252 閱讀 9739

難度:普及+/提高

題目型別:貪心/模擬

提交次數:3

涉及知識:貪心/bfs/字串/優先佇列

描述:乙個集合有如下元素:1是集合元素;若p是集合的元素,則2 * p +1,4*p+5也是集合的元素,

取出此集合中最小的k個元素,按從小到大的順序組合成乙個多位數,現要求從中刪除m個數字上的數字,

使得剩下的數字最大,程式設計輸出刪除前和刪除後的多位數字。

注:不存在所有數被刪除的情況

**:

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int a[30010];7

char c[10000];8

strings;9

priority_queue, greater> q;10

intmain()

22for(i = 0; i < k; i++)

27 cout28//

——————————————————————————————————————

29int n = 0

;30 i = 0;31

while(n1)38

}39for(i = 0; i < m-n; i++)

40 s.erase(s.length()-1, 1

);41

for(i = 0; i < s.length(); i++)46}

47if(i==s.length())cout<<'0'

;48return0;

49 }

備註:

過了這道題還是蠻有成就感的。一共分3個重要步驟,一是bfs拓展,二是陣列轉為字串,三是貪心解決刪數問題。看了題解才想到bfs和優先佇列,不過想想也挺顯然,跟奶牛那道題差不多。第二個步驟費了些周折,已標出,機智地用了sprintf,一定要加標頭檔案!!!就因為這個,明明我編譯可以過,提交就會編譯報錯!另外我發現srting可以直接和char陣列或者單個字元相加,這就很方便了(不過老師不建議這麼用,那就先把char陣列轉成string就好了,導一下的事)。第三部分跟刪數問題一樣,只不過變成了最大值,所以是找公升序。

裝載問題加強版

1328.裝載問題加強版 時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述現在碼頭有一批重量不同的貨物,有三艘裝載量不同的貨船,試求出能否一次將貨物裝完 輸入第一行給出貨物的數量n n 10 第二行有n個整數,分別表示這n個貨物的重量 第三行有3個整數,分別表示三艘貨船的載重...

方格取數加強版

給出乙個n n的矩陣,每一格有乙個非負整數aij,aij 1000 現在從 1,1 出發,可以往右或者往下走,最後到達 n,n 每達到一格,把該格仔的數取出來,該格仔的數就變成0,這樣一共走k次,現在要求k次所達到的方格的數的和最大 輸入格式 第一行兩個數n,k 1 n 50,0 k 10 接下來n...

題解 烷基計數 加強版 加強版

題目傳送門 問樹大小為 n 每個節點的兒子個數 le 3 的本質不同樹的個數。不考慮兒子之間的順序。n le10 5 因為這個題跟多項式關係比較大,所以就沒有放到 polya 定理學習筆記裡面。我們可以看出,假設我們設 f x 表示答案的普通型生成函式,那麼,我們就有 f x x frac 1 個人...