2016京東實習生筆試之生日禮物

2021-08-08 08:16:47 字數 1493 閱讀 3735

題目描述

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這乙個項,其餘乙份...