日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > hdu 5894 分位置(組合數學,沈陽網絡賽)

hdu 5894 分位置(組合數學,沈陽網絡賽)

來源:程序員人生   發布時間:2016-11-03 08:37:39 閱讀次數:2432次

題目:http://acm.hdu.edu.cn/showproblem.php?pid=5894
題意:

現在 m個考生人需要坐在有n個坐位的圓桌上。你需要安排位置,使得任意兩個考生之間相距最少k個位置。桌子有編號,考生a和b交換位置視作1種方案,問有多少方案,mod 1e9+7。(0 < m < n < 1e6, 0 < k < 1000)

分析:

這題隊友過的,補1下~
首先肯定第1個人的位置,第1個人可以從n個椅子中任選1個,然后剩余n⑴個椅子。由于人的間隔最少k個椅子,所以從這些符合要求的間隔距離的椅子抽出k*m個,然后剩下的m⑴個人就能夠隨意從剩下的椅子人選了??梢韵胂蟪擅恳粋€人和k個坐位綁在1起,1旦這個人有了坐位,他后面自動添加這k個坐位。
那末第1個人從n個坐位當選擇1個,并且抽走了k*m個,那末剩下n⑴-k*m個坐位,在這當中選m⑴個作為給其余人座,總數為sum=n*C(n⑴-k*m,m⑴),由于這里的人是無差別的。比如有3個人,假定他們坐的位置是(2,4,7),那末,(4,2,7),(7,2,4)是重復計算的,所有sum/m。

代碼:

#include<bits/stdc++.h> using namespace std; typedef long long ll; const int mod=1e9+7; ll qmod(ll x,int n) { ll ans=1; for(; n; n>>=1) { if(n&1)ans=ans*x%mod; x=x*x%mod; } return ans; } ll C(int n,int m) { if(m>n)return 0; ll ans=1; for(int i=1; i<=m; i++) { ans=ans*((n+i-m)*qmod(i,mod-2)%mod)%mod; } return ans; } int main() { // freopen("f.txt","r",stdin); int T; scanf("%d",&T); ll n,m,k; while(T--) { scanf("%lld%lld%lld",&n,&m,&k); if(m==1)printf("%lld\n",n); else printf("%lld\n",(C(n-k*m-1,m-1)*n%mod)*qmod(m,mod-2)%mod); } return 0; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美在线播放一区 | 国产高清第一页 | 操操操网 | 美女黄网站 | www一区二区 | 国产午夜精品久久久 | 一区不卡| 久久99精品久久久久久 | 精品一区二区三区国产 | av看片| 精品国产一区二区在线 | 亚洲综合久久久久 | 亚洲精品美女 | 久久九色| 91麻豆精品国产自产在线观看一区 | 亚洲精品美女视频 | 少妇性bbb搡bbb爽爽爽欧美 | 亚洲视频免费在线 | 国产高清av在线 | 91 中文字幕 | 国产精品99蜜臀久久不卡二区 | 国产精品一区二区三区久久 | 99精品视频在线观看免费播放 | 欧美黄色网 | 懂色av一区二区 | 亚洲精品乱码久久久久久蜜桃 | 亚洲欧美一区二区三区国产精品 | 99福利| 91夜夜蜜桃臀一区二区三区 | 天堂在线中文 | 日韩精品一区二区三区在线 | 我看黄色一级片 | 午夜性生活片 | 视频一区二区三区在线观看 | 精品国产乱码久久久久久图片 | 黄色免费高清视频 | 黄色高清网站 | 99re在线视频| 中文字幕三级 | 欧美综合激情网 | 免费a级毛片在线观看 |