首页 > 其他分享 >BD202404 110串

BD202404 110串

时间:2024-06-05 20:22:36浏览次数:11  
标签:int BD202404 long 110 using define dp mod

百度之星一场,t4

题目链接:

对于这种连续状态限制的字符串方案数,首先考虑dp

首先定义好每个状态方便转移,0状态是结尾为0,1状态是结尾1个连续1,2状态是结尾两个连续1,有以下关系

if(s[i] == '1') {
    if(j > 0) dp[i][j][0] = (dp[i][j][0] + dp[i - 1][j - 1][0] + dp[i - 1][j - 1][1]) % mod;
    dp[i][j][1] = (dp[i][j][1] + dp[i - 1][j][0]) % mod;
    dp[i][j][2] = (dp[i][j][2] + dp[i - 1][j][1] + dp[i - 1][j][2]) % mod;
} else {
    dp[i][j][0] = (dp[i][j][0] + dp[i - 1][j][0] + dp[i - 1][j][1]) % mod;
    if(j > 0) dp[i][j][1] = (dp[i][j][1] + dp[i - 1][j - 1][0]) % mod;
    if(j > 0) dp[i][j][2] = (dp[i][j][2] + dp[i - 1][j - 1][1] + dp[i - 1][j - 1][2]) % mod;
}

可以发现每个分类讨论的转移个数不加本身是有5条(转移图可知有6条,有一条不合法),这是基于转移的路径确定,主要s[i]区别就是转移的代价变化

  • 本题卡了内存,故要优化成滚动数组方式转移
#include<bits/stdc++.h>
#define int long long
using namespace std;
using ull = unsigned long long;
using ll = long long;
using PII = pair<int,int>;
#define IOS ios::sync_with_stdio(false),cin.tie(0)
#define lowbit(x) (x) & (-x)
#define endl "\n" 
#define pb push_back
const int N=5e3+10;
const int INF=0x3f3f3f3f;
const int mod=998244353;
ll dp[2][N][3];
void solve()
{
    int n, k; cin >> n >> k;
    string s; cin >> s; s = " "  + s;
    dp[0][0][0] = 1;
    for(int i = 1; i <= n; i ++) {
        int u = i & 1;
        for(int j = 0; j <= k; j ++) {
            if(s[i] == '1') {
                if(j > 0) dp[u][j][0] = (dp[u][j][0] + dp[u ^ 1][j - 1][0] + dp[u ^ 1][j - 1][1]) % mod;
                dp[u][j][1] = (dp[u][j][1] + dp[u ^ 1][j][0]) % mod;
                dp[u][j][2] = (dp[u][j][2] + dp[u ^ 1][j][1] + dp[u ^ 1][j][2]) % mod;
            } else {
                dp[u][j][0] = (dp[u][j][0] + dp[u ^ 1][j][0] + dp[u ^ 1][j][1]) % mod;
                if(j > 0) dp[u][j][1] = (dp[u][j][1] + dp[u ^ 1][j - 1][0]) % mod;
                if(j > 0) dp[u][j][2] = (dp[u][j][2] + dp[u ^ 1][j - 1][1] + dp[u ^ 1][j - 1][2]) % mod;
            }
        }
        memset(dp[u ^ 1], 0, sizeof dp[u ^ 1]);
    }
    ll res = 0;
    int u = n & 1;
    for(int j = 0; j <= k; j ++) {
        res = (res + dp[u][j][0] + dp[u][j][1] + dp[u][j][2]) % mod;
    }
    cout << res << endl;
}
signed main()
{
    int T = 1;
    //cin>>T;
    while(T--)
    {
        solve();
    }
    return 0;
}

标签:int,BD202404,long,110,using,define,dp,mod
From: https://www.cnblogs.com/ZouYua/p/18233714

相关文章

  • FIREYE 45UV5-1101 紫外线火焰探测器
    FIREYE45UV5-1101紫外线火焰探测器的详细介绍如下:基本信息:品牌:FIREYE型号:45UV5-1101类型:紫外线火焰探测器技术特点:检测原理:采用紫外线技术,能够检测火焰中的紫外线辐射,光学范围通常在190至250纳米之间。灵敏度与可靠性:高度的灵敏度和可靠性,能够在各种恶劣环境下稳定......
  • 牛客网刷题 | BC110 X形图案
    目前主要分为三个专栏,后续还会添加:    专栏如下:          C语言刷题解析    C语言系列文章    我的成长经历感谢阅读!初来乍到,如有错误请指出,感谢!描述KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组......
  • P110 III
     1   Il.ParaphraseExplainthefollowingsentencesinyourownwords,bringingoutanyimpliedmeanings1....withafacethatseemedtotallyunfamiliarwithlaughter...(Para.2)2SometimesoldJules,orhissonLazarus,wouldgetmixedupinaSaturda......
  • (二刷)代码随想录第17天|● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之
    110.平衡二叉树math.abs指的是绝对值;这棵树的左右子树的高度差小于1的时候,同时该树的左右子树都是平衡二叉树的时候,这棵树才是平衡二叉树;classSolution{publicbooleanisBalanced(TreeNoderoot){returngetHeight(root)!=-1;}privateint......
  • 1103:陶陶摘苹果
    题目描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算......
  • pr找不到msvcr110.dll无法执行代码怎么解决?总结7个有效方法分享
    msvcr110.dll是MicrosoftVisualC++2012Redistributable的一个组成部分,这是一个动态链接库(DLL)文件。它主要用于存储许多程序共同使用的代码和资源,对于执行C++编写的应用程序极为关键。如何打开软件提示找不到msvcr110.dll或msvcr110.dll丢失,则可能意味着它已被误删或因......
  • Qt error: LNK1104: 无法打开文件“release\xxxxx.exe”报错解决方案
    一、问题重述出现这种报错一般是程序运行之后存在空指针问题,然后直接崩溃掉,下一次调试的时候就出现这种报错。如下图所示:二、原因分析出现这种情况是因为上次运行之后,程序的exe文件异常退出了,但是其实还在后台运行中,然后重新调试的时候exe被占用,所以QT编译器无法打开......
  • 代码随想录算法训练营第第17天 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子
    三道题都没想出来,还是要加强递归的练习110.平衡二叉树(优先掌握递归)再一次涉及到,什么是高度,什么是深度,可以巩固一下。题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.平衡二叉树.htmlfunctiongetHeight(node){if(node===null)return0;letleftH......
  • 满足 5G 通信的带宽需求,1ST040EH2F35I2LG,1ST085ES3F50I3VG,1ST085ES3F50E3VG,1ST110E
    说明Stratix®10FPGA和SoCFPGA大幅提高了性能、功效、密度和系统集成度。Stratix10采用创新HyperflexFPGA架构,将嵌入式多芯片互连桥接器(EMIB)、高级接口总线(AIB)和芯片组等技术结合在一起。™因此,与上一代高性能FPGA相比,Stratix10器件的性能提高了2倍。Stratix®10......
  • sololinker RV1106 SDK简单实用
    一、切换到sololinker/project$目录执行:./build.shusage查看项目配置信息及操作命令**************************************Check[OK]:dtc--version**************************************Check[OK]:makeinfo--version**************************************Check[O......