聯賽模擬測試33

2022-01-12 07:00:25 字數 1992 閱讀 1227

區間dp

g[i][j]表示從第i位到第j位中間有多少不重複出現的數字

f[i][j]表示合併i到j能獲得的收益之和

特隊兒在寫的時候

正序遍歷掛成零分

原來是沒有學習經驗

還是要注意遍歷方法

眾所周知,乙個合格的oier不僅要會數奧,物奧,生奧

甚至還要會一點點美術

考試的時候畫了好久

打表拿到了\(50pts\)

正解其實也還是找規律

但是考場上沒時間往下想了

加上最後\(t4\)沒寫出來

也沒時間回頭看\(t2\)

就鴿了在一圈上沒多擴充套件一層,點數+當前層數

暴力快加到n的時候

再一點一點往上加就行了

隨便寫了個特殊性質\(10pts\)

雖然還是打的暴力

但是對於這個題還是有話要說

畢竟下午改了兩節半課

其實思路不很難

考場上就在寫了

到現在才調出來

就是暴力列舉要匹配哪個串

然後暴力刪除

刪完之後再列舉再刪除

直到不能刪為止

如果全部刪完了

那就證明這個串可行

可以作為備用答案

如果沒刪完,不能直接證明不行

也可能是刪的順序不對

因此對於整個串

正著列舉刪除一遍存答案

倒著列舉刪除一遍存答案

比較最優(長度最短,字典序最小)

輸出即可

這樣能夠拿到\(50pts\)的好成績

那麼正確性還是不對的

如上所說

刪除的順序對當前串的判斷是有影響的

正著一遍倒著一遍相當於只統計了從第乙個開始刪除和最後乙個開始刪除的情況

當然還有可能是從中間開始刪除的

這一點的話

其實也可以處理

每次匹配的時候預處理出所有能刪除的地方

然後列舉每個地方進行刪除

這樣的話正確性是能夠保障的

但是時間效率**到\(o(2^n)\)

對於現在的資料有點得不償失

畢竟寫的挺累

粘個勞動成果

#include #include #include #include using namespace std;

inline int read()

const int ss = 700;

const unsigned long long base = 233;

unsigned long long ha1[ss], ha2[ss], power[ss];

char ch[ss], cpy[ss], b[ss], ass[ss];

inline bool check(register char *a, register char *b)

} if(!flag) break;

} if(n) return 0;

return 1;

}signed main()

}} memcpy(ch, cpy, sizeof cpy);

reverse(ch + 1, ch + 1 + n);

memcpy(cpy, ch, sizeof ch);

flag = 0;

for(register int len = 1; len <= n; len++)

}} reverse(ans2.begin(), ans2.end());

if(ans1.size() < ans2.size()) cout << ans1 << endl;

else if(ans2.size() < ans1.size()) cout << ans2 << endl;

else cout << min(ans1, ans2) << endl;

}}

算了寫到集錦裡面去吧

聯賽模擬測試33 題解

沙雕題,不會建議重修區間dp 較有趣的沙雕題 容易發現聚落一定聚在一起,外牆一定是六邊形 考慮沒新加一條邊對答案的影響 以當前囊括的最大正六邊形不斷向外擴充套件 通過小學的平移知識 建議用wps畫圖 可知每加一條邊,新增的房子為 r,r 1,r 1,r 1,r 1,r 2 所以直接找到當前囊括的最大...

聯賽模擬測試34

考場打表 rand 正解可以根據乙個倍數往上翻 如果乙個數b是a的n倍,那麼b可以由a貼上n次得到 開乙個佇列按照每個因數倍增幾次取最小即可 藍書原題 csp考試之前還看來著 然後考場假了 打了暴力滾粗 下來之後一點就透了 等比數列求和 對於唯一一組hack資料 是mod完階乘出0了 特判一次直接往...

聯賽模擬測試32

a.迴圈依賴 思路對了 dfs 判環打掛了沒啥好說的 下午來了 tarjan 一遍碼過 但還是學習了一下凱爹的 dfs 可能魔改過了一些地方?總之學廢了,注意判自環 b.a開始迴圈依賴 20pts 暴力隨便打 考場上本來想按照值域預處理一下 看到 10000 就爪巴了 至於 a i 1 的情況只想出...