日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【NOIP2017模拟6.25】小W的动漫

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NOIP2017模拟6.25】小W的动漫 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

小W最近迷上了日本動漫,每天都有無數部動漫的更新等著他去看,所以他必須將所有的動漫排個順序,當然,雖然有無數部動漫,但除了1號動漫,每部動漫都有且僅有一部動漫是它的前傳(父親),也就是說,所有的動漫形成一個樹形結構。而動漫的順序必須滿足以下兩個限制:
1、一部動漫的所有后繼(子孫)都必須排在它的后面;
2、對于同一部動漫的續集(孩子),小W喜愛度高的須排在前面。
光排序小W還不爽,他想知道一共有多少種排序方案,并且輸出它mod 10007的答案。

分析

這個題目有兩個限制:
1、先父親后兒子;2、先大兒子后小兒子。
這個處理起來就很麻煩,
于是,我們可以轉化一下模型,
對于限制2,因為大兒子一定比小兒子先遍歷,那么我們可以將小兒子當做前一個比它大的兒子的兒子。
如樣例:
現在,限制就只剩下“先父親后兒子”,即求遍歷一棵樹,當父親被走過才可以走兒子的方案數。
顯然,這是一棵二叉樹。
\(f[x]\)表示,遍歷以x為根的子樹的方案數。
轉移:
設兩個兒子分別為i,j(只有一個兒子的話,f[x]就等于兒子的f值),以i為根的子樹大小為s1,j的為s2;
\[f[x]=f[i]*f[j]*C^{min(s1,s2)}_{s1+s2}\](C組合求的是插板問題)
其實就是當前有s1個點,按順序插入s2個點中。

#include <cmath> #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <queue> const int maxlongint=2147483647; const long long mo=10007; const int N=1005; using namespace std; long long son[N][2],size[N],f[N],jc[N*3],ny[N*3],n,m,T; long long mi(long long x,long long y) {long long sum=1;while(y) {if(y&1) sum=sum*x%mo;x=x*x%mo;y>>=1;}return sum; } long long C(long long mm,long long nn) {if(nn>mm) swap(nn,mm);return jc[mm]*ny[nn]%mo*ny[mm-nn]; } void dg(int x) {size[x]=1;int j=son[x][0],k=son[x][1];if(j) dg(j);if(k) dg(k);int s1=size[j],s2=size[k];size[x]+=s1+s2;if(j && k) f[x]=f[j]%mo*f[k]%mo*C(s1+s2,min(s1,s2))%mo;elseif(j) f[x]=f[j];else f[x]=1; } int main() {jc[0]=ny[0]=1;for(int i=1;i<=3000;i++){jc[i]=jc[i-1]*i%mo;ny[i]=mi(jc[i],mo-2);}scanf("%lld",&T);for(;T--;){memset(son,0,sizeof(son));memset(size,0,sizeof(size));memset(f,0,sizeof(f));f[0]=1;scanf("%lld",&n);for(int i=1;i<=n;i++){int last=i,x,k;scanf("%d",&k);for(int i=1;i<=k;i++){scanf("%d",&x);if(!son[last][0]) son[last][0]=x;else son[last][1]=x;last=x;}}dg(1);printf("%lld\n",f[1]);} }

轉載于:https://www.cnblogs.com/chen1352/p/9071421.html

總結

以上是生活随笔為你收集整理的【NOIP2017模拟6.25】小W的动漫的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。