D

小红的整数转换

https://ac.nowcoder.com/acm/contest/71593/A

代码写的比较丑,这道题的思路就是先用不管取不取红蓝硬币,先算出混取凑出面值为p的方案数,然后算出只取红硬币凑出的面值方案数,最后算出只取蓝硬币凑出的方案数,最后就是把混取面值为p的方案数减去只取红或蓝得到面值为p的方案数,这样得到的一定就是有红有蓝的方案了,最后取模就好了

int fa[MAXN],fb[MAXN],fc[MAXN];
void solve() {
	int n,p;cin>>n>>p;
    string str;cin>>str;str=' '+str;
    for(int i=1;i<=n;i++) cin>>c[i];
    vector<int>va,vb;
    for(int i=1;i<=n;i++){
        if(str[i]=='B')  vb.push_back(i);
        else va.push_back(i);
    }
    int ida=1;
    for(auto it:va) a[ida]=c[it],ida++; ida--;
    int idb=1;
    for(auto it:vb) b[idb]=c[it],idb++; idb--;
    fa[0]=1;
    for(int i=1;i<=ida;i++){
        for(int j=p;j>=a[i];j--){
        	fa[j]=(fa[j]+fa[j-a[i]])%mod;
        }
    }
    fb[0]=1;
    for(int i=1;i<=idb;i++){
        for(int j=p;j>=b[i];j--){
        	fb[j]=(fb[j]+fb[j-b[i]])%mod;
        }
    }
    fc[0]=1;
    for(int i=1;i<=n;i++){
        for(int j=p;j>=c[i];j--){
        	fc[j]=(fc[j]+fc[j-c[i]])%mod;
        }
    }
    cout<< (((fc[p]-fb[p]-fa[p])%mod)+mod)%mod <<endl;
}
全部评论
不知道如果n种颜色这题应该怎么思考呢
点赞 回复 分享
发布于 2023-12-10 20:57 湖北

相关推荐

现在是2026.2.27,距离我2025.8.16在boss上投出第一份简历以来已经过去了半年多时间了。可能许多牛友对我并不陌生,在去年的89月份,深陷实习焦虑的我不停的在牛客上发帖求助,改过的简历不知道发了多少次。因为双非本的缘故,在实习这条路上可谓是处处碰壁。boss上四位数的沟通只换来两位数的回复,好不容易约到的面试很多还因为各种原因被挂。最终在9月底遇到了我实习过程中的第一个贵人:美团实习的ld。尽管那是个测开岗,但是没有关注我实际的技术栈,而是用专业的提问让我感受到了前所未有的面试体验,发掘了自己的技术闪光点。最终让我决定放弃了另一家中小厂的后端。他们非常尊重我对开发学习的热情,也给足了我自由发挥的空间,如果不是他们让我深度参与的用例生成项目,我或许连接到后面面试的机会都没有。尽管岗位不是开发,但这个过程中对大厂工作流程的深度参与以及对业务,项目,和技术的思维提升对我后续的开发面试一样提供了巨大的帮助。时代的洪流让我们每个人都被迫卷入其中,错过了互联网的红利时期,无论实习还是秋招都令不同背景的同学倍感压力,尽管如此我们依旧要相信:努力定有回报最后祝各位27的兄弟姐妹们,在暑期实习的面试路上一路披荆斩棘,策马扬鞭,用梦中情司的offer回应自己一直以来不愿放弃的拼搏timeline:2.6一面2.11&nbsp;二面2.12&nbsp;三面&nbsp;当天转hr面2.26&nbsp;hr面,面完云证+录用评估2.27&nbsp;offer
EternalRig...:看完太感人了吧,你这是真正的一路生化
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务