bzoj2595: [Wc2008]游览计划

Hodgkin-Huxley Model 介绍了经典的动力学模型:HH Model 阅读详情

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2595

思路:斯坦纳树

斯坦纳树问题就是给你n个点的图,点或边上有权值,有k个点是关键点

求使k个关键点联通且权值和最小的方案

我们知道最后的结果一定是一棵树

DP状态就是f[i][j]表示以i为根,关键点联通性为j(一个二进制数,1为已联通,0为未联通)

那么转移有两种

枚举子集,把两个子集合并:f[i][j]=f[i][s]+f[i][j-s](s属于j)

扩展出一个点,f[i][j]=min(f[v][j]+val(v,i))

第一种可以很好的转移

第二种可能会有环,拿个spfa跑一跑就好了


这题权值在点上,所以第一种转移时该点权值重复算了一次,要减去

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
const int maxn=11,maxk=11,maxq=105;
const int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
using namespace std;
int n,m,K,head,tail,cnt,pw[maxk+5],w[maxk],q[maxq+10],f[maxn][maxn][1<<maxk],pre[maxn][maxn][1<<maxk],a[maxn][maxn],inf;
bool bo[maxn][maxn],vis[maxn][maxn];
inline bool in(int x,int y){return x>=0&&x<n&&y>=0&&y<m;}
inline int id(int x,int y){return x*10+y;}
inline int id2(int x,int y,int s){return s*100+x*10+y;}
inline void decode(int sta,int &x,int &y){x=sta/10,y=sta%10;}
inline void decode2(int sta,int &x,int &y,int &s){s=sta/100,x=sta%100/10,y=sta%10;}
 
void init(){
    pw[0]=1;for (int i=1;i<=11;i++) pw[i]=pw[i-1]<<1;
    scanf("%d%d",&n,&m);
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++){
            scanf("%d",&a[i][j]);
            if (!a[i][j]) w[K++]=id(i,j);
        }
}
 
void spfa(int s){
    //printf("s=%d\n",s);
    while (head!=tail){
        if (++head>maxq) head=1;
        int sta=q[head],x,y;
        decode(sta,x,y);
        //printf("x=%d y=%d\n",x,y);
        for (int i=0;i<4;i++){
            int nx=x+dx[i],ny=y+dy[i];
            if (!in(nx,ny)) continue;//printf("nx=%d ny=%d\n",nx,ny);
            if (f[nx][ny][s]>f[x][y][s]+a[nx][ny]){
                f[nx][ny][s]=f[x][y][s]+a[nx][ny];
                //printf("ffffffffffffffffffffffffffffff=%d\n",f[nx][ny][s]);
                pre[nx][ny][s]=id2(x,y,s);
                if (!bo[nx][ny]){
                    if (++tail>maxq) tail=1;
                    bo[nx][ny]=1,q[tail]=id(nx,ny);
                }
            }
        }
        bo[x][y]=0;
    }
}
 
void dfs(int i,int s){
    int x,y,nx,ny,t;
    decode(i,x,y);
    //printf("x=%d y=%d s=%d\n",x,y,s);
    vis[x][y]=1;
     
    if (!pre[x][y][s]) return;
    //printf("%d %d\n",id2(x,y,s),pre[x][y][s]);
    decode2(pre[x][y][s],nx,ny,t);
    //printf("px=%d py=%d pt=%d\n",nx,ny,t);
    dfs(id(nx,ny),t);
    if (x==nx&&y==ny) dfs(id(nx,ny),s^t);
}
 
void work(){
    memset(f,63,sizeof(f)),inf=f[0][0][0];
    for (int i=0,x,y;i<K;i++){
        decode(w[i],x,y);
        f[x][y][pw[i]]=0;
    }
    for (int sta=1;sta<pw[K];sta++){
        head=tail=0;
        for (int i=0;i<n;i++)
            for (int j=0;j<m;j++){
                for (int s=sta&(sta-1);s;s=(s-1)&sta)
                    if (f[i][j][sta]>f[i][j][s]+f[i][j][sta^s]-a[i][j]){
                        f[i][j][sta]=f[i][j][s]+f[i][j][sta^s]-a[i][j];
                        pre[i][j][sta]=id2(i,j,s);
                    }
                if (f[i][j][sta]!=inf) q[++tail]=id(i,j),bo[i][j]=1;//printf("x=%d y=%d sta=%d f=%d\n",i,j,sta,f[i][j][sta]);
            }
        spfa(sta);
    }
    int x,y;
    decode(w[0],x,y);
    //printf("xx=%d yy=%d sta=%d\n",x,y,pw[K]-1);
    printf("%d\n",f[x][y][pw[K]-1]);
    int nx,ny,ns;
    decode2(pre[x][y][pw[K]-1],nx,ny,ns);
    //printf("nx=%d ny=%d ns=%d\n",nx,ny,ns);
    dfs(w[0],pw[K]-1);
    for (int i=0;i<n;i++,puts(""))
        for (int j=0;j<m;j++)
            if (!a[i][j]) putchar('x');
            else if (vis[i][j]) putchar('o');
            else putchar('_');
}
 
int main(){
    //freopen("test.in","r",stdin);freopen("test.out","w",stdout);
    init(),work();
    return 0;
}
/*
8 8
1 4 1 3 4 2 4 1
4 3 1 2 0 1 2 3
3 2 1 3 0 3 1 2
2 6 5 0 2 4 1 0
5 1 2 1 3 4 2 5
5 1 3 1 5 0 1 4
5 0 6 1 4 5 3 4
0 2 2 2 3 4 1 1
 
*/


10、高阶ΣΔ调制器设计与优化 本文深入探讨了高阶ΣΔ调制器的设计与优化技术,重点介绍了NTF零点优化方法,通过分散单位圆上的零点分布提升信噪失真比(SQNR)。文章分析了量化噪声耦合技术如何有效提高噪声整形阶数,并对比了CIFB、CIFF、CRFB和CRFF等不同架构的性能特点。同时,详细阐述了基于稳定性与性能权衡的设计流程,结合Schreier的Delta-Sigma Toolbox实现NTF综合与仿真验证。内容涵盖从理论推导到实际设计步骤,为高阶ΣΔ调制器的稳定性提升与性能优化提供了系统性指导。 阅读详情

相关推荐

戴尔PowerEdge服务器R450 RAID配置步骤

戴尔PowerEdge服务器R450 RAID配置步骤

且听风呤tmj的博客 6910

【bzoj2595】[Wc2008]游览计划 斯坦纳树

题目描述 给出一个N×M的方格图,每个格子有自己权值,权值为0的格子已被选定。现要再选定一些格子,使得所有选定的格子(包括一开始已被选定的格子)四联通,并且选定的格子的权值之和最小。输出这个最小权值及一种可行方案。 输入 第一行有两个整数,N和 M,描述方块的数目。接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为一个景点;否则表示控制该方块至少需要的志愿者...

weixin_30652271的博客 124

STM32F407+LAN8720网口不通?别慌,手把手教你用CubeMX和HAL库搞定RMII配置与调试

本文详细介绍了STM32F407与LAN8720网口不通的全面排查与解决方法,涵盖硬件检查、CubeMX配置、PHY芯片初始化和LWIP协议栈优化。通过RMII接口配置、时钟树设置和PHY芯片调试,帮助开发者快速定位并解决网络连接问题,提升嵌入式网络开发效率。

weixin_30457551的博客 506

bzoj 2595 : [Wc2008]游览计划

2595: [Wc2008]游览计划 Time Limit:10 SecMemory Limit:256 MBSecSpecial JudgeSubmit:586Solved:212[Submit][Status] Description Input 第一行有两个整数,N和 M,描述方块的数目。接下来 N行, 每行有 M 个...

weixin_30627381的博客 187

保姆级教程:用Python spatialdata框架搞定10x Xenium空间转录组数据(从下机到高级分析)

本教程详细介绍了如何使用Python spatialdata框架处理10x Xenium空间转录组数据,从数据获取到高级分析的全流程。涵盖环境配置、数据读取、质量控制、降维聚类、细胞注释及空间共定位分析等关键步骤,特别适合生物信息学研究者快速掌握Xenium数据分析技术。

weixin_30300225的博客 480

音视频入门:H264、H265概念总结

添加链接描述 什么是H.264与H.265 H.264与H.265都是视频压缩格式,由于视频本身的码流太大,所以需要经过压缩然后再通过网络进行传输。H.264是目前比较主流的压缩算法,像视频会议设备一般都采用这个编码格式。基础的H.264可以支持在1M带宽下传输720P30帧/秒的图像;H.264 HIGH PROFILE支持在512K带宽下传输720P30帧/秒的图像。 H.265是比较新的压缩算法,可以更一步提高压缩比,随着我们现在生活中出现的视频格式越来越大(比如现在基本都是1080P甚至4K的显示器

weixin_40673765的博客 8936

洛谷P4294 [WC2008]游览计划 - 斯坦纳树

题意:洛谷P4294 给定一个矩阵,问一条最小权值路径能够走遍所有景点,并输出最小权值与路径。 分析: 斯坦纳树是什么? 按照我的理解,斯坦纳树通常与状压dpdpdp和最短路联系在一起。 斯坦纳树中的状压dpdpdp分为两部分: 首先定义状态: dp[i][j]dp[i][j]dp[i][j]表示选了iii点状态为jjj的最小权值, 特别地,dp[i][1&lt;&lt;j]=0d...

Chase的博客 495

告别PXE!用iPXE在CentOS 8.5上搭建一个能同时装Win11和Linux的万能网络启动盘

本文详细介绍了如何在CentOS 8.5上使用iPXE搭建支持Windows 11和Linux双系统部署的全能网络启动盘。通过对比传统PXE的局限性,展示了iPXE在HTTP协议支持、多架构适配和智能脚本方面的优势,提供从环境准备、服务配置到智能菜单开发的完整解决方案,显著提升系统部署效率。

weixin_29278805的博客 265

洛谷P4294 【[WC2008]游览计划】

教练上次课讲了插头dp,然后列出的插头dp题目里有这道题。本来想练练插头dp的结果用更快更简单的斯坦纳树解决了这道题。 斯坦纳树经典题目。 斯坦纳树其实并不是很难,一般用来解决在一张无向图上选 \(\text{m}\)个点使这\(\text{m}\)个点连通并且始所选边边权最小。 那么回到本题。 设\(f_{i,j,s}\)表示当前在第\(\text{i}\)行\(\text{j}\)列...

dichanpan2699的博客 207

宏基因组分析|从Binning到MAG优化的全流程实战指南

本文提供了一份宏基因组分析从Binning到MAG优化的全流程实战指南。详细解析了宏基因组分箱(Binning)的核心原理与必要性,并手把手指导如何利用Bowtie2、MetaBAT2和CheckM等工具构建分箱流水线,进行质量评估与筛选,最终获得高质量宏基因组组装基因组(MAG)。文章还分享了常见问题排查与进阶优化策略,为后续物种分类、功能注释等深度分析奠定坚实基础。

weixin_29260291的博客 454

[Dify实战] 品牌舆情速览:多渠道抓取、聚类情绪、生成日报-带绑定资源

摘要: 品牌舆情监测面临多渠道信息分散、手工处理效率低的痛点。Dify舆情速览助手通过自动化流程(数据抓取→情绪聚类→日报生成)帮助快速识别热点与风险。方案核心包括: 结构化处理:按情绪(正/中/负)聚类,分级标注风险事件; 日报输出:含热点摘要、趋势分析及处置建议(动作+团队+时间窗口); 质量控制:数据去噪、黑名单过滤,结合人工复核确保合规性。 落地需明确数据源分级(如权威媒体优先)、设置情绪阈值,并建立"发现-响应-复盘"闭环机制,提升舆情应对效率。 (字数:150)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 297

[WC2008]游览计划(状压dp)

题面太鬼畜不粘了。 题意就是给一张n*m的网格图,每个点有点权,有k个关键点,让你把这k个关键点连成一个联通快的最小代价。 题解 这题nmk都非常小,解法肯定是状压,比较一般的解法插头dp,但不太好写。 但其实这道题是裸的斯坦纳树模型。 斯坦纳树是最小生成树的变形,在一般情况下是NP问题,但在k规模较少时可以用状压dp求解。 我们可以设dp[i][j][s]表示以(i,j)为根,覆盖关...

weixin_34306446的博客 226

基于STM32单片机设计的红外测温仪(带人脸检测)_34

当前设计的这款红外非接触式测温仪由测温硬件+上位机软件组合而成,主要用在地铁、车站入口等地方,可以准确识别人脸进行测温,如果有人温度超标会进行语音提示并且保存当前人脸照片。

8769

BZOJ2595: [Wc2008]游览计划

Description Input 第一行有两个整数,N和 M,描述方块的数目。接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为一个景点;否则表示控制该方块至少需要的志愿者数目。 相邻的整数用 (若干个) 空格隔开,行首行末也可能有多余的空格。 Output 由 N + 1行组成。第一行为一个整数,表示你所给出的方案中安排的志愿...

weixin_30673611的博客 135

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

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

BZOJ 2595: [Wc2008]游览计划

斯坦纳树模板题,记录一下路径即可 //斯坦纳树,解决这一类问题:给定一张图,并给出k个点,问利用边与其它点将这k个点连接起来的最小边权和为多少,k一般为10 //一眼看状压dp,然后就想到了洛谷1171售货员的难题 好像与它差不多,看了下后天差地别,完全不一样 ,因为这题没有起点 // 开始想状态,想不出,看了很久的题解后,感觉还是懵懵的 //转移过程有点树形dp的味道,有根、子树这样的概念,但...

Love_xyh的博客 209

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【BZOJ】2595: [Wc2008]游览计划

题意 \(n * m\)的网格,如果\(a_{i, j} = 0\)则表示景点,否则表示这里的需要的志愿者人数。求一种安排志愿者的方案使得所有景点连通且志愿者最少。 分析 本题可以插头dp,然而有一个东西叫斯坦纳树,来学习学习。 令\(f(i, j, s)\)表示\((i, j)\)为根,连通性为\(s\)的最少志愿者。则有转移: $$ f(i, j, s) = min \begin{...

182

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Bzoj2595: [Wc2008]游览计划

原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=2595标算是斯坦纳树,其实类似状压dp。 首先答案一定是树形的,否则断开一条环上边,不影响连通性,答案不会变劣。 用f[x][y][s]表示以x,y为根的,经过了至少 s的景点的树,这里的s是压过的0/1表示的景点是否访问过的状态。 有两种状态转移,一种是合并两棵树f[x][y][s]:

MintGreen 458

bzoj 2595: [Wc2008]游览计划(斯坦纳树)

2595: [Wc2008]游览计划 Time Limit: 10 Sec  Memory Limit: 256 MBSec  Special Judge Submit: 1253  Solved: 574 [Submit][Status][Discuss] Description Input 第一行有两个整数,N和 M,描述方块的数目。  接下来 N行, 每行有

clover_hxy的博客 1252

BZOJ2595:[WC2008]游览计划

Description Input 第一行有两个整数,N和 M,描述方块的数目。接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为一个景点;否则表示控制该方块至少需要的志愿者数目。 相邻的整数用 (若干个) 空格隔开,行首行末也可能有多余的空格。 Output 由 N + 1行组成。第一行为一个整数,表示你所给出的...

weixin_30533797的博客 123

【BZOJ】2595: [Wc2008]游览计划-斯坦纳树&插头DP

斯坦纳树,插头DP

远行客 376
上一篇: bzoj4262: Sum
下一篇: bzoj4006: [JLOI2015]管道连接
thy_asdf
博客等级 码龄12年 16粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值