首页 > 其他分享 >Pinely Round 1 (Div. 1 + Div. 2) D

Pinely Round 1 (Div. 1 + Div. 2) D

时间:2022-11-21 15:23:37浏览次数:49  
标签:pow3 get int Pinely ans Div Round 进位 mod

D. Carry Bit

很好转化题意 发现就是一个进位就会产生1贡献
那我们发现要产生进位 至少在低位会有一个1 1出现
然后接着下一位我们要让他继续进位的话只有 01 10 11三种选择 00则会断掉进位
所以对于每一个长度为n的数组来说 我们要找出有k个进位的方案数
我们可以先枚举我们进位段有i个 我们有k个 我们直接用隔板法算出为C k-1 i-1
而为进位末端一定是11进位前端要是前面还有的话一定是00
这时候我们会发现首尾如果放进位段和不进位段的计算情况还是不一样的!
那我们就必须分2*2种情况讨论了
我们要讨论的就是i段下 有多少个位置是被固定了只能放00 或者 11
其他位置显然我们可以放3种 还有就是不进位有多少段 我们还是用隔板法算出即可
最后把答案加起来
注意我们C 0 0 还是要算成1 不然会漏解

int a[N],b[N],pow3[N];
int qmi(int a,int k,int p){
    int res=1;
    while(k){
        if(k&1)res=(res*a)%p;
        k>>=1;
        a=a*a%p;
    }
    return res;
}
int C(int x,int y){
    if(x<0||y<0||x<y)return 0;
    return a[x]*b[y]%mod*b[x-y]%mod;
}
inline int get(int x, int y){
    if (x == y) return 1;
    if (x == 0) return 0;
    return C(x - 1, y - 1);
}
void solve(){
    int n,k;cin>>n>>k;
    int ans=0;
    if(k==0){
        cout<<pow3[n]<<endl;
        return;
    }
    for(int i=0;i<=k;i++){
        if(n-2*i>=0){
            (ans+=pow3[n-2*i]*get(k,i)%mod*get(n-k,i+1)%mod)%=mod;
            (ans+=pow3[n-2*i]*get(k,i)%mod*get(n-k,i)%mod)%=mod;
        }
        if(n-2*i+1>=0){
            (ans+=pow3[n-2*i+1]*get(k,i)%mod*get(n-k,i)%mod)%=mod;
            (ans+=pow3[n-2*i+1]*get(k,i)%mod*get(n-k,i-1)%mod)%=mod;
        }
    }
    cout<<ans<<endl;
}

标签:pow3,get,int,Pinely,ans,Div,Round,进位,mod
From: https://www.cnblogs.com/ycllz/p/16911472.html

相关文章

  • Codeforces Round #833 (Div. 2)
    C题挂\(4\)发赛后再挂\(4\)发AB耻辱跑路。A.TheUltimateSquare有\(n\)个木块,第\(i\)块长\(\lceil\frac{i}{2}\rceil\)宽\(1\),则用这些木块拼成的最......
  • mysql中eq_range_index_dive_limit参数学习
    ​概念官方文档如下描述:Thisvariableindicatesthenumberofequalityrangesinanequalitycomparisonconditionwhentheoptimizershouldswitchfromusingind......
  • [题解] Uoj Easy Round 11
    A使用动态规划,\(f_{i,j}\)代表竖着的前\(i\)个,第\(i\)个被第\(j\)个横着的挡住的方案数,当然前提是有\(l_j\gei\),否则\(f_{i,j}=0\)。转移就是做一遍前缀和。考......
  • VP 记 #1 - Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)
    VP记#1-DeltixRound,Autumn2021(openforeveryone,rated,Div.1+Div.2)VP信息时间:2022年11月20日14:40~17:10。场次:DeltixRound,Autumn2021(o......
  • UOJ Easy Round #11 T2 科考工作 Sol
    感谢@mfeitveer提供的思路。昨天没听懂,今天想明白了。大概是这样的,把众数取出来,然后把整个数组减掉众数(任意一个都行)。拎出来众数以外的数,进行随机打乱。然后枚举\(......
  • 如何获取div下的子标签-字标签不一定还是div-如何获取div下的h5标签
    varhtmlStr="";htmlStr+="<divid=\"div_"+data.retData.id+"\"class=\"remarkDiv\"style=\"height:60px;\">";htmlStr+="<divstyle=\"position:relative;top:-4......
  • Codeforces Round #834 (Div. 3) A-G
    比赛链接A题目知识点:模拟。确定开头字母,然后循环比较即可。时间复杂度\(O(n)\)空间复杂度\(O(n)\)题解#include<bits/stdc++.h>#definelllonglongusingn......
  • Codeforces Round #834 (Div. 3) G
    G.RestorethePermutation对于一个序列要是我们从数小a[i]的开始每次给这个a[i]选一个最接近她的一个小的显然我们这样是最合法的但是怎么保证字典序最小呢显然我......
  • 题解 Codeforces Round #834 (Div. 3) ABCDEF
    A.Yes-Yes?problem判断给定的字符串是否为无穷个YesYesYes拼接组成的字符串的连续子串。\(|S|\leq50\)。solution暴力。具体地,判断\(S,Ye+S,Y+S\)是否有一个是......
  • Codeforces Round #834 (Div. 3)
    ABC略。D.MakeItRound问题可以看成凑出尽可能多的\(10\)作为因子。注意到\(10\)的因子只有\(1,2,5,10\)。首先,\(n\)自己已经凑出来的\(10\)没必要拆开,并......