状态dp 第一道

第一道 状态压缩dp 题目:Codeforces Round #235 D. Roman and Numbers 题目链接:http://codeforces.com/contest/401/problem/D 题目意思:有两个数n和m,问由n的组成数字组成的,能被m整出的数的个数。 解题思路:第一次接触状态压缩dp,以前只是听过没看过。看的大神们的思路和大神们的代码。            f[ma 阅读详情

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cstring>

const int MOD = 100000000;
using namespace std;

int dp[20][600];
int cur[20];
int state[600];
int m , n;
int top;

void init()
{
    top  = 0 ;
    int sum = 1 << n;
    for ( int i = 0 ;i < sum ; i ++ )
        if ( !(i & i<<1) ) state[top++] = i;//cout << i << endl;
}

int isok( int x , int k )
{
    if ( x & cur[k] )   return 0;
    return 1;
}

int main()
{
    while ( scanf("%d%d" , &m ,&n ) != EOF )
    {
        init();
        memset ( dp , 0 , sizeof ( dp ));
        for ( int i = 1 ; i <= m ; i ++ )
        {
            int num;
            cur[i] = 0;
            for ( int j = 1 ; j <= n ;j ++ )
            {
                scanf("%d" , &num );
                if ( !num )
                    cur[i] += ( 1<<(n-j));
            }
        }
        for ( int i = 1 ; i <= top ; i ++ )
            if ( isok( state[i] , 1 ) )
                dp[1][i] = 1;
        for ( int i = 2 ; i <= m ; i ++ )
        {
            for ( int j = 1 ; j <= top ; j ++ )
            {
                if ( !isok ( state[j] , i ) ) continue;
                    for ( int k = 1 ; k <= top ; k ++ )
                    {
                        //if ( !isok( state[k] , i-1 )) continue;
                        if ( state[j] & state[k] ) continue;
                        dp[i][j] += dp[i-1][k]%MOD;
                        dp[i][j] %= MOD;
                    }
            }
        }
        int ans = 0;
        for ( int i = 1 ;i <= top ; i ++ )
        {
            ans += dp[m][i]%MOD;
            //cout << dp[m][i] << endl;
            ans %= MOD;
        }
        //cout << top << endl;
        printf("%d\n", ans%MOD);
    }
    return 0;
}


HCIE实验考试避坑指南:除了技术,你更该关注考场电脑、模拟器和TAC提交页 本文详细解析了HCIE实验考试中技术之外的决胜细节,包括考场电脑配置、网页模拟器操作逻辑、TAC答题时间管理等关键点。通过实用的环境检查清单和应急方案,帮助考生避免因非技术因素导致的失败,提升考试通过率。 阅读详情

相关推荐

经典状态dp题目

POJ 1185 炮兵阵地 一般这类题目列会很小10左右,我们需要枚举所有行,对于当前行,其放炮的位置只与上一行和上上行有关,我们记当前行状态和上一行状态便可转移了,dp数组开3维即可。 在枚举每一行放炮兵的方法时,可以预处理方便获得所有可能放法。具体细节见代码。总体复杂度O(Row*70*70*70),70是预处理得到的每一行最多放法。打表很容易看出来。 #include #inclu

1292765944的专栏 3923

sicily 1404 第一道 状态DP

#include #include #include #include using namespace std; #define check_i(i, node) ((1<<i) & node) //node第i位是不是有值,含第0位 #define MX 0x7f7f7f7f int n, w[11][11]; int dp[2<<10][11]; int main() {

rptotal的专栏 578

别再只调电压了!深入理解数控电源的CC/CV模式与双闭环PID控制(以BUCK电路为例)

本文深入解析数控电源的CC/CV模式与双闭环PID控制技术,以BUCK电路为例,探讨如何通过双闭环控制优化负载突变响应和模式切换稳定性。文章详细介绍了电压环与电流环的协同工作原理、PID参数整定技巧及工程实践中的非线性补偿方法,帮助工程师提升电源设计的智能控制能力。

weixin_27017211的博客 261

我的第一道状态空间DP题的详细解题报告

POJ 2817 WordStack 解题报告 题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2817 题目主要用到的算法:状态空间dp 题目描述: 这个题的意思是第一行给出case数N (1 <= N <= 10),然后给出N个单词,每个一行,当输入不是正整数的时候结束。每个单词最多10个字母。 Sample...

deng530557273的博客 198

已解决-Parallels Desktop 16 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络

我是月球挖掘机,相信不少打工人为了尝鲜已经更新了MacOS 11 Big Sur,当然,苹果每次的系统大更新,都会给我们软件的功能无法使用惊喜,这次的也不例外。 这个问题是我在更新macOS Big Sur之后,Parallels Desktop打开虚拟机后,提示: 报错信息 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络 这是我的软件版本: 起初我以为是我的虚拟机坏了,结果重装了一遍虚拟机,没有任何用处。我开始在网上找方法,只能找到那个使用命令行打开软件的命令,除此之外没有了

月球挖掘机 5万+

关于对鱼眼相机图片进行畸变校正的两种思路

鱼眼畸变主要表现为径向畸变(Radial Distortion),图像中心正常,边缘向外拉伸。畸变模型通常基于入射角θ\thetaθ(光线与光学轴夹角)和图像半径rrr的关系。等距投影(Equidistant Projection)rdfθrd​fθ,其中rdr_drd​为畸变图像半径,fff为焦距,θ\thetaθ为入射角。等立体角投影(Equisolid Angle Projection)rd2fsin⁡θ2rd​2fsinθ/2。

qq_45670407的博客 1546

我做的第一道状态压缩dp。。。

#include #include #include using namespace std; const int MAX = 1 << 16; struct Node { int cost; // 所需时间 int pre; // 前一状态 int reduced; // 最少损失分数 }; Node dp[MAX]; bool visit[MAX]; st

caitao_zhan 825

使用 VPN 访问太理内部网相关问题总结【太原理工大学】

电脑连接 VPN,访问校园内部网相关问题总结,太原理工大学。

m0_52861684的博客 9875

【HDU1074 dp状态压缩】Doing Homework 第一道状态压缩dp

Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5197    Accepted Submission(s): 2160 Problem Description Ignatius ha

Sky-J的代码篮子 617

一文搞定 ST22 短转储 MEMORY_NO_MORE_PAGING:看懂 SAP Paging 机制,参数 rdisp/PG_SHM 与 rdisp/PG_MAXFS 怎么设才稳

SAP系统MEMORY_NO_MORE_PAGING错误通常源于Paging资源耗尽而非物理内存不足。关键排查点包括:通过ST22确认错误类型,ST02监控Paging使用情况,检查工作进程trace中的"no more free blocks"提示。解决方案建议将rdisp/PG_SHM和rdisp/PG_MAXFS设为相同值(如250000块≈2GB),使Paging完全在内存中运行。同时需优化易耗Paging的代码逻辑,如避免滥用EXTRACT命令和超大内存对象传输。典型案例如月末

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 332

24、交通信号协调算法与模型解析

本文深入解析了交通信号协调中的关键算法与模型,包括多路径进展模型、MAXBAND网络系统模型和松弛启用带模型。这些模型通过合理安排相位序列、优化绿波带宽等方式,提高了交通运行的效率。文章还探讨了交通控制从单点控制向网络协调的发展趋势,分析了当前面临的挑战与机遇,并提出了未来研究方向,如借助信息技术和机器学习,深入研究交通网络的基本构成,以实现智能化和精准化的信号协调。

agile9scrum的博客 133

状态压缩DP

(简称状压DP)也是一种很特殊的 DP 算法,其精髓就是将所有物品的状态(一般是选或不选,用01表示,当然也有特殊情况)压缩成一个整数,进行状态的转移并节约空间。所以状态表示f[i][j]:表示已经将前 i -1 列摆好,且从第i − 1 列,伸出到第 i 列的状态是 j 的所有方案。假如i-2列和i-1列放的小方块和i-1和i列放的有重复的地方(如图中红绿相交的情况)就会产生冲突!我们可以来分析一下i-2和i-1与i-1和i列的状态转换关系;核心:我们的方案数==横着放的小方块数量。

EI_Psy_Congroo_的博客 169

Unity3D实现自定义河流路径或泥石流路径

此工具是一个插件,插件很好用,可以根据地形编辑河流的走向以及宽度,也可以发挥想象编辑成其他的效果,比如泥石流效果,岩浆效果,小溪,或者大江或者大河等等博客将会介绍可以编辑河流的工具的使用。希望这篇博客对Unity的开发者有所帮助。大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。提示:以下是本篇文章正文内容,下面案例可供参考本次总结的就是工具的使用, 有需要会继续增加功能不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!

心疼你的一切博客 5264

hdu 5115 Dire Wolf (区间DP)

作为第一道自己写出的区间DP,写个水博标记一下。 题意见其他博客(hhh) 这题和 lightoj 1422 很像,思路也很像。 对于一个区间,达到最优状态有两种可能,第一种是每次打死边界那只,第二种是区间中打死一只,最优解就是两种方案中选择一个伤害小的。从左往右递推,那么初始情况默认为打死新进来的作为边界的那只: dp[j][i]=dp[j][i-1]+wolves'attack[i]+...

ZLucker的博客 243

基于STM32的智能血氧、心率、体温、血压监测系统

摘要:本文设计了一款基于STM32F103C8T6的多功能健康监测系统,可实时检测血氧、心率、体温和血压四项生理参数。系统集成MAX30102、DS18B20等传感器模块,采用OLED显示和蓝牙无线传输技术,实现一键血压测量、阈值报警及手机APP数据管理功能。硬件设计包含传感器采集、电源管理、显示报警等模块;软件采用模块化架构,实现数据采集处理、蓝牙通讯等功能。测试表明系统测量准确可靠,为家庭健康监测提供了便携解决方案。未来可扩展更多监测参数和智能分析功能。

3254968421的博客 770

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

状态压缩DP详细讲解

那么对于当前 k 位朋友分好零食得到的结果,等价于,已经将前 k 位小朋友分好零食,再将那 2 包零食分给第 k 位小朋友后得到的结果。,通常一个状态数据就是一个一串0和1组成的二进制数,每一位二进制数只有两种状态,比如说硬币的正反两面,10枚硬币的结果就可以用10位二进制数完全表示出来,每一个10位二进制数就表示了其中一种结果。位小朋友,为了让能拿到最多饼干的小朋友拿到尽可能少的饼干,可理解为缩小贫富差距,求所有可行的零食分发方案中最多饼干那位小朋友最少的一种,为多少。

曾续缘的博客 4244

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝桥杯之状态机DP

蓝桥杯常考知识点:状态机DP

m0_74302039的博客 1831

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

DP-状态压缩DP(解释+典例)

1、什么是状态压缩DP 状态压缩就是使用某种方法,简明扼要地以最小代价来表示某种状态,通常是用一串01数字(二进制数)来表示各个点的状态。这就要求使用状态压缩的对象的点的状态必须只有两种,0 或 1;当然如果有三种状态用三进制来表示也未尝不可。 状态压缩DP:顾名思义,就是用状态压缩实现DP 2、经典问题 状态压缩最经典的问题应该就是旅行商问题了 (1)问题描述:旅行推销员问题(英语:Travel...

weixin_44254608的博客 5784

多状态dp——动态规划

每个状态点需要维护多个子状态,分别表示不同情境下的最优解。例如,股票买卖问题中,每个时间点需记录「持有股票」和「未持有股票」两种状态下的最大收益。:将问题划分为多个互相影响的状态。例如:股票问题:持有、未持有、冷冻期。粉刷房子:当前房子涂红、蓝、绿时的最小成本。:每个子状态的值需根据前一步其他子状态计算。例如:当天持有股票的最大收益 = max(前一天已持有继续持有, 前一天未持有当天买入)。

2302_80105876的博客 1589

状态压缩DP入门

我们知道,用DP解决一个问题的时候很重要的一环就是状态的表示,一般来说,一个数组即可保存状态。但是有这样的一些题目,它们具有DP问题的特性,但是状态中所包含的信息过多,如果要用数组来保存状态的话需要四维以上的数组。于是,我们就需要通过状态压缩来保存状态,而使用状态压缩来保存状态的

深秋的落叶 2万+

状态DP

由于队友在做状态DPd

0.肆玖 760

【知识总结】一些优秀的dp状态总结

该博客会一直更新优秀dp的状态 1.求两个字符串相同子序列的个数: 设dp[i][k] 表示表示字符串s前i个字符与字符串t前k个字符相同的子序列个数 那么 dp[i][k]=dp[i-1][k]+dp[i][k-1]-dp[i-1][k-1]//类似于容斥 如果s[i]==t[k] dp[i][k]+=dp[i-1][k-1]+1 //新增子序列+自己 2.二进制给出L,求满足a+b...

一只酷酷光儿的博客 1923

动态规划——状态压缩dp

状态压缩就是使用某种方法,简明扼要地以最小代价来表示某种状态,通常是用一串01数字(二进制数)来表示各个点的状态。这就要求使用状态压缩的对象的点的状态必须只有两种,0 或 1;当然如果有三种状态用三进制来表示也未尝不可。棋盘类型的题目一般要求我们依照一定的约束条件,摆放棋子,一般问棋子的数量、摆放的方案数。。。

qq_57150526的博客 3890

数据结构与算法-动态规划-区间dp,状态机dp,树形dp

算法如其名,在树形结构上的dp问题,经常搭配dfs一起食用定义:树形 DP 以树作为数据结构,利用树的递归性质和无环特性,自底向上或自顶向下地在树上进行状态转移,从而求解问题的最优解。与一般动态规划类似,树形 DP 通过把原问题分解为多个子问题,并保存子问题的解来避免重复计算,以提高算法效率。原理基础:树的每个节点及其子树构成一个独立的子问题,父节点的状态往往依赖于子节点的状态。

2401_84910613的博客 1066

动态规划——状态压缩DP

和玉米田不同的是,玉米田里面的十字大小是3*3,而本题是5*5,也就是说上面两行的状态都会影响本行状态的选择,也就是说如果想要由上一个状态转移而来,需要改变状态的定义。不包含连续数量为奇数的0,即第i-1列在原先状态k的基础上,又摆放了长方形去让第i列变成状态j从而将本状态变成。集合:已经摆放好前i-1列,并且从第i-1列延伸到第i列的状态是j时的方案。集合:已经摆放好前i行,并且第i-1行的状态是j,第i行状态时k时的方案。,即第i-1列的状态k有位置去摆放横向的长方形,去让第i列变成状态j。

m0_70897036的博客 1284
上一篇: poj 3691
下一篇: 杂七杂八的东西
Sov_Matrix
博客等级 码龄17年 0粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值