傳送門biu~
可以建乙個虛擬節點表示自爆,虛擬節點不連出邊。計算矩陣t次冪後1到每個節點的方案數和。
#include
using
namespace
std;
const
int mod=2017;
int n,m,t,ans;
struct matrix
}base;
matrix ksm(matrix p,int n)
return re;
}int main()
scanf("%d",&t);
matrix an=ksm(base,t);
for(int i=1;i<=n+1;++i)
(ans+=an.a[1][i])%=mod;
printf("%d\n",ans%mod);
return
0;}
也可以不建虛擬節點,直接維護0~t次冪的字首和。
#include
using
namespace
std;
const
int mod=2017;
int n,m,t,ans;
struct matrix
matrix operator+(const matrix&r)const
}base;
matrix ksm(matrix p,int n)
return re;
}int main()
scanf("%d",&t);
matrix an=ksm(base,t);
for(int i=1;i<=n;++i)
(ans+=an.a[1][i])%=mod;
printf("%d\n",(ans+1)%mod);
return
0;}
bzoj 1612 floyd傳遞閉包
題意 n個牛,給出m場比賽的比賽結果 前面的贏後面的 能力強的總是贏能力弱的,求最多有幾頭牛能確定能力排名 第一眼看題再看資料範圍,第一反應不是網路流就是建有向邊搞圖.當乙個牛的能力可以確定時,當且僅當能贏它的牛加上輸給它的牛有n 1頭 可以發現,贏和輸的資訊是可以傳遞的 即當i能贏k且k能贏j時,...
BZOJ1202 狡猾的商人 Floyd)
看了一眼題意,發現floyd可以做,其實就是判斷是否滿足邊相加的關係成立。需要注意的是,有可能有這樣的資料,3 2 1 2 10 3 3 15 這個也是true的,也就是說,當邊不滿足判斷條件的時候,可以認為補充上一些邊。或者說,只有發現兩邊相加不等於第三邊的時候,才算false。這道題也可以用帶權...
BZOJ 1027 合金 計算幾何,Floyd判環
description 某公司加工一種由鐵 鋁 錫組成的合金。他們的工作很簡單。首先進口一些鐵鋁錫合金原材料,不同種類的 原材料中鐵鋁錫的比重不同。然後,將每種原材料取出一定量,經過融解 混合,得到新的合金。新的合金的鐵鋁 錫比重為使用者所需要的比重。現在,使用者給出了n種他們需要的合金,以及每種合...