難度不斷網:☆☆☆
斷網:☆☆☆☆
/*卡特蘭數取模 由於資料範圍小,直接做。
考試時斷網。忘記卡特蘭數公式,推錯了只有5分。
數學公式要記別每次都現用現搜!!!
*/#include
#include
#include
using
namespace
std;
int f[1007
];int
n,m,ans;
intmain()
/*模數較小是乙個坑點,直接做逆元可能爆掉(模數很小許多數沒有逆元)
答案是 2n!/(n!*(n+1))! 如果直接逆元,2n!預處理很可能成為零,但做了除法後答案可能不是零,就會出錯。
所以7的倍數要單獨考慮
這裡記錄了7的倍數的因子裡7的冪,然後分子分母就可以加加減減了。這個題用不到。
原來逆元還可以直接搞...
帶權並查集
維護鏈底,鏈頂,並查集找鏈底,並維護鏈的大小
合併時兩個鏈頂鏈底都要維護。別忘了鏈底size大小改為1。
區間dp,情況有些多需要討論
首先連續相同的顏色為了方便要合併,記錄每個塊的顏色,就可以dp了
dp[l][r]表示合併這段區間的最小步數,分幾種情況
這段區間是奇數(為了避免區間長度為2的情況)
1. color[l]==color[r] && tot[l]+tot[r]==2 --> dp[l][r] 可從 dp[l+1][r-1]+1 轉移過來。
2. color[l]==color[r] && tot[l]+tot[r]>2 --> dp[l][r] 可從 dp[l+1][r-1] 轉移過來。
3. color[l]==color[k]==color[r](k∈(l,r) && [l,k],[k,r] 為奇數) -->可從dp[l+1][k-1]+dp[k+1][r-1]轉移過來。
這段區間是偶數
普通的轉移 dp[l][r] =min(dp[l][r] , dp[l][k]+dp[k+1][r]);
*/#include
#include
#include
#define n 257
using
namespace
std;
intdp[n][n],col[n],a[n];
char
s[n];
intn,m,ans;
intmain()
else
}for(int len=0;len<=m;len++)
else
if(a[i]+a[j]<4
)
for(int k=i+2;k2
)
}} }}
}printf(
"%d\n
",dp[1
][m]);
return0;
}
國慶集訓Day1
題意 有 n 個數 a 1,a 2,a n 有m個數 b 1,b 2,b n 令 a a 1 times a 2 times times a n 令 b b 1 times b 2 times times b n 判斷 a 是否是 b 的倍數 輸入 n,m 輸出 yes no 做法 就是個一簡單的質...
寒假集訓系列DAY 1
problem a.string master master.c cpp pas 題目描述 所謂最長公共子串,比如串 a abcde 串 b jcdkl 則它們的最長公共子串為串 cd 即長 度最長的字串,且在兩個串中都作為連續子串出現過。給定兩個長度都為 n 的字串,對於字串大師的你來說,求它們的...
長沙集訓day1(總結)
今天是在長沙雅禮中學的第一天,上午到哪我嘞個哥,那麼多人。人與人座位之間間隔不超過10cm。真是無語 考試開始看到題目,直接粘.orz 看到知道題當沒弄懂題是啥意思 我還是太弱了 沒看見樣例解釋qaq,想了30分鐘才反應過來.想著用spfa直接求最短路就行,然後.然後.我tm忘了模板是啥了qaq.說...