JavaScript中dis[i][j][u]怎么算
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇"JavaScript中dis[i][j][u]怎么算"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面
千家信息网最后更新 2026年11月03日JavaScript中dis[i][j][u]怎么算
这篇"JavaScript中dis[i][j][u]怎么算"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"JavaScript中dis[i][j][u]怎么算"文章吧。
一看数据规模,n≤12,果断状压。
然后起点要枚举,就设dp状态:
f[i][j]=以i为起点到j状态的最小花费
其中j是一个二进制数(用十进制来表示)第i位的1、0分别表示是否已经到达第i点(1表示已经到达,0表示还未到达)
(因为m很大,n很小,会有重边,所以用邻接矩阵(e[u][v]))
由此可以列出状态转移方程:
f[i][j]=min{f[i][k]+diss[i][k][u]*e[u][v]}(j&(1<<(u-1))!=0,j&(1<<(v-1))!=0,i!=v,k=j^(1<<(v-1)),e[u][v]!=1e9)(e[u][v]!=1e9说的就是u、v之间有边)
什么意思?就是说我们再找一个状态(k)比当前状态(j)只少一个点(显然不能是起点),然后从k向j拓展,在所有的k中取花费最少的那种。
但是还有一个问题,该边的花费怎么算?
根据题目描述,就将该边长度乘上起点到uu经过的点数(dis[i][j][u])即可。
问题又来了,dis[i][j][u]怎么算?
每次状态转移的时候顺便转移一下即可
代码如下:
#includeinline int read(){ int r=0,f=1; char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9')r=(r<<1)+(r<<3)+c-'0',c=getchar(); return r*f;}int n,ans=1e9,m,f[15][5005],e[15][15],dis[15][5005][15];inline int min(int a,int b){ return af[i][k]+dis[i][k][u]*e[u][v]){ f[i][j]=f[i][k]+dis[i][k][u]*e[u][v]; for(int y=1;y<=n;y++)dis[i][j][y]=dis[i][k][y]; dis[i][j][v]=dis[i][k][u]+1; } } } u++; x>>=1; } } ans=min(ans,f[i][(1< 以上就是关于"JavaScript中dis[i][j][u]怎么算"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
状态
内容
就是
起点
文章
知识
篇文章
问题
很大
最小
果断
之间
二进制
代码
价值
十进制
大部分
就是说
意思
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
喔噻互联网科技有限公司
深圳恒合互联网络科技有限公司
深圳科技互联网
金融科技与互联网金融
碳银互联网科技
互联网女皇 腾讯科技
广州凡科互联网科技
富国互联网科技创新基金
栖莱科技互联网股份有限公司
互联网公司科技股
浙江互联网科技研学营
昭通互联网科技选哪家
杭州壁岐互联网科技有限公司
无锡工业互联网科技有限公司
上海钢联属于互联网科技股吗
下一代互联网重大应用科技园
抖集互联网科技技术咨询
同城互联网络科技
河南商务圈互联网科技有限公司
颐高云石互联网科技
科技互联网产品
互联网科技开发公司
联恩商钥互联网科技有限公司
央行互联网金融科技公司
港股科技和互联网
晓花互联网科技有限公司网址
天津腾达互联网科技有限公司
广州千川互联网科技有限公司
上海乐五互联网科技有限公司
互联网科技创新方面的资料