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,反之第...