2020牛客國慶集訓派對day4部分題解

2022-07-22 17:06:18 字數 1233 閱讀 5172

j. jokewithpermutation

題目大意:

將字串還原成全排列。

思路:注意到資料範圍排列總數\(n\)不超過\(50\),考慮直接暴力\(dfs\)。

注意記錄數字的\(vis\)陣列需要開的大小,如果排列總數\(n\)恰為\(50\),意味著將會有\(9+2×41=91\)位數字,有可能在選取的過程中超過\(n=50\)的範圍,所以陣列需要開到\(100\)以上。

code:

#include using namespace std;

const int n = 104;

string s;

bool vis[n];

vectortmp, ans;

int n;

bool getans;

void dfs(int x)

if (ok)

getans = 1;

return;

} for (int len = 1; len <= 2; len++)

} }}int main() else

s = " " + s;

dfs(1);

for (auto i : ans) cout << i << " ";

return 0;

}

c. emergency evacuation

題目大意:

將一群人移動到出口外,每人每次僅能移動一格且不能重疊,問該過程的最短時間。

思路:硬模擬的話情況比較複雜不好考慮,所以我們考慮逆向思維。

我們假設所有人都已經在出口,現在需要把所有人移動到各自的位置上,這樣做的目的是可以簡化考慮每個人重疊的情況。

乙個最優的策略是按每個人到各自位置上的距離進行排序,考慮每個人的等待時間逐漸增加,在模擬的過程中更新所需時間的最大值。

code:

#include using namespace std;

const int n = 500010;

struct human

} h[n];

int main()

sort(h + 1, h + 1 + p);

int wait = 1;

int ans = h[1].d;

for (int i = 2; i <= p; i++)

cout << ans << endl;

return 0;

}

2020牛客國慶集訓派對day5

題目ab cdef ghij ksolved 比賽時通過 賽後通過 比賽時嘗試了未通過 比賽時未嘗試 solved by sstee1xd.3 31 7 題意 問你在1 n 1 n1 n中有多少個數字在k kk進製與 k k k進製表示下結果相同。題解 轉換一下就是要求正負進製下只有奇數字有數字的數...

2020牛客國慶集訓派對day4 補題

2020牛客國慶集訓派對day4 b 題意 題意 求最長等差序列的長度。dp 攤派了我講不明白,參考下這兩篇部落格吧 捂臉 傳送門1 傳送門2 include include include include include include include using namespace std ty...

2020牛客國慶集訓派對day3(補題)

補題j flowers 題目鏈結 tot 為花的貢獻和 本題給出資料n,m,n為花卉種類,m為每束花應該有m種,check中的x為x束花,假設有x束花,則應該有xm朵花,在n種花中,check過程 如果a i x則說明花的數量大於花束的數量,這種花可以用在每一種,而且還多出來,tot中加上x,反之第...