首页 > 其他分享 >Codeforces Round #829 (Div. 1) C

Codeforces Round #829 (Div. 1) C

时间:2022-11-28 19:47:37浏览次数:41  
标签:return int res sum Codeforces 829 Div dp mod

C. Wish I Knew How to Sort

我们会发现此题的终点状态只有一个 起点状态也只有一个
所以我们的状态表示可以非常简单
我们可以发现我们为了达到最终的状态 我们用一些1来填补最后几个0的位置才是有效交换
所以dp[i]表示有i个位置的1待补的期望步数
这样我们的状态转移就是:
dp[i]=
1.我们选到了两个位置恰好是有效交换
i/ni/(n-1)然后再全排列2一下
我们把这个概率设为g
dp[i]=gdp[i-1]+(1-g)dp[i]+1 否则就是不是有效交换了
我们把这个dp[i]移到同一边化简就可以得到
dp[i]=1/g+dp[i-1]
这样就做完了
最后记得该%就%

int qmi(int a, int b, int p){
    int res = 1;
    while(b){
        if(b & 1) res = res * a % p;
        a = a * a % p;
        b >>= 1;
    }
    return res;
}
int inv(int x){
    return qmi(x,mod-2,mod);
}
int Mod(int x){return (x%mod+mod)%mod;}
int n;
int dp(int i){
    if(!i)return 0;
    int g=n*(n-1)%mod*inv(2*i*i%mod)%mod;
    return (g+dp(i-1))%mod;
}
void solve(){
    cin>>n;
    vector<int>a(n+10);
    int sum=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        sum+=a[i];
    }
    int cnt=0;
    for(int i=n;i>=n-sum+1;i--)if(!a[i])cnt++;
    cout<<Mod(dp(cnt))<<endl;
}

标签:return,int,res,sum,Codeforces,829,Div,dp,mod
From: https://www.cnblogs.com/ycllz/p/16933377.html

相关文章

  • div垂直水平居中
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>div垂直水平居中</title><style>div{padding:16px32px24px;position:absolute;......
  • Codeforces Round #828 (Div. 3) F
    F.MEXvsMED一开始写了个感觉每个点只会搞一次的那种线性感性理解了很对结果又wa又tintleft=l-z-1,right=n-r;intcnt=2*now;for(intle......
  • Codeforces div2 #836
    B核心思路:这题我们会发现其实n为奇数的时候是非常好处理的。主要是n为偶数。我们不能难发现,奇数其实就是偶数的扩展情况,这里其实主要有点比较难看出123这个的关系,但是我......
  • 『题解』Codeforces 1758B XOR = Average
    Description构造一个\(a\)序列,使\(a_1\oplusa_2\oplusa_3\oplus\cdots\oplusa_n=\dfrac{sum(a)}{n}\)。Solution第一眼看到这道题,我想到的是分情况讨论。......
  • Codeforces Round #739 (Div. 3) F1
    F1.NearestBeautifulNumber(easyversion)很像网络赛北大出的那题感觉这题是简化版我们只需要把所有数都搞出来然后二分即可我们先枚举k1的情况这个很简单先枚......
  • 『题解』Codeforces 808D Array Division
    题目传送门解题思路首先统计\(n\)个数字和为\(sum\),那么一半就是\(sum=sum\div2\)从\(1\)到\(n\)枚举,累计进前缀和\(ans\)中,如果发现第\(i\)个数字累......
  • 『题解』Codeforces 1743A Password
    Problem现有\(4\)位密码,满足以下条件:给定数位的集合\(S\),密码中没有用到这些数位。密码中恰好包含两个数位,每个数位出现了两次。求符合条件的密码个数。Solution......
  • 『题解』Codeforces 1742C Stripes
    Problem在\(8\times8\)的网格上,轮流染上红色和蓝色。红色只能染一整行。蓝色只能染一整列。问最后用的是哪种颜色。Solution题目说明了至少会染一个条纹,所以我......
  • 『题解』Codeforces 1702A Round Down the Price
    题意这道题其实就是让你求出当前数字与\(10\)的整数幂次的差值(注意不能向上取,只能向下取)。而且题目也标注了\(1\lek\le9\),所以我们可以让\(i\)从\(0\sim9\)......
  • Codeforces Round #836 (Div. 2) A-D
    比赛链接A题意给一个字符串\(s\),对其加倍,即每个字符后面追加一个相同字符。加倍后可以重排列,要求构造一个回文串。题解知识点:构造。既然可以重排列了,那顺序是随意......