【JZOJ 3737】挖宝藏

C语言编写的寻宝游戏源代码(探宝游戏源代码) C语言编写的寻宝游戏源代码(探宝游戏源代码)不是经典我不发,相信我好了 立即下载

Description

这里写图片描述

Solution

这题是关于斯坦纳树的;
先来考虑一下当h=1的情况:
我们发现,最后的答案构建出来一定是一颗树,
那么就设DP方程:fx,y,S表示以x,y这个点为根的树联通了集合S的点,
那么它可以由以下的数转移过来:(a为代价)

min(fx−1,y,S,fx+1,y,S,fx,y−1,S,fx,y+1,S,)

min{fx,y,S′+fx,y,S−S′−ax,y(S′∈S)}

从小到大枚举S,对于每一个位置,更新完以后用SPFA更新其它点,

当h>1时,可以在压缩状态时多压缩一位,表示有没有从上一层转移过来

复杂度:枚举子集的复杂度是:S=∑ji=12j∗Cij
O(hnm∗(S+SPFA))

Code

标称SB的用了两个数组而不是多用一个二进制QAQ,辣鸡

#include <cstdio>
#include <cstdlib>
#include <cstring>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define OK(q,w) ((q)>0&&(w)>0&&(q)<=n&&(w)<=m)
#define min(q,w) ((q)<(w)?(q):(w))
using namespace std;
const int N=12,M=1025;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n,h,m1,ans,FAIL;
int a[N][N][N];
int b[N][N];
int er[11];
int f[N][N][M][2],F[N][N];
int d[M*M][3];
bool z[N][N][2];
int FX[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
void SPFA(int e,int I)
{
    int S=1,T=0;
    fo(i,1,n)fo(j,1,m)fo(k,0,1)if(f[i][j][e][k]<FAIL)d[++T][0]=i,d[T][1]=j,d[T][2]=k,z[i][j][k]=1;
    int q,w,t;
    while(S<=T)
    {
        q=d[S][0],w=d[S][1],t=d[S][2];
        fo(k,0,3)if(OK(q+FX[k][0],w+FX[k][1]))
        {
            int q1=q+FX[k][0],w1=w+FX[k][1];
            if(f[q1][w1][e][t]>f[q][w][e][t]+a[I][q1][w1])
            {
                f[q1][w1][e][t]=f[q][w][e][t]+a[I][q1][w1];
                if(!z[q1][w1][t])z[q1][w1][t]=1,d[++T][0]=q1,d[T][1]=w1,d[T][2]=t;
            }
            if(!t)if(f[q1][w1][e][1]>f[q][w][e][t]+a[I][q1][w1]+F[q1][w1])
            {
                f[q1][w1][e][1]=f[q][w][e][t]+a[I][q1][w1]+F[q1][w1];
                if(!z[q1][w1][1])z[q1][w1][t]=1,d[++T][0]=q1,d[T][1]=w1,d[T][2]=1;
            }
        }
        z[q][w][t]=0; 
        S++;
    }
}
void ss(int q,int w,int x,int y,int e,int I)
{
    f[x][y][e][0]=min(f[x][y][e][0],f[x][y][w][0]+f[x][y][e-w][0]-a[I][x][y]);
    f[x][y][e][1]=min(f[x][y][e][1],f[x][y][w][1]+f[x][y][e-w][0]-a[I][x][y]);
    f[x][y][e][1]=min(f[x][y][e][1],f[x][y][w][0]+f[x][y][e-w][1]-a[I][x][y]);
    fo(i,q,m1)if(er[i]&e)ss(i+1,w+er[i],x,y,e,I);
}
int main()
{
    freopen("treasure.in","r",stdin);
    freopen("treasure.out","w",stdout);
    er[1]=1;fo(i,2,10)er[i]=er[i-1]<<1;
    int q,w,e;
    read(h),read(n),read(m);
    fo(i,1,h)fo(j,1,n)fo(k,1,m)read(a[i][j][k]);
    fo(I,1,h)
    {
        fo(i,1,n)fo(j,1,m)b[i][j]=0;
        read(m1);
        fo(i,1,m1)
        {
            read(q),read(w);
            b[q][w]=er[i];
        }
        memset(f,60,sizeof(f));
        FAIL=f[0][0][0][0];
        fo(i,1,n)fo(j,1,m)f[i][j][b[i][j]][1]=F[i][j]+a[I][i][j],f[i][j][b[i][j]][0]=a[I][i][j];
        fo(k,0,er[m1+1]-1)
        {
            fo(i,1,n)fo(j,1,m)ss(1,0,i,j,k,I);
            SPFA(k,I);
        }
        fo(i,1,n)fo(j,1,m)F[i][j]=f[i][j][er[m1+1]-1][1];
    }
    ans=1e9;
    fo(i,1,n)fo(j,1,m)ans=min(ans,F[i][j]);
    printf("%d\n",ans);
    return 0;
}
手把手教你安装 Vivado2022.2(附安装包) Vivado 2022.2版本与之前的版本相比,具有以下几个显著的优势:电源设计管理器(PDM):Vivado 2022.2引入了全新的电源设计管理器(PDM),这是一个下一代功耗评估平台,为Versal® 和 Kria™ SOM提供了准确一致的功耗估计能力。PDM是Versal产品家族的首选功耗评估工具,为Versal ACAP硬IP块提供增强向导,简化从XPE向PDM的迁移,帮助用户获得准确的功耗评估。 阅读详情

相关推荐

LangChain + PlayWright实战:5分钟搞定网页自动化测试(附完整代码)

本文详细介绍了如何利用LangChain与PlayWright构建智能网页自动化测试系统。通过环境配置、核心架构设计、实战Agent构建及性能优化等步骤,开发者可以快速实现高效的Web操作自动化,提升测试效率。文章还提供了完整代码示例和典型问题解决方案。

weixin_27791839的博客 239

JZOJ 3737. 【NOI2014模拟7.11】挖宝藏(treasure)

DescriptionInputOutput输出一个整数,为矿工获得所有宝藏的最小代价。Sample Input2 2 2 10 9 10 10 10 1 10 10 1 1 1 1 2 2Sample Output30Data Constraint分析h = 1 时,问题与 WC2008 的游览计划完全相同。用经典的连通性状 态压缩动态规划可以解决,但代码较繁琐。 注意到连通块是树状的

ypxrain的博客 409

[SDIO] SD card 初始化及常用命令解析(附波形,uboot代码)

目录 初始化 1.cmd 0 2.cmd8 3.cmd55 4.acmd41 5.cmd2 6.cmd3 7.cmd9 8.cmd13 9.cmd7 10.ACMD51 11.CMD6 12.CMD16 13.CMD17 14.CMD18 15.CMD12 tuning CMD19 DW_SDHCI的tuning流程 初始化 1.cmd 0 /* Reset the Card */ err = mmc_go_idle(mmc...

Lenz_s_law的开发记录本 2万+

【JZOJ 省选模拟】挖宝

题目 Description 有一个挖宝游戏,它在一棵 n 个点的树上进行,宝藏埋在某个未知的点 ????。每次挖掘一个点 u,玩家得到的反馈信息是一个数值 d, 表示 u 号点到 ???? 号点简单路径上的边数。这个游戏会进行 q 次,每次游戏藏宝的位置不一定相同。 你作为一名优秀的 ????????er,对自己无比自信。你希望用最少的挖掘次数来找出宝藏。于是你挑了两个不同的点 a,b 进行挖掘,并得 到了反馈信息,分...

Brute♂force 674

2024年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

他尝试编写了如下程序,请你完善划线处的代码,计算出在h点s分放学时,三个时针分别经过3点位置的次数,用一个元组表示各指针经过3点位置的次数 (时针次数,分针次数,秒针次数) ,并输出。所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。匿名函数,冒号之前表示的是这个函数的参数,冒号之后表示返回值,可以使用默认值,使用时需要将它赋值给一个变量,设置默认值不是必须,如无传入实参则使用默认值,如有传入实参则使用实参。

人生就是一个不断学习的过程 370

【Scratch考级100图】图01-等级考试scratch绘 画正方形

一、案例介绍 小朋友们应该在数学课或者平时生活中有了解过正方形,正方形在我们生活中到处可见,那我们如果通过Scratch软件来绘制一个正方形呢,我们一起来学习一下吧,在舞台正中央绘制一个边长为200的正方形,要求: 1、围绕舞台中心绘制正多边形,均匀分布在四个象限中 2、正方形边长为200个单位,线条粗细、颜色自定 3、利用画笔绘制正方形,不能有多余的线条 二、案例演示 【Scratch案例演示】Scratch图1-画正方形 三、案例分析 当我们点击小绿旗启动程序后,舞台上会出现一个画

青少年编程学习指导 2670

【NOIP模拟】挖宝藏

题面 Description 小明是一位探险家,可惜一次探险摔断了腿,但这也阻止不了他探险,他发明了一个传送神器。假设小明在点(a,b),神器的传送值为(x,y),那么小明可以选择传送到(a+x,b+y),(a+x,b-y),(a-x,b+y),(a-x,b-y)中的一个,已知宝藏在点(c,d),小明想知道他能否找到宝藏。 Input 第一行一个整数T,表示...

Ashley_2013的博客 266

Modelsim:LPDDR5仿真(含美光仿真模型官方sv&vcs代码)

虽然,三星在设计跟量产上,早于其他家存储产商,但是镁光后来居上了,是业界首家支持全速 LPDDR5 的供应商,并且开发者在做开发的时候,也是用美光颗粒比较多,所以这里就先以美光的仿真模型为主进行仿真。 本工程为美光官方工程,支持Modelsim、VCS、ncverilog三种仿真器仿真。模型破解过,为完整system-verilog代码。

千歌叹尽执夏的博客 1283

收集宝藏

家里的网出问题了 只能吧博客写好一起在别人家发表 Description 有一个n*n的矩阵,矩阵每个格子中都有一些宝藏,从左上角(1, 1)出发,每次只能向下或者向右移动一格,已知每个格子中宝藏的价值,求走到右下角(n, n)时能收集到的宝藏的总最大价值。 Input 第一行为一个整数n(1 Output 一个整数,表示能收集到的宝藏的最大总价值。 Sample Input 4

u012516734的专栏 590

Unity大世界流式加载:工业级架构与优化秘籍

游戏大厂Unity大世界流式加载框架全景解析:从《原神》《和平精英》等标杆案例出发,深入剖析工业级流式加载的完整技术架构。文章系统介绍了大世界分区块管理、异步加载机制、资源优化策略、多平台适配方案,以及业务联动与团队协作流程。重点阐述了Addressable与AssetBundle应用、空间触发器设计、性能自适应等核心技术,并展望AI预测加载、云游戏等未来方向。全面展现了大厂如何通过流式加载技术实现无缝开放世界体验的技术路径与实践经验。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 607

用 OP-TEE 给 AI 模型“上锁”:密文存储、TEE 解密放行、推理后销毁(实战可落地)

本文提出一种基于OP-TEE的AI模型保护方案,通过两级密钥体系确保模型静态存储为密文,运行时仅在TEE内解密。方案采用KEK+DEK架构,DEK永不出TEE,支持分块解密与可验证擦除。该方案能有效防御静态分析、应用层逆向等威胁,但需承认其物理级攻击的局限性。文章详细描述了端到端架构、文件格式设计及TA实现要点,包括密钥管理、分块解密策略和销毁机制,为设备侧AI部署提供了工程可行的安全解决方案。

Interview_TC的博客 289

JZOJ3737 挖宝藏(treasure)

题目Description Input Sample Input2 2 210 910 1010 110 101 1 11 2 2 Output输出一个整数,为矿工获得所有宝藏的最小代价。 Sample Output30 Data Constraint 题解首先这题h等于1的情况即WC2008游览计划,是有后效性的dp,我们考虑状压+spfa松弛解决 然后这题多了一个层数,我们在把

Marcus 714

微信小程序 - 最新图片组拖拽排序更换位置功能,类似微信朋友圈九宫格图片的拖动排序效果,微信小程序实现九宫格图片拖拽调换位置,小程序详细实现图像拖曳拖动切换位置排序功能(详细示例代码,一键复制开箱即用

微信小程序,wechat,小程序,图片排序,图像排序,九宫格拖拽排序,拖曳,拖动,拖拽,仿微信朋友圈,朋友圈宫格图片排序,微信朋友圈图片拖动排序效果,实现九宫格图片拖拽,图像拖拽排序组件插件,小程序实现拖拽图片切换图片位置,图片拖动互换位置,图像拖拽切换位置,九宫格图片组合拖动排序,交换九宫格图片的位置,小程序上传图片后,如何实现拖拽排序功能,小程序怎么实现图片拖拽排序,微信小程序图片上传,九宫格拖拽组件,选择图片并拖动_微信小程序图片拖拽,微信小程序长按拖拽排序,图像的拖拽移动,多图拖拽排序功能,实现九宫

✅ 精选推荐文章 4453

JZOJ 3737.挖宝藏【斯坦纳树】【dp】

斯坦纳树又是什么鬼呀

qq_35786326的博客 203

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[状压dp][spfa] Jzoj P3737 挖宝藏

Description 题解 我们可以发现宝藏数最多只会有9个,显然可以状压 而且数据这么小,就可以愉快 考虑dp,设f[i][j][k][s]表示在第i层(i,j)宝藏集合的状态为s 状态转移方程就是f[i][j][k][s]=min(f[i][j][k][s1]+f[i][j][s-s1]-a[x][y])(s包含s1) 还有向四个方向拓展,可以用spf...

weixin_30456039的博客 167

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

[状压DP]JZOJ 3737 挖宝藏(treasure)

Description Input Output 输出一个整数,为矿工获得所有宝藏的最小代价。 Sample Input 2 2 2 10 9 10 10 10 1 10 10 1 1 1 1 2 2 Sample Output 30 Data Constra...

weixin_30824479的博客 142

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JZOJ3737. 【NOI2014模拟7.11】挖宝藏(treasure)

斯坦纳树入门 对于H=1的情况,就是【WC2008】游览计划。 用斯坦纳树的普通转移,SPFA时四联通转移即可。 COPY点东西过来(方程,第一个是普通转移,后四个是SPFA转移) 没错,你会发现你已经切掉了H=1的情况! H>1怎么办?XJB的办呗! 发现每一层的转移互不影响,可以考虑新开一个“超级宝藏”在x+1层,在x层时当宝藏(包括“超级宝藏”)选完时,直接转移到x+1层的超级“超...

wangyuda123456789的博客 289

【JZOJ3737】【NOI2014模拟7.11】挖宝藏(treasure)

DescriptionData ConstraintSolution这道题和WinterCamp 2008 游览计划很像。 由于最终每一层挖出来的路径一定是一棵树的形态,我们设出状态f[h,x,y,S]表示第h层以(x,y)为根构出的一棵树包含的宝藏状态为S的最小花费。由于每一层的状态互不影响,我就用f[x,y,S]替代f[h,x,y,S]来讲。 我们可以倒着从最底层往上层做。 我们先对所

dance in th dark的博客 532

jzoj3737-[NOI2014模拟7.11]挖宝藏(treasure)【斯坦纳树,SPFA,状压】

正题 题目大意 hhh层,每层n∗mn*mn∗m个石头,挖开不同位置的石头有不同的消耗,只能从高层下到低层。有一些宝藏,求拿到所有宝藏的最小代价。 解题思路 先考虑只有111层的情况,因为挖开的不用再挖 ,我们可以发现本题就是一个斯坦纳树,我们用SSS状压宝藏的拿取情况。 然后有动态转移方程 fS,x,y={fS′,x,y+fS−S′,x,y−ax,y(S′∈S)fS,x−1,y+ax,yfS...

QuantAsk 533

Jzoj P3737 挖宝藏___斯坦纳树+spfa+状压dp

题目大意: 分析: 发现很像斯坦纳树, 设fk,i,j,sf_{k,i,j,s}fk,i,j,s​ 表示挖的宝藏状态为s,斯坦纳树上包含点(k,i,j)(k,i,j)(k,i,j)时的最小花费 考虑转移 做到了第kkk层, 我们枚举这层的宝藏的挖的状态,从小到大, 当前枚举到了状态s, 对于每个点我们先看之前的状态能否更新它,即 fk,i,j,s=min(fk,i,j,s,fk,i,j,s′+...

生如夏花之绚烂 524

2019.08.10【NOIP提高组】模拟 A 组

解题报告JZOJ 3736 数学题题目分析代码JZOJ 3737 挖宝藏题目分析代码JZOJ 3738 理想城市 IOI 2012 Ideal City题目分析代码 JZOJ 3736 数学题 题目 分析 代码 #include <cstdio> #include <cctype> #define rr register #define swap(a,b) (a^...

lemondinosaur的博客 417

JZOJ 2019.08.10【NOIP提高组】模拟 A 组题目

@toc 3736.数学题 3737.挖宝藏 3738.理想城市

qq_35786326的博客 328

【jzoj3737】【挖宝藏】【斯坦纳树】【状态压缩动态规划】

题目大意解题思路每层单独考虑,就是平面图的最小生成树,斯坦纳树。设F[i][j][s]表示当前在(i,j)目标点的选取情况为s的最小花费,观察可知当前状态可以由邻近节点走一步得来,也可以由当前节点s的两个子状态得来,注意减去重复的当前点的花费。我们可以枚举s,先更新所有点s的答案,再通过spfa更新其他点的答案。对于多层,考虑先把下一层解决,把下一层当作一个目标点加在当前层上,每个点都要这样做,这样

inklutcuah’s blog 620

【JZOJ3737】【NOI2014模拟7.11】挖宝藏(treasure) 状压DP+斯坦纳树+SPFA

任务 解法考虑二维时的情况, 可以发现是对指定点的最小生成树,被称为斯坦纳树 注意到点数很少, 我们可以利用状态压缩Dp求解。 设f[i][j][s]f[i][j][s]表示,以(i,j)(i,j)为根,连通状态为ss的最小代价。 显然有, f[i][j][s]={f[i][j][s′]+f[i][j][s−s′],f[i′][j′][s]+a[i][j],s′⊂s(i′,j′)与(i

=w= 523

欢乐纪中A组赛【2019.8.10】

前言 昨天: MdMdMd今天还真爆零了 顺便%%%ZZY Rank1\%\%\%ZZY\ Rank1%%%ZZY Rank1 成绩 JJJ表示初中,HHH表示高中后面加的是几年级 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 111 (H−1)ZZY(H-1)ZZY(H−1)ZZY 1...

QuantAsk 519

斯坦纳树入门

斯坦纳树可以解决下面的问题 给定一个带权无向图和某些关键点,求一棵最小生成树(必须满足所有关键节点都在此树上) 考虑使用状压DP求解 f[i][s]表示以i为根节点的树中选择关键点的状态为s(状压) 枚举一个t(t|s==s),f[i][s]=min(f[i][s],f[i][t]+f[i][s-t]) val是i与son连边的代价 看起来很好理解,就是将两棵树拼成一棵新树。 还有第二种转移:f[......

wangyuda123456789的博客 675
上一篇: 【51NOD 1227】平均最小公倍数
下一篇: 【JZOJ 3738】理想城市
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值