BZOJ 1002 FJOI2007 輪狀病毒

2021-09-29 18:40:51 字數 1356 閱讀 1048

首先考慮暴力:

#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輪狀基中刪去若干條邊,使得各原子之間有唯一...