樂視2017暑期實習生筆試題(二)

2022-08-28 01:36:17 字數 3254 閱讀 8954

第二題:

傳送門[程式設計題] 困獸之鬥

經過深思熟慮之後,小賤君打算去m國闖一闖,那是乙個古老的東方國度,傳說有很多高階魔法師,他想成為一名偉大的魔法師,將來征服星辰大海。

經過千辛萬苦,小賤君終於來到了m國,不幸的是剛進城門小賤君就被m國的守城士兵困在了一種叫做「困獸之鬥」的陣法之中。

士兵對小賤君說:「看到漂浮在你身邊的寶石了嗎?彩虹連線的兩顆寶石可以任意交換位置,你需要通過一系列交換後使得寶石組成的字串的字典序最小。若不能破陣,那還是請回吧!」

小賤君觀察了一下周圍的寶石,只見每顆寶石上標有乙個小寫字母,而且有一些寶石上通過彩虹與其他寶石相連。

琢磨了半天,他終於搞懂了這個陣法的意思:

若寶石系列為:dcba

其中有兩道彩虹,分別是(0,1),(1,2),代表第乙個位置上的寶石可以和第二個位置上的寶石互換,第二個位置上的寶石可以和第三個位置上的寶石互換,最終可以得到字典序最小的寶石系列:bcda。

作為小賤君的死黨,你有什麼方法幫助他破陣嗎?

輸入描述:

輸入包含多組測試資料。

對於每組測試資料:

字串s --- 代表寶石序列

n --- 代表有n條彩虹

接下來n行,每行兩個數ai,bi --- 表示ai和bi由一條彩虹相連。

保證:1<=s的長度<=10000

1<=n<=10000

且輸入資料均合法。

輸出描述:

對於每組資料,輸出乙個字串

輸入例子:

dcba

20 1

1 2hellonowcoder

40 1

1 42 5

2 3

輸出例子:

bcda

ehllonowcoder

思路:並查集 + 排序

把能互相連通的字母,進行排序

1 #include2 #include3 #include4 #include5 #include6

7#define n 1000589

using

namespace

std;

1011

intn;

12char

s[n];

13int

f[n];

14char

ans[n];

15int

l;16

17 vectorv[n];

18 vectorpos[n];

1920

int find(int

x)23

24void merge(int a,int

b)31

32void

ini()

41int

a,b;

42for(i = 1;i <= n;i++)46}

4748

void

solve()

55for(i = 0;i < l;i++)

58for(i = 0;i < l;i++)63}

64 ans[l] = '\0'

;65}66

67int

main()

73return0;

74 }

第三題:

傳送門[程式設計題]絕域之門

經過多次強攻之後,赫柏帶領的軍團不僅沒能擊敗魯卡斯,反而被魯卡斯打得七零八落,赫柏終於體會到了高階天之驅逐者的強大實力。

不過,赫柏最終還是找到了魯卡斯的致命弱點,他發現魯卡斯喜歡收集上古卷軸,因為上古卷軸能夠讓魯卡斯獲得神秘之力。

盧卡斯決定使用上古卷軸將盧卡斯引誘到絕域之門,利用絕域之門的力量消滅盧卡斯。

赫柏注意到盧卡斯喜歡收集不同的卷軸,如果總是撿到相同的上古卷軸,它的興趣就會逐漸降低。

赫柏現在擁有n種不同的卷軸,每種卷軸有ai個。現在他要將這n個卷軸分散在魯卡斯領地到絕域之門的路上,每一種排列方式都有乙個吸引值charm,吸引值越高,魯卡斯被引誘到絕域之門的概率越高。

charm=sum of all d(i),其中d(i)=k-i,i為該排列中卷軸i的下標,k為位於i後面且和i是同一種卷軸的卷軸下標。

現在所有的卷軸以《卷軸名稱 數量》的格式給出,你需要輸出所有卷軸的排列順序,使得吸引值最大,如果有多種排列方式滿足條件,輸出按照名字排列字典序最小的乙個。

輸入描述:

多組測試資料,請處理到檔案結束。

對於每組測試資料:

第一行:乙個整數n,代表有n種卷軸。

第二行:n種卷軸的描述。

保證:0<=n<=50;

卷軸名稱為長度1~10的字母,每種卷軸的數量為1~800之間的乙個整數。

輸出描述:

輸出所有卷軸的乙個排列。

輸入例子:

3

thunder 1 wind 3 soil 2

輸出例子:

soil wind thunder wind soil wind

題解**:

每種字串的吸引值只與它第一次出現和最後一次出現的位置有關,所以我們可以先把所有字串的首尾出現位置確定,再把其餘的字串塞到中間就行了,安排字串位置時均按照字典序由小到大的順序。

1 #include2 #include3 #include4 #include5 #include6 #include7

8#define n 55910

using

namespace

std;

1112

struct

ppa[n];

1617

bool

cmp(pp a,pp b)

2021

intn;

22string

ans;

23string

l,r,mid;

2425

void

ini()31}

3233

void

solve()42}

43for(i = 0;i < n;i++)48}

49 ans = l + mid +r;

50if(ans.size() >= 1)53

}5455int

main()

61return0;

62 }

騰訊2017暑期實習生筆試題 有趣數字

這個題意思很簡單吧,給出很多數,找出 二元組 裡面差最小的和差最大的個數 兩個數的差事大的減去小的,也就是絕對值的意思 說實話,這個題的處理確實很難把握。我的解題思路是 先將這個陣列排序,然後就很容易計算出差最大的二元組的個數,接下來就是計算最小二元組的個數。我寫的 會剛開始的時候跳過對開始部分的兩...

2017騰訊校招暑期實習生筆試題3

小q今天在上廁所時想到了這個問題 有n個數,兩兩組成二元組,差最小的有多少對呢?差最大呢?輸入包含多組測試資料。小q今天在上廁所時想到了這個問題 有n個數,兩兩組成二元組,差最小的有多少對呢?差最大呢?輸入描述 輸入包含多組測試資料。對於每組測試資料 n 本組測試資料有n個數 a1,a2 an 需要...

騰訊2017暑期實習生筆試題解題答案彙總

給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數 輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。輸入例子 abcda goo...