首先考慮暴力:
#include
using
namespace std;
const
int n=
105;
int n,cnt,ans;
int a[n]
,f[n]
;struct numbernum[n]
;int
find
(int x)
inline
void
init()
ans++;}
void
dfs(
int x)
a[x]=0
;dfs
(x+1);
a[x]=1
;dfs
(x+1);
}int
main()
根據上面的暴力打出乙個表,然後找一波規律,發現表中數字可以用乙個二階差分來表示。(附上有加法,減法,乘法的過載高精度模板)#include
using
namespace std;
int n;
struct number
inline
friend number operator
+(number a,number b)
if(c.t[c.len+1]
) c.len++
;return c;
}inline
friend number operator
-(number a,number b)
//前提是保證a>=b
while
(!a.t[a.len]
&& a.len>
1) a.len--
;return a;
}inline
friend number operator
*(number a,number b)
while
(c.t[c.len+1]
) c.len++
;return c;
}}f[
105]
,a1[
105]
,a2[
105]
;int
main()
for(
register
int i=f[n]
.len; i>=1;
--i)
printf
("%d"
,f[n]
.t[i]);
return0;
}
還有乙個環形計數動規的方法,但是我今天想了一節課還是不是特別理解,留坑等填。dp** FJOI2007 bzoj1002 輪狀病毒
description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示 n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有...
BZOJ 1002 FJOI2007 輪狀病毒
1002 fjoi2007 輪狀病毒 time limit 1 sec memory limit 162 mb description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資...
BZOJ1002 FJOI2007 輪狀病毒
標籤 高精度,數學 description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示 n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一...