码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • AtCoder Beginner Contest 279 G. At Most 2 Colors(计数/组合数学/dp递推)


    题目

    n(2<=n<=1e6)个格子,从左到右一字排开,

    现在需要给格子涂色,有c(1<=c<=1e9)种颜色,

    要求连续的k(2<=k<=n)个格子的颜色数最多只有2种,

    求方案数,答案对998244353取模

    思路来源

    TOYOTA SYSTEMS Programming Contest 2022(AtCoder Beginner Contest 279)(G.At Most 2 Colors容斥,DP,组合数学) - 知乎

    题解

    dp[i]表示长度为i的格子的合法涂色数,考虑第i个怎么放

    ①第i个前面k-1个位置有2种颜色,则第i个位置只能放这两种颜色中的一种

    用合法方案减只有一种的方法,即得两种颜色的方案数

    而只有一种颜色的方案数,等于f[i-k+1],

    此时,让中间的k-2个格子都和i-k+1涂一样的即可

    ②第i个前面k-1个位置仅有一种颜色,刚求过,f[i-k+1],

    此时,第i个位置有c种选择可以涂,

    dp[i]=(dp[i]-dp[i-k+1])*2+c*dp[i-k+1]

    当i-k+1<1时,相当于前缀没有限制,

    而目的是为了让这中间夹着的<=k-2个格子同色,

    此时方案数有c种,与dp[1]统一

    注意到c=1或2时,c-2<=0,可以特判,

    但代入式子后发现,可以和式子统一

    代码

    1. #include
    2. using namespace std;
    3. const int N=1e6+10,mod=998244353;
    4. int n,k,c,dp[N];
    5. int main(){
    6. cin>>n>>k>>c;
    7. dp[1]=c;
    8. for(int i=2;i<=n;++i){
    9. dp[i]=(2ll*dp[i-1]%mod+1ll*(c-2)*dp[max(1,i-k+1)]%mod)%mod;
    10. }
    11. cout<
    12. return 0;
    13. }

  • 相关阅读:
    ubuntu20.04 Supervisor 开机自启动脚本一文配置
    怎样在Windows10系统中安装配置PL/SQL
    Metabase学习教程:提问-3
    maven入门:一个简单的maven项目
    【JUC】多线程基础概述
    vue-cli 3中dart-sass替换node-sass,element ui icon图标乱码问题
    ElasticSearch浅谈
    一、认识OSS
    23 【事件对象与鼠标事件】
    冷链物流行业市场调研 冷链物流将朝着智慧化方向发展
  • 原文地址:https://blog.csdn.net/Code92007/article/details/128068982
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号