bzoj 1002 FJOI2007 輪狀病毒

2022-07-20 04:09:13 字數 1714 閱讀 8919

輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子

和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示

n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有16個不同的3輪狀病毒,如下圖所示

現給定n(n<=100),程式設計計算有多少個不同的n輪狀病毒

第一行有1個正整數n

計算出的不同的n輪狀病毒數輸出

3
16
none

暴力\(2^n\)

#include#define ll long long

ll in()

struct node

}e[110000];

int b[100000];

int n, m, ans;

int fa[1000010];

int findset(int x)

void getans(int num)

ans++;

}void dfs(int dep, int num)

b[num + 1] = dep;

dfs(dep + 1, num + 1);

dfs(dep + 1, num);

}int main()

打表
1, 5, 16, 45, 121, 320, 841, 2205, 5776, 15125, 39601, 103680, 271441
然後發現有很多完全平方數

發現都在奇數項位置

於是開方後得到

1, 4, 11, 29, 76,199, 521
通過下面的程式找到規律
#include#define ll long long

ll in()

int f = ;

bool judge(int i, int j, int v)

int main()

}return 0;

}

發現規律 \(f[i]=3*f[i-1]-f[i-2]\)

討論完奇數項,自然到了偶數項,發現都是5的倍數,除去5之後,居然跟奇數項的規律一毛一樣

還得寫高精qwq

code

#include#define ll long long

ll in()

struct node

} void jinwei()

friend node operator + (const node &a, const node &b)

return t.jinwei(), t;

} friend node operator - (const node &a, const node &b)

return t.jinwei(), t;

} friend node operator * (const node &a, const node &b)

return t.jinwei(), t;

} void print()

}a[111];

int main()

else

} return 0;

}

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