BZOJ 1898 Swamp 沼澤鱷魚

2021-08-04 00:20:53 字數 973 閱讀 8530

思路 : 因為是中文題,題意就不過多描述了。食人魚的活動週期分別是2、3或4,這樣可以考慮所有的食人魚的活動情況一定是最小以12為週期的,這樣我們就構造12個矩陣,a[ i ].m[ x ][ y ]每個矩陣表示在第 i 時刻,從第 x 個石墩到第 y 個石墩能不能走,這樣將這十二個矩陣相乘,得到第十三個矩陣a[0],對於 k/12 的部分,我們可以直接求 a[0]^(k/12) 得到,對於 k%12 的部分暴力乘起來就好。

code:

#include

#include

#include

#include

using namespace std;

#define mod 10000

int n,m,s,t,k,q;

intpos[5];

struct node

a[13],b,ans,td;

node mul(node a,node b)

return c;

}node ksm(node aa,int k)

return ans;

}int main()

}a[0] = td;

scanf("%d",&q);

while(q--)

for(int j=0;jpos[j] = pos[j+1];

for(int i=1;i<=12;i++)

}for(int i=1;i<=12;i++)

a[0] = mul(a[0],a[i]);

a[0] = ksm(a[0],k/12);

k %=

12; b.m[0][s] = 1;

b = mul(b,a[0]);

for(int i=1;i<=k;i++)

b = mul(b,a[i]);

printf("%d\n",b.m[0][t]);

return

0;}

BZOJ1052 BZOJ3760 覆蓋問題

原題位址 先說自己的逗比方法 二分答案,把所有點用乙個最小的矩形 框 起來,易證矩形的其中乙個端點是最優解中正方形的乙個端點,然後列舉四個端點後遞迴處理,差不多了 然後 olz黃學長的o n 做法 ac code include include include using namespace std...

動態點分治 bzoj 3730,bzoj 1095

總結一下動態點分治的模板。對於乙個樹,把它點分的同時記錄每個點的所有父親 logn個 並記錄點距其父親的距離。具體實現就是dfs的時候fa x dep x u,dis x dep x d bzoj1095 您需要寫乙個程式支援反轉點的顏色,求距離最遠的黑色點對的距離。解析 在每個點u存乙個堆st記錄...

福慧雙修 探險 BZOJ4398 BZOJ2407

分析 雙倍經驗 資料範圍不同 我們考慮,我們必定是從1走一條邊到節點i,之後從i到j跑最短路,之後再從j到1走另一條邊的情況下,不會重複,並且是答案。那麼我們考慮預處理出pre i 表示從1走到i滿足最短路的並且經過pre i pre i 為路徑第二個節點。那麼,針對每乙個邊,x,y,z,v 滿足當...