思路 : 因為是中文題,題意就不過多描述了。食人魚的活動週期分別是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 滿足當...