2019icpc沈阳网络赛

Posted pandaking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019icpc沈阳网络赛相关的知识,希望对你有一定的参考价值。

J题:   

题意:给你一张大小为n的不确定的图,这个图不确定,每个点的入度和出度都为1。那么这样的图的一个特点就是肯定由若干个欧拉回路组成的。   可以得到递推公式就是n!

然后就再看它还有一个特点。要求每个点必须走不大于x条边能回到自身。。。。。。。    (n<=2*x<2e9)  

我们肯定只能从反面想,把它不符合条件的都去除,因为(n<=2*x<2e9) 这个条件注定了可以这样想。。。。。。。

由于有 p(m)=c(m,n)*(m-1)!*(n-m)!/n!=1/m    所以对于每个的概率是1/i  (x<i<=n)

预处理一下即可,下面是代码:

技术图片
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <bitset>
 5 #include <iostream>
 6 #include <algorithm>
 7 typedef long long ll;
 8 using namespace std;
 9 const ll mod=(ll)(1e9+7);
10 const int maxn=(int)(1e6+10);
11 ll sum[maxn];
12 int t;
13 ll x,n;
14 
15 ll fast_pow(ll a,ll b)
16    ll res=1;
17    while(b)
18        if(b%2==1) res=(res*a)%mod;
19        a=(a*a)%mod;
20        b=b/2;
21    
22    return res;
23 
24 
25 void init()
26     sum[0]=0;
27     for(ll i=1;i<maxn;i++)
28         sum[i]=(sum[i-1]+fast_pow(i,mod-2))%mod;
29     
30 
31 
32 
33 
34 int main()
35     init();
36     scanf("%d",&t);
37     while(t--)
38         scanf("%lld%lld",&n,&x);
39         if(x>=n)
40             printf("1\n");
41             continue;
42         else
43             ll ans1=1,ans2=1;
44             for(ll i=x+1;i<=n;i++)  ans1=(ans1*i)%mod;
45             ans2=(ans1-(ans1*(sum[n]-sum[x]+2*mod))%mod+2*mod)%mod;
46             //cout<<ans1<<"  "<<ans2<<endl;
47             printf("%lld\n",ans2*fast_pow(ans1,mod-2)%mod);
48         
49     
50     return 0;
51 
View Code

 

以上是关于2019icpc沈阳网络赛的主要内容,如果未能解决你的问题,请参考以下文章

2019icpc沈阳网络赛

2019ICPC沈阳网络赛-D-Fish eating fruit(树上DP, 换根, 点分治)

2019ACM-ICPC沈阳网络赛-C-Dawn-K's water(完全背包模板题)

2019ACM-ICPC沈阳网络赛-K-Guanguan's Happy water(思维+暴力)

2018 ICPC 沈阳网络赛

2017 acm icpc 沈阳(网络赛)5/12 题解