P5337 TJOI2019 甲苯先生的字串

2022-05-27 19:24:15 字數 845 閱讀 9763

顯而易見有乙個記錄末尾字母的 \(o(n)\) 遞推。

顯而易見可以用矩陣快速冪優化,不妨用乙個 \(1\times 26\) 的矩陣維護當前dp 值,初始化為:

\[\begin

1&1&1\cdots 1&1&1

\end\]

構造乙個 \(26\times 26\) 的轉移矩陣,如果 \(i\) 不能轉移到 \(j\) 那麼 \((j,i)=0\) 否則 \((j,i)=1\),這個根據矩陣乘法定義來。

然後就做完了,記得開long long,時間複雜度 \(o(\log n)\)。

code:

#includeusing namespace std;

typedef long long ll;

#define n 26

#define mod 1000000007

#define for(i,x,y)for(i=x;i<=(y);i++)

ll n;

string s1;

namespace subtask1

for(k,1,25)f[n&1][0]=(f[n&1][0]+f[n&1][k])%mod;

cout<>=1;

} for(i,0,25)ans=(ans+a.g[0][i])%mod;

cout<>n>>s1;

if(n>100000)subtask2::init();

else subtask1::init();

return 0;

}

TJOI2019 甲苯先生的線段樹

tjoi2019 甲苯先生的線段樹 首先原題 cf750g new year and binary tree paths 方法 滿二叉樹,鏈長為logn 考慮列舉lca為x,兩個鏈長h1,h2,發現x是唯一確定的!找到這個x,s減去都走左兒子的貢獻,再調整出右兒子 2 n 1 2 n,變成每一位的0...

TJOI2019 平衡樹 甲苯先生的滾榜

描述 甲苯先生在製作乙個online judge,他發現做比賽的人們很關心自己的排名 顯而易見 在acm賽制的比賽中,如果通過題目數量不相等,則通過題目數量多的人排名更靠前,如果通過題目數量相等,則罰時更少的人排名更高。甲苯先生想讓大家幫忙設計乙個程式,每次有人通過之後,就告訴他排名在他的前面有多少...

TJOI2019 甲苯先生的線段樹(數字DP)

tjoi2019難一點的就只有這道d2t3了,前面五道我共計花了三個小時,這一道花了將近兩個小時。五個小時ak兩天tjoi不是夢 但是說實話這道題並沒有什麼水平,沒考察什麼思維方面的東西,涉及到的性質也極其偏門,天津就靠這個來選拔省隊?怕不是反向選拔,反正天津今年也一塊金牌也沒有,這個鍋省選和省選出...