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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

UVA11174村民排队问题

發(fā)布時間:2025/6/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVA11174村民排队问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題意:
? ? ?有n個人要排隊,給你一些父子關(guān)系,要求兒子不能站在自己的父親前面,問有多少種排隊方式?


思路:
? ? ? 白書上的題目,首先我們可以把關(guān)系建成樹,這樣我們就有可能得到一個森林(或者是一課樹),然后我們再虛擬出來一個點0連接所有森林的根節(jié)點,這樣是為了保證是一棵樹,然后題目就變成了給你一棵樹,不改變關(guān)系,問這個樹有多少種方式,這個還是排列組合問題,對于每一個根節(jié)點,有這樣的性質(zhì)


root[i] = f[1]*f[2]*..f[k] ? * ?(s[i]-1)!/s[1]!*s[2]!*..s[k]!?
f[1]..f[k]表示的當前根節(jié)點連接的k個兒子為根節(jié)點的樹的排列個數(shù),s[i]表示的是以i為根節(jié)點的這棵樹的所有節(jié)點個數(shù),上面的式子可以理解成這樣
f[1]*f[2]*..f[k] 所有兒子為根節(jié)點的排列個數(shù)
(s[i] - 1)! 表示的是以i為根的這棵樹的所有節(jié)點數(shù)-1(不算跟所以-1)的排列方式
//s[1]!*s[2]!*..s[k]! ?相當于全排列去掉重復(fù)部分,因為每一棵樹已經(jīng)*f[]了,不能在*了,不能再*那就可以理解成重復(fù)部分了,所以...,然后把每一個公式都化簡,會發(fā)現(xiàn)分子剩1,分母剩s[i]了,(可以理解成分子的f[i]和分母的s[i]!約),這樣最后剩下的是
((n+1)-1)/s1*s2*..sn;
最后的公式是
Ans = n!/(s1*s2*s3*s4...*sn) si是以i為根節(jié)點的子樹的節(jié)點數(shù)
這樣就可以了,然后這樣會設(shè)計到一個問題,那就是大數(shù)相除取余的問題,我知道應(yīng)該有至少兩種方法解決這個問題,一個是逆元,另一個是a/b%c = a * pow(b ,c - 2) % c,這個不解釋了,可以自己去網(wǎng)上找學(xué)習(xí),哎!想起了亞洲賽那道排列組合題,當時在賽場上怎么也想不起來大數(shù)相除的轉(zhuǎn)換了,sb了!








#include<stdio.h>
#include<string.h>


#define MOD 1000000007
#define N_node 40000 + 10
#define N_edge 40000 + 10


typedef struct
{
? ?int to ,next;
}STAR;


STAR E[N_node];
long long sum[N_node];
long long jc[N_node];
int list[N_node] ,tot;
int du[N_node];


void add(int a ,int b)
{
? ?E[++tot].to = b;
? ?E[tot].next = list[a];
? ?list[a] = tot;
}


int DFS(int now)
{
? ?int s = 1;
? ?for(int k = list[now] ;k ;k = E[k].next)
? ?{
? ? ? s += DFS(E[k].to);
? ?}
? ?sum[now] = s;
? ?return s;
}


long long Pow(long long a ,long long b)
{
? ?long long c = 1;
? ?while(b)
? ?{
? ? ? if(b & 1) c *= a;
? ? ? b >>= 1;
? ? ? a *= a;
? ? ? a = a % MOD;
? ? ? c = c % MOD;
? ?}
? ?return c;
}


void DB()
{
? ?long long now = 1;
? ?for(long long i = 1 ;i <= 40000 ;i ++)
? ?{
? ? ? now = now * i % MOD;
? ? ? jc[i] = now;
? ?}
}
? ?


int main ()
{
? ?int n ,m ,i ,a ,b ,t;
? ?DB();
? ?scanf("%d" ,&t);
? ?while(t--)
? ?{
? ? ? scanf("%d %d" ,&n ,&m);
? ? ? memset(list ,0 ,sizeof(list)) ,tot = 1;
? ? ? memset(du ,0 ,sizeof(du));
? ? ? for(i = 1 ;i <= m ;i ++)
? ? ? {
? ? ? ? ?scanf("%d %d" ,&a ,&b);
? ? ? ? ?add(b ,a);
? ? ? ? ?du[a] ++;
? ? ? }
? ? ? for(i = 1 ;i <= n ;i ++)
? ? ? if(!du[i]) add(0 ,i);
? ? ? memset(sum ,0 ,sizeof(sum));
? ? ? DFS(0);
? ? ? long long Ans = jc[n];
? ? ? for(i = 1 ;i <= n ;i ++)
? ? ? {
? ? ? ? ? Ans = Ans * Pow(sum[i] ,MOD - 2) % MOD;
? ? ? }
? ? ? printf("%lld\n" ,Ans);
? ?}
? ?return 0;
}
? ? ??
? ? ??
? ? ??
? ?
? ? ??

















總結(jié)

以上是生活随笔為你收集整理的UVA11174村民排队问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品成人av | 日韩中文在线字幕 | 性欧美在线视频 | 日韩在线视频看看 | 蜜桃成熟时李丽珍在线观看 | 亚洲av永久纯肉无码精品动漫 | 亚洲激情在线观看视频 | 中文字幕制服诱惑 | 日韩极品少妇 | 日韩乱码在线观看 | 性猛交xxxx乱大交3 | 色碰视频 | 在线免费观看亚洲 | 免费国产在线观看 | 美女扒开腿男人爽桶 | 少女忠诚电影高清免费 | 亚洲国产成人va在线观看天堂 | 午夜中出 | 亚洲国产成人精品久久 | 一区二区三区欧美 | 国产小视频免费在线观看 | 中国精品久久 | 日本中文字幕网站 | 又黄又爽的免费视频 | 九色蝌蚪9l视频蝌蚪9l视频 | 激情五月婷婷色 | 日本特黄色片 | 日本福利视频一区 | 国产成人精品在线视频 | 韩日视频在线观看 | 天堂网中文在线观看 | 亚洲天堂成人网 | 天海翼视频在线观看 | 日韩乱码一区二区 | 欧美十大老熟艳星 | 亚洲综合大片69999 | 精品在线视频免费 | 成人黄色大片在线观看 | 麻豆国产在线播放 | 手机看片福利永久 | 久久婷婷综合色丁香五月 | 黄色网久久 | 日韩色一区 | 午夜在线一区 | 日本打屁股网站 | 高h奶汁双性受1v1 | 日韩区在线观看 | av尤物 | 国产一区二区视频在线观看免费 | 亚洲大成色| 开心黄色网| 日本精品免费视频 | 久久人人妻人人人人妻性色av | 超碰成人在线观看 | 久久久久久中文 | 久久婷婷国产麻豆91 | 91最新国产| 亚洲国产精品一 | 亚洲精品免费观看 | 国产视频一区二区三区在线播放 | 丁香伊人网 | 黄污视频在线观看 | 精品久久久久久久久久久久 | 98色| 五月婷婷综合激情网 | 成人妇女淫片aaaa视频 | 91成人免费网站 | 香蕉视频在线观看免费 | 第一福利丝瓜av导航 | 色羞羞| 精品无码国产污污污免费网站 | 巨大乳の揉んで乳榨り奶水 | 欧美高清另类 | 天天插夜夜操 | 精品熟女一区二区三区 | 久久视频免费观看 | 97超碰人人模人人人爽人人爱 | 亚洲日日日 | 亚洲第一天堂av | 亚洲成人av免费在线观看 | 欧美丰满老熟妇aaaa片 | 六月色丁香 | 欧美久久久久久久久 | 性巴克成人免费网站 | 精品日韩一区二区三区 | 午夜在线一区二区三区 | 亚洲激情免费 | 国产91白丝在一线播放 | 国产精品日韩精品欧美精品 | 中文字幕1| 亚洲va中文字幕 | 天堂影院一区二区 | 国产一区精品在线观看 | 国产日韩欧美另类 | 婷婷毛片| 91免费视频播放 | 精品免费视频 | 五月婷婷基地 | 久久黄色精品视频 |