HDU-1693-插头dp

插头DP——从不会到入门(POJ 2411,HDU 1565,HDU 2167,HDU 1693,Ural 1519) #include #include #include #include using namespace std; #define LL long long const int maxn=100037; // 可能的最大状态数 struct Node { int H[maxn]; // 哈希 int S[maxn]; // 状态 LL N[maxn]; // 状态对应的数量 in 阅读详情

懂了这道题还不算懂插头dp。

我现在就是不懂插头dp。

要想懂插头dp就要先懂状态dp。

状态dp之于插头dp,就像 trie树之于ac自动机。


__int64 dp[13][13][1<<13];
int ok[13][13];
int n, m;


int main()
{
    int t;
    scanf("%d", &t);
    for(int tt=1; tt<=t; tt++)
    {
        scanf("%d%d", &n, &m);
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=m; j++)
                scanf("%d", &ok[i][j]);
        }

        memset(dp, 0, sizeof(dp));
        dp[0][m][0] = 1;
        for(int i=1; i<=n; i++)
        {
            for(int k=0; k<(1<<m); k++)
                dp[i][0][k<<1] = dp[i-1][m][k];
            for(int j=1; j<=m; j++)
            {
                for(int k = 0; k<( 1<<(m+1) ); k++)
                {
                    int y = 1<<j;
                    int x = 1<<(j-1);
                    if(ok[i][j])
                    {
                        if( (k&x)==0 && (k&y)==0 )
                            dp[i][j][k] = dp[i][j-1][k+x+y];
                        else if( (k&x)!=0 && (k&y)!=0 )
                            dp[i][j][k] = dp[i][j-1][k-x-y];
                        else
                            dp[i][j][k] = dp[i][j-1][k] + dp[i][j-1][k^x^y];
                    }
                    else
                    {
                        if( (k&x)==0 && (k&y)==0 )
                            dp[i][j][k] = dp[i][j-1][k];
                        else
                            dp[i][j][k] = 0;
                    }
                }
            }
        }
        printf("Case %d: There are %I64d ways to eat the trees.\n",tt, dp[n][m][0]);
    }
	return 0;
}



用FPGA在HDMI上显示自定义字符:从COE文件到OSD叠加的保姆级教程 本文详细介绍了如何在FPGA上实现HDMI视频流的OSD字符叠加技术,从COE文件生成到动态区域控制的完整流程。通过Verilog代码示例和实战技巧,帮助开发者掌握字符ROM设计、像素坐标追踪和动态混合等核心技术,适用于视频监控、系统状态显示等应用场景。 阅读详情

相关推荐

ADS2020实战:村田电感.s2p与.mod文件导入全流程对比(附仿真结果差异分析)

本文详细对比了ADS2020中村田电感的.s2p与.mod文件导入流程及仿真结果差异,重点分析了两种模型在低频段和高频段的精度表现。通过实际案例展示.s2p文件在高频仿真中的优势,以及.mod文件在低频和非线性特性模拟中的准确性,为射频电路设计提供模型选择策略和混合仿真技巧。

weixin_29289821的博客 519

HDU - 1693 插头dp 艰难入门

什么是插头dp? 首先我们要先知道它能解决那些问题。一般都是一张方格图里有关连通性的一些问题。 那么对于一个格子而言,他就

wyxxzsy的博客 659

stm32使用TB6600驱动器控制42BYGH型步进电机

stm32使用TB6600驱动器控制42BYGH型步进电机

qq_35653974的博客 9584

【HDU1693】Eat the Trees(插头DP)

题目大意:找若干个环,布满地图所有白格,求方案数。题解:dp[I][j][s]表示I,j轮廓线时,轮廓线上的插头状态为s(01状态压缩),的方案数。转移: ①当前格为白格: 不能增加新插头。 任选一个蓝插头 必须选下面两个蓝插头。 ②当前格为黑格 1.有插头通往这里:不可能,方案数为0; 2.没有插头通往这里:直接转移上一次方案数。代码:#include<cstdio> #

CaptainChen的博客 438

Win11/Win10系统下,Proe5.0 M280终极版保姆级安装与激活指南(含SSQ补丁避坑)

本文提供Win11/Win10系统下Pro/E 5.0 M280终极版的详细安装与激活指南,涵盖环境配置、SSQ补丁应用及常见问题解决方案。通过系统调整、分步安装和性能优化,确保软件在现代操作系统上的稳定运行,特别适合机械设计用户参考。

weixin_30895059的博客 442

LVI-SAM适配KITTI数据集避坑指南:IMU频率与数据同步问题解析

本文深入解析了将LVI-SAM框架适配KITTI数据集时,在IMU频率与多传感器数据同步方面遇到的核心挑战与解决方案。针对KITTI数据集中sync与extract两种数据包的差异,文章提供了从数据选择、参数调优到时间戳诊断与修复的完整避坑指南,帮助开发者实现稳定高效的SLAM系统部署。

7z8x2c4v6b9的博客 247

HDU1693

HDU1693Eat the Trees 给你一个N*M的矩阵,矩阵中有好格子和坏格子,坏格子不能走,问你能找出多少种方法在这个矩阵中画规则的圈(可以有多个圈). 输入:首先是一个T(1 输出:以 Case 1: There are 3 ways to eat the trees.这种形式输出结果.保证结果不超过int的上限. 分析:此题就是URAL1519的变形,不过这题可以允许有多个圈

code 1034

华为OD机试真题2025双机位C卷 C++ 实现【卡牌游戏】

小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。

MISAYAONE的博客 280

hdu 1693 插头dp

题意:在n*m的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少中方法。 这题是插头dp,刚刚学习,不是很熟悉,研究了好几天才明白插头dp的方法,他们老是讲一些什么轮廓线啊,插头啊什么的,刚开始完全不知道这些事干什么的,看完cdq的大作后也是

XYM-AC之路 6254

手把手教你学simulink实例--基于Simulink的船舶动力定位系统建模与仿真

船舶动力定位系统(Dynamic Positioning System, DPS)是一种通过控制推进器来保持船舶在指定位置和航向的技术。它广泛应用于海上钻井平台、海洋调查船、起重船等需要精确位置控制的场景。DPS的核心任务是实时感知环境干扰(如风、浪、流),并通过闭环控制算法调整推进器输出,以抵消外界扰动并维持船舶的位置和姿态。本项目旨在基于MATLAB/Simulink平台,构建船舶动力定位系统的数学模型,并进行仿真分析,验证其性能和稳定性。

MHD0815的博客 1082

Django框架中settings文件的部署建议

为了更好地管理开发和生产环境的配置,建议将settings文件分为多个文件,分别用于不同的环境。然后,通过在启动应用程序时指定不同的settings文件,来加载相应的配置。在Django框架中,settings.py文件是非常重要的配置文件,它包含了项目的各种设置和选项。在Django框架中,settings.py文件是非常重要的配置文件,它包含了项目的各种设置和选项。可以使用Python的。为了更好地管理开发和生产环境的配置,建议将settings文件分为多个文件,分别用于不同的环境。

WELL_CODER的博客 128

hdu刷题路线

第一阶段:开始入门吧!(15天,53题) 一.输入输出练习(2天,10题) 1000、1089—1096、1001 二.简单操作:(2—4天,12题) 2000—2011、2039 三.英文题试水(3—4天,8题) 1720、1062、2104、1064、2734、1170、1197、2629 四.回归水题(4-6天,24题) 2012—2030、2032、2040...

越看越喜欢啊 5520

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv11轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 5985

HDU1693 Eat the Trees 插头dp

原文链接http://www.cnblogs.com/zhouzhendong/p/8433484.html 题目传送门 - HDU1693 题意概括   多回路经过所有格子的方案数。 做法   最基础的插头dp裸题。   只要一个横向插头和一排纵向插头就可以了。   分类也很少。   插头dp ->http://www.cnblogs.com/zinthos/p/3897...

weixin_30478923的博客 149

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

dp线长什么样子_HDU 1693 Eat the Trees 插头DP入门

缘起 终于该来的还是得来~ 插头DP入门学习! HDU 1693 Eat the Trees分析 给出一张n*m有障碍的棋盘,要求用任意条非平凡哈密顿回路遍历整个棋盘,不能经过障碍格子,要求统计不同的行走方案数。所谓非平凡指的是回路的长度>1(一个格子也构成一条回路,但是它长度为1,是平凡的哈密顿回路)【输入】多样例. 第一行是样例的数目, 对每个样例,第一行是n和m,1<=...

weixin_29496207的博客 425

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

hdu1693 Eat the Trees 【插头dp】

题目链接 hdu1693 题解 插头\(dp\) 特点:范围小,网格图,连通性 轮廓线:已决策点和未决策点的分界线 插头:存在于网格之间,表示着网格建的信息,此题中表示两个网格间是否连边 状态表示:当前点\((i,j)\)和轮廓线上\(m + 1\)个插头的状态 状态转移: 我们用\(f[i][j][s]\)表示如上的状态,最后一次决策点为\((i,j)\),轮廓线上插头状态为\(s\)的方案数...

weixin_30725315的博客 94

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【HDU1693】Eat the Trees(插头dp)

【HDU1693】Eat the Trees(插头dp) 题面 HDU Vjudge 大概就是网格图上有些点不能走,现在要找到若干条不相交的哈密顿回路使得所有格子都恰好被走过一遍。 题解 这题的弱化版本吧。。。 因为可以任意分配哈密顿回路的数量,因此根本不需要再考虑插头的配对问题了,那么直接分情况转移就好啦。 #include<iostream> #include<cstdio&...

weixin_30347335的博客 93

HDU 1693 插头dp入门详解

放题目链接 https://vjudge.net/problem/22021/origin 给出一个n*m的01矩阵,1可走0不可通过,要求走过的路可以形成一个环且可以有多个环出现,问有多少不同的行走方案; 这道题目可以有多个环而不是限制为一个环,大大减弱了题目的难度,我还是想了好久。 先简单介绍一下轮廓线及插头, 这种dp进行状态转移时,每个方格对应着他自己的一条轮廓线,由...

all00747的博客 196

HDU 1693 Eat the Trees 插头DP

  这是一道入门题,只需判断插头有无。   具体分为:     1、上插头和左插头都有     2、有上插头或有左插头     3、上插头和左插头都没有   用HASHMAP储存状态,具体有一些小技巧(见程序)。 1 #include <cstdio> 2 #include <cstdlib> 3 #include <c...

WZZ66631的博客 261

hdu 1693 Eat the Trees——插头DP

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1693 第一道插头 DP ! 直接用二进制数表示状态即可。 #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; ...

weixin_34100227的博客 123

hdu 1693 插头dp入门

hdu1693 Eat the Trees 题意 在\(n*m\)的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少种方法。 解法 这是一道插头dp的入门题,只需要考虑插头的有无,不需要维护连通性,很愉快。 代码 #include <cstring> #include <cstdio> #include <cstdlib> #...

weixin_30917213的博客 172

hdu1693 Eat the Trees 插头DP

题目:点击打开链接 题意:一个棋盘上有0,1.需要找一些回路把1全部串起来,问总方法数 分析:插头dp第一题,果然有点难度,用了我一天的时间,还是自己太菜了。。。。 我是看了这个图才恍然大悟的,这就对应下面的三种可以联通的情况。 对于为什么 f[i][0][s 可参考文档: http://www.docin.com/p-741918386.html 图片来

01的世界 419

hdu1693插头dp(多回路)

题意:在n*m的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少中方法。 这题是插头dp,刚刚学习,不是很熟悉,研究了好几天才明白插头dp的方法,他们老是讲一些什么轮廓线啊,插头啊什么的,刚开始完全不知道这些事干什么的,看完cdq的大作后也是一头的雾水,看代码,画图,一步一步的推,终于明白了,那个是为什么,这里讲一讲。 轮廓线表示的是当前插头的状态,

2873

【插头dp】HDU1693 Eat the Trees

同样是轮廓线 我们有一下 种情况 1.这个位置左侧有插头,且右侧不是障碍 将其修改为 2.这个位置上面有插头,且下侧不是障碍 将其修改为 3.这个位置上、左都有插头,且当前节点不是障碍 将其修改为 4.如果这个位置上、左都没有插头 将其修改为 5.如果这个位置有障碍 当上和左都是0的时候,将其直接转移即可 代码 #include<bits/stdc++.h> using namespace std; const int ma..

andyc_03的博客 324
上一篇: POJ-1037-dp
下一篇: POJ-3691-ac自动机+dp
walk_up
博客等级 码龄15年 2粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值