码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 1700*D. Flowers(DP&&前缀和&&预处理打表)


    Problem - 474D - Codeforces

    题意:

            有白花和红花两种,把 x 朵花排成一排,要求白花必须连续 k 个一块放置,则有 cnt 种情况。给出 a 和 b,计算a到b之间的 x 对应的 cnt 总和,并且对1e9+7取模。

    解析:

            考虑DP。

            当数量 x 小于 k 的时候,只能全部放置红花,只有一种情况。

            当数量 x 等于 k 的时候,则为两种情况,多了一种 x 朵花都为白花的情况(要求必须 k 朵连续放置)

            当数量 x 大于 k 的时候,如果最新的一朵花我们放置红色,则其情况数量等于前一朵的情况数量。如果如果最新的一朵花我们放置白色,则连续 k 朵都为白色,则情况数量等于 x-k 的情况。

    所以状态转移方程为 dp[ i ] = dp[ i-1 ]+dp[ i-k ],i>k

            综上所述,状态转移方程为

                                          dp[ i ] = 1,i>=1 && i

                                          dp[ i ] = 2,i==k

                                          dp[ i ] = dp[ i-1 ]+dp[ i-k ],i>k

            并且每次询问数据范围都为1e5,所以预处理前缀和。

            注意,因为每次都取模mod,可能导致最后答案小于 0 的情况,所以此时需要加一个mod。

    1. #include
    2. using namespace std;
    3. #define int long long
    4. const int N=1e5+5,mod=1e9+7;
    5. int t,k,dp[N],sum[N];
    6. signed main(){
    7. scanf("%lld%lld",&t,&k);
    8. dp[1]=1;
    9. for(int i=1;i<=k;i++){
    10. dp[i]=1;
    11. sum[i]=sum[i-1]+1;
    12. }
    13. dp[k]+=1;
    14. sum[k]+=1;
    15. for(int i=k+1;i<=1e5;i++){
    16. dp[i]=(dp[i-1]+dp[i-k])%mod;
    17. sum[i]=(sum[i-1]+dp[i])%mod;
    18. }
    19. while(t--){
    20. int a,b;
    21. scanf("%lld%lld",&a,&b);
    22. printf("%lld\n",(sum[b]-sum[a-1]+mod)%mod);
    23. }
    24. return 0;
    25. }
  • 相关阅读:
    C#下使用IronPython来实现热更新
    【爬虫介绍】了解爬虫的魅力
    【Linux】调试工具gdb
    亚马逊收到CPSC查验通知后卖家需要怎么弄?ASTM F963标准测试 ,CPC认证
    102个Python练手项目;『机器学习』优质内容社区;『基于事件的机器人视觉』课程推荐;『迁移学习导论』书籍代码;前沿论文 | ShowMeAI资讯日报
    铁矿行业BI经营分析框架(二)万能框架-增长性、盈利性、流动性
    新学期、新目标、迎接新的自己
    动态规划篇——线性DP
    Oracle/PLSQL: Sinh Function
    Spring系列一:Spring基础篇
  • 原文地址:https://blog.csdn.net/JungleZRD/article/details/133634852
  • 最新文章
  • C# 内存安全性的重大演进:重新定义 unsafe 关键字
    [MAF的Agent管道详解-05]对话历史的持久化和输入输出的增强
    一行代码干翻 Java 反射?EggG 流式反射调用让反射优雅到不可思议
    vibe coding(二)Where you go:一个微型 windows 桌面覆盖工具
    [送码] 用 AI Coding 做了一个 App,谈谈 AI Coding 的真实体验
    面试官:说一下 Agent 的常见范式,如何选型?
    CAD子系统,是自研还是外包?
    polygon出题教程
    Manim物理模拟:别自己写欧拉了!
    AI 学习笔记:Agent 的应用演示
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号