題目描述
bf的生日快到了,這一次,小東決定為bf送乙份特別的生日禮物為其慶生。作為高智商中的佼佼者,bf在國外求學,因此小東無法與之一起慶生。小東計畫送乙個生日卡片,並通過特別的包裝讓bf永遠難忘。
她決定把卡片套裝在一系列的信封a = 中。小東已經從商店中購買了很多的信封,她希望能夠用手頭中盡可能多的信封包裝卡片。為防止卡片或信封被損壞,只有長寬較小的信封能夠裝入大些的信封,同尺寸的信封不能套裝,卡片和信封都不能摺疊。
小東計算了郵寄的時間,發現她的時間已經不夠了,為此找你幫忙包裝,你能幫她嗎?
輸入 輸入有若干組,每組的第一行包含三個整數n, w, h,1<=n<=5000, 1<=w, h<=10^6,分別表示小東手頭的信封數量和卡片的大小。緊隨其後的n行中,每行有兩個整數wi和hi,為第i個信封的大小,1<=wi, hi<=10^6。
樣例輸入
2 1 1
2 2
2 2
3 3 3
5 4
12 11
9 8輸出
對每組測試資料,結果第一行中輸出最多能夠使用的信封數量,結果第二行中按使用順序輸出信封的編號。由於小東有潔癖,她對排在前面的信封比較有好感,若有多個信封可用,她喜歡用最先拿到的信封。另外別忘了,小東要求把卡片裝入能夠裝的最小信封中。
如果卡片無法裝入任何信封中,則在單獨的行中輸出0。
樣例輸出
1 1
3 1 3 2
解題思路:我們首先定義乙個結構體,存放信封的長,寬,及其索引位置,然後把不能裝卡片的信封去除掉(長寬較小的), 然後根據長或寬進行乙個排序,這樣就可以轉化成乙個最長遞增子串行問題來求解了,2層迴圈動態規劃就很容易求解了。
#include
#include
#include
using
namespace
std;
struct node
};bool cmp(node node1, node node2)
int main()
sort(vec.begin(), vec.end(), cmp);
n = vec.size();
if (n == 0)
cout
<< 0
<< endl;
else}}
}int res = 0, lastindex = -1;
for (i = 0; i < n; i++)
}cout
<< res << endl;
while (lastindex != -1)
reverse(b.begin(), b.end());
for (i = 0; i < b.size() - 1; i++)
cout
<< b[i] << " ";
cout
<< b[i] << endl;}}
return
0;}
生日禮物(京東2016實習生真題)
include include include include include include include include include include include include include include include include using namespace std ty...
實習生筆試
這幾天參加過幾場筆試。讓我對筆試有了新的認識。無論是前端,還是後端,最開始的筆試都只是乙個簡單的測試,測試你的邏輯思維能力,演算法能力。單項選擇題基本上是一些計算機的基礎題目,包括網路協議 http tcp ip 記憶體 暫存器。程式的設計。而程式設計題目是一些簡單的演算法題目,不會太難,但是反映的...
騰訊 2016屆實習生招聘筆試
乙個商場進行一場 活動,其中有兩個獎項,第乙個獎項a抽中的概率是1 6,第二個獎項b抽中的概率是5 6 用c語言編碼實現這個 程式。題目通過乙個xml文件給出。生成乙個隨機數 隨機數對6取餘,得到的餘數一定是0 1 2 3 4 5共六個數 將這六個數分成兩份 a和b 其中乙份只有0這乙個項,其餘乙份...