博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
上海区域赛Unlock the Cell Phone
阅读量:4129 次
发布时间:2019-05-25

本文共 921 字,大约阅读时间需要 3 分钟。

/* 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4026
 题目来源:上海区域赛Unlock the Cell Phone
报告人:SpringWater
题目类型:状态压缩
题目大意为:在一个存在跨越点和坏死点和正常点的矩阵中,求出遍历所有正常点且仅一次的哈密顿通路的数量总数 思路:这跟哈密顿图的解法差不多,其实就是求哈密顿通路个数吧。DP[i][s], 表示以结点i为最后一个连接点路径状态为s时的图像个数。转移式为DP[i][s] = DP[1][s ^ (1 << i)] + DP[2][s ^ (1 << i)] + ...DP[n][s ^ (1 << i)]。最后所有的DP[k][(1 << n + 1) - 1]求和为解。
 解题感悟:此题是一个状态压缩类型的题,这类题型一般属于较难题,因为他不仅设计到图论的知识,还涵盖了数 论和数学建模的理论,以前从没做过类似的题目,所以这题的解题思路基本都是借鉴了别人的解题报告, 本想将他 处理没状态可达的方法优化一下的,即:我不罗列所有中间序号的点,而是从正常点向八个方向扩展, 但是后来发现虽然时间复杂度虽然有改观,但是编程复杂度 就大大加强了,所以 除了判断可达那里我做了 一些空间上的优化以外 其他的都没怎么改动,因为感觉别人的代码确实很精致美妙,!
 通过这初次对状态压缩,感觉它是一个非常实用的思想,并且是很灵活,比起纯的dp要难与理解很多,因为关 键它涉及了很多二进制数论的运用!使得学起来比较吃力,但是我相信通过长时间多的磨练我会把它拿下的!目 前接算是对二维的状态压缩给解决了,接下来就深入到三维的状态压缩,尽管可能会有点难! */
#include
#include
int G[30],ordinary[17];int SA[17][17],Hash[30];__int64dp[17][1<<17];int n,m,label;int inputdata()//录入数据{ inti,j=n*m; for(i=0;i

转载地址:http://uhuvi.baihongyu.com/

你可能感兴趣的文章
驱动力3.0,动力全开~
查看>>
记CSDN访问量10万+
查看>>
Linux下Oracle数据库账户被锁:the account is locked问题的解决
查看>>
记CSDN访问20万+
查看>>
Windows 环境下Webstorm 2020.3 版本在右下角找不到Git分支切换部件的一种解决方法
查看>>
Electron-Vue项目中遇到fs.rm is not a function问题的解决过程
查看>>
飞机换乘次数最少问题的两种解决方案
查看>>
有向无回路图的理解
查看>>
设计模式中英文汇总分类
查看>>
WPF实现蜘蛛纸牌游戏
查看>>
单例模式
查看>>
工厂方法模式
查看>>
模板方法模式
查看>>
数据结构之队列、栈
查看>>
数据结构之树
查看>>
数据结构之二叉树
查看>>
二叉树非递归遍历算法思悟
查看>>
红黑树算法思悟
查看>>
从山寨Spring中学习Spring IOC原理-自动装配注解
查看>>
实例区别BeanFactory和FactoryBean
查看>>