藍橋杯VIP試題 演算法訓練 數字遊戲 C C

2021-10-03 15:09:33 字數 1025 閱讀 1291

資源限制

時間限制:1.0s 記憶體限制:256.0mb

問題描述

給定乙個1~n的排列a[i],每次將相鄰兩個數相加,得到新序列,再對新序列重複這樣的操作,顯然每次得到的序列都比上一次的序列長度少1,最終只剩乙個數字。

例如:3 1 2 4

4 3 6

7 916

現在如果知道n和最後得到的數字sum,請求出最初序列a[i],為1~n的乙個排列。若有多種答案,則輸出字典序最小的那乙個。資料保證有解。

輸入格式

第1行為兩個正整數n,sum

輸出格式

乙個1~n的乙個排列

樣例輸入

4 16

樣例輸出

3 1 2 4

資料規模和約定

0思路:本題最主要的還是用了乙個可以自動排序的函式,名為do{}while(next_permutation(a,a+n))(所需要引入的標頭檔案為algorithm),它會將陣列中所有的數從小到大排列好,然後再進行計算就好,而使用這個方法是看到題中有乙個多種答案輸出字典序最小的乙個,這個剛好可以按照字典序大小進行排序,有了排列只需要就加數,加到最後乙個等於題中所輸入的sum值即可,說到這裡差不多說完了,但是我感覺這題有個坑,就是題中說了資料確保有解,這不是讓解題者覺得一定會有解,只是解的多少,然後測試資料有乙個沒有解,什麼也不輸出,看了好久,直到測試了資料發現最小的可以達到兩千多才知道有解也需要判定,加了乙個有解則變數值發生改變的條件才正確,看來做題還是得考慮全部情況,才能保證不出差錯。

**如下:

#include

#include

using

namespace std;

main()

dowhile

(j>1)

j--;}

j=n;

if(b[0]

==sum)

}while

(next_permutation

(a,a+n));

if(k==2)

}}

藍橋杯VIP試題 演算法訓練 最大獲利

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 chakra是一位年輕有為的企業家,最近他在進軍餐飲行業。他在各地開拓市場,共買下了n個飯店。在初期的市場調研中,他將一天劃分為m個時間段,並且知道第i個飯店在第j個時間段內,會有aij位服務員當值和bij位客戶光臨。他還分析了不同...

藍橋杯VIP試題 演算法訓練 比賽安排

資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 設有有2 n n 6 個球隊進行單迴圈比賽,計畫在2 n 1天內完成,每個隊每天進行一場比賽。設計乙個比賽的安排,使在2 n 1天內每個隊都與不同的對手比賽。輸入格式 輸入檔案matchplan.in共一行,輸入n的數值。輸出格式 ...

藍橋杯VIP試題 演算法訓練 排列問題

資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 求乙個0 n 1的排列 即每個數只能出現一次 給出限制條件 一張n n的表,第i行第j列的1或0,表示為j 1這個數不能出現在i 1這個數後面,並保證第i行第i列為0 將這個排列看成乙個自然數,求從小到大排序第k個排列。資料規模和約...