【BZOJ】T3041 水叮当的舞步

SGM5860x高精度ADC驱动开发与SPI接口实战指南 本文详细介绍了SGM5860x高精度ADC芯片的驱动开发与SPI接口配置实战。内容涵盖芯片特性、SPI通信设置、寄存器映射、驱动初始化、数据采集处理、校准优化及调试技巧,帮助开发者快速掌握国产24位ADC的应用,提升工业测量项目的精度与稳定性。 阅读详情

题目链接:
CODEVS 2495 水叮当的舞步
BZOJ 3041: 水叮当的舞步


这是道IDA*,迭代加深+估价剪枝;

首先考虑估价函数,一般情况下我们把易于计算的操作次数的下限作为A*的估价函数,易知这道题里每次有效操作只会向外拓宽一个颜色层,那么估价函数就可以确定为剩下未被拓展的颜色层数。这个层数就是答案,这个数的下限就是剩余未探索的颜色数,道理显然。我们把一个难以确定的准确函数用一个相对严格但便于计算的估价函数替代去进行搜索,这就是A*算法的精要。一般情况下,这个函数可以设为错位个体的个数,但要相对严格以保证正确性。

其次,这道题卡常;裸的IDA*剪枝在这道题CODEVS数据上只能跑到60%,所以要考虑优化算法过程。这种题一般最先想到的都是Flood Fill算法,每一次更新状态都要 O(n2) O ( n 2 ) 的时间复杂度确定边界情况,去更新到下一个状态。但由于更新使颜色发生变化的点数量实在有限,所以我们考虑在更新的时候直接使用父亲状态的Flood Fill值,这样可以在状态更新时优化到大概 O(n) O ( n ) 的极优复杂度。

事实上,单纯地关注代码,我们会发现这个过程也需要遍历整个地图,但是它和Flood Fill的最大差别,在于它的更新操作太少,在实际运行上优势巨大。我们也可以用链表把这个过程优化到严格 O(n) O ( n ) ,但限于码力有限,这个想法我没有实现,写在这里共大家交流。
当然,这里复杂度的分析大多是我的主观臆断,若有纰漏希望指出。

最后,在回溯操作的时候,直接暴力将父亲状态的Flood Fill值回滚就可以了。至于代码为什么要有结构体写,我也不知道qwq


AC代码:

#include<bits/stdc++.h>
#define INF 1000000000
#define fair(x) (x>=1&&x<=n)
using namespace std;
int n,maxstep=0,ans=INF;
struct type{
    int tar[10];
    public: int & operator [] (const int &x) {return tar[x];}
};
struct node{
    type tar[10];
    public: type & operator [] (const int &x) {return tar[x];}
}a,b,ZERO;
int xt[4]={0,0,1,-1};
int yt[4]={1,-1,0,0};
inline int judge()
{
    register int cnt=0,col[10];
    for(register int i=0;i<10;i++)col[i]=0;
    for(register int i=1;i<=n;i++)
    for(register int j=1;j<=n;j++)
    if(b[i][j]!=1)col[a[i][j]]=1;
    for(register int i=0;i<10;i++)if(col[i])cnt++;
    return cnt;
}
void explore(int x,int y,int col)
{
    b[x][y]=1;
    for(register int i=0;i<4;i++)
    {
        register int tx=x+xt[i],ty=y+yt[i];
        if(fair(tx)&&fair(ty)&&b[tx][ty]!=1)
        {
            b[tx][ty]=2;
            if(fair(tx)&&fair(ty)&&a[tx][ty]==col)
                explore(tx,ty,col);
        }
    }
}
int fill(int col)
{
    int cnt=0;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
        if(b[i][j]==2&&a[i][j]==col)
        {
            cnt++;
            explore(i,j,col);
        }
    return cnt;
}
void dfs(int step)
{
    register int now=judge();
    if(!now){ans=step;return;}
    if(step+now>maxstep)return;
    node t=b;
    for(register int i=0;i<=5;i++)
    {
        if(ans!=INF)return;
        if(!fill(i)){continue;}
        dfs(step+1);
        b=t;
    }
}
int main()
{
    while(scanf("%d",&n)==1&&n!=0)
    {
        maxstep=0,ans=INF;b=ZERO;
        for(register int i=1;i<=n;i++)
        for(register int j=1;j<=n;j++)
        scanf("%d",&a[i][j]);
        explore(1,1,a[1][1]);
        while(ans==INF)
        {
            dfs(0);
            maxstep++;
        }
        printf("%d\n",ans);
    }
}
【Get深一度】小波分析概念1——紧支撑集是什么意思,通俗解释 最近学到小波,在仿真中也用到了紧支撑函数;紧支撑性越好,说明能量越集中;用最通俗的话来讲,紧支撑是这样的: 对于函数f(x),如果自变量x在 0附近的取值范围内,f(x)能取到 C; 而在此之外,f(x)取值为 0; 那么这个函数f(x)就是紧支 阅读详情

相关推荐

Windows下用Anaconda安装d2l库避坑指南(附PermissionError解决方案)

本文详细介绍了在Windows系统下使用Anaconda安装d2l库的完整指南,特别针对常见的PermissionError问题提供了多种解决方案。从环境准备到库安装,再到VSCode配置和数据路径处理,帮助读者顺利搭建深度学习环境并运行《动手学深度学习》的代码示例。

3a9bq4r8t2y的博客 224

[游记&题解]2019暑假中山纪中集训day1

2019暑假中山纪中集训day1 Date:Date:2019.8.1

Panda_Hu's blog 333

Ubuntu本地部署CodeX编程助手:CLI配置全指南

本地AI编程助手是当前开发者关注的核心技术趋势,指在不依赖云端API、保障代码隐私前提下,于本地环境运行具备代码理解、多语言补全与知识库检索能力的智能辅助工具。其技术原理涉及模型加载、API网关编排、向量数据库集成及系统级资源调度,关键价值在于可控性、低延迟与合规性。典型应用场景包括企业内网DevOps提效、边缘设备嵌入式开发支持,以及敏感代码场景下的离线编程增强。本文聚焦Ubuntu系统下基于CLI的手动配置路径,深入解析Ollama服务注册、Node.js版本锁定、API Key环境隔离及Qwen2.5

weixin_26804345的博客 594

水叮当的舞步(迭代搜索+A*搜索)

水叮当的舞步题目描述: 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。 为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~ 地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。 水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步,左上角的格子所在的联通块里的所有格子就会变成她选择的那种颜色。这里连通

cax1165 1231

HUAWEI华为荣耀MagicBook MateBook B D E X 13 14 16 笔记本MateStation台式机原装Win10出厂Windows11系统

HUAWEI华为MateBookX原装出厂系统恢复原厂系统,型号:MACHC-WAE9LP、EUL-W29P、MACHR-W19L、MACHR-W29、MACHD-WFE9、MRGF-16、MACHR-W19BL、MACHD-WFE9Q、WT-W19、Mach-W19、Mach-W29、WT-W09、WT-W19、MACH-W29等。HUAWEI华为MateBookE原装出厂系统恢复原厂系统,型号:PAK-AL09、GK-W7X、GK-G58、GK-W76、DRC-W76等。

QQ17855069的博客 17万+

深入解析BlueZ5与D-Bus:Linux蓝牙开发实战指南

本文深入解析BlueZ5与D-Bus在Linux蓝牙开发中的核心应用,提供从环境搭建到实战开发的完整指南。通过详细代码示例和调试技巧,帮助开发者掌握蓝牙协议栈与D-Bus接口的交互方法,实现高效蓝牙设备管理与GATT服务开发。

weixin_28292761的博客 450

【NOIP2013模拟】水叮当的舞步

Description给出一个N*N的网格,每个格子有它的颜色0~5。 每一次你可以选择一个颜色,然后把左上角的格子所在的联通块里的所有格子变成选择的那种颜色。这里的联通是指两个格子有公共边,并且颜色相同。 现在想问,最少需要多少次操作,才会使所有格子的颜色相同。 N<=8,数据组数<=20Solution玄学暴力题,各种无脑优化。 考虑到答案不会特别大,可以使用迭代加深。 设一个估价函数

时光真疯狂, 我一路执迷于匆忙. 841

KVM — 与 QEMU 和 Libvirt 的关系

目录目录 前言 KVM QEMU KVM 与 QEMU qemu-kvm Libvirt Libvirt 在 OpenStack 中的应用前言如果是刚开始接触虚拟机技术的话, 对上述的概念肯定会有所混淆, 傻傻的分不清. 尤其在看虚拟化技术文档时导致理解能力下降, 所以在开始学习虚拟化技术之前对这些概念有一个整体的认识和清晰的理解, 就显得很有必要了.KVMKVM(Kernel-basedVirtu

烟云的计算 5737

[NOIP2013模拟]水叮当的舞步(暴力,IDA*)

中山纪中NOIP2019提高组模拟赛 A组 day1 T1 Date:2019.8.1

Panda_Hu's blog 242

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 281

【入门AUTOSAR网络管理测试】AUTOSAR网络管理规范需求解读

AUTOSARAutomotive Open System Architecture,汽车开放系统架构,由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立,致力于制定汽车电子软件标准的联盟。网络管理网络管理的目的是使网络中的ECU节点有序的睡眠和唤醒。在没有通信需求的时候睡眠,在需要通信的时候唤醒,可以节约汽车电池的电量。

测试领域技术分享 5164

【JZOJ3422】水叮当的舞步

description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。 为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~ 地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。 水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步,地毯左上角的格子所在的联通块里的所有格子就会变成她选择的那种颜色。这里连通定...

路人黑的纸巾 391

31、摩擦学中的材料选择

本博文深入探讨了摩擦学应用中材料选择的重要性,分析了材料的机械、物理和化学属性对摩擦学性能的影响。同时介绍了材料匹配原则、处理方法及表面涂层技术,以优化耐磨性和抗腐蚀性。通过实际案例和评估方法,为读者提供了系统化的材料选择流程和决策依据。

juice的博客 246

BZOJ P3041水叮当的舞步

直接IDA* 枚举上限步数 然后爆搜 每一次爆搜都用A*减一下枝 然后估价函数的话就是目前还未被加进联通块的毯子的颜色数 好了

mdnd1234的博客 456

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[codevs2495]水叮当的舞步

[codevs2495]水叮当的舞步 试题描述   水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。  为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~   地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。  水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步,左上角的格子所在的联通块里的所...

weixin_30439131的博客 154

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ 4007

https://blog.youkuaiyun.com/acerandaker/article/details/79888320 背景 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。 为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~ 描述 地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。 水叮当可以随意选择一个...

一只菜鸟夹 383

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

codevs2495 水叮当的舞步(IDA*)

2495 水叮当的舞步 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 钻石 Diamond 题目描述Description   水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。  为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的...

weixin_30711917的博客 157

bzoj 3041: 水叮当的舞步 迭代加深搜索 && NOIP RP++

3041: 水叮当的舞步 Time Limit:10 SecMemory Limit:128 MBSubmit:72Solved:44[Submit][Status] Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~地...

alex151194310的博客 244

【bzoj3041】水叮当的舞步

Description水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。 为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~ 地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。 水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步,左上角的格子所在的联通块里的所有格子就会变成她选择的那种颜色。这里连通定义

wang_sj的博客 412

[JZOJ3422]【NOIP2013模拟】水叮当的舞步

Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。 为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~ 地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。 水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步,地毯左上角的格子所在的联通块里的所有格子就会

Never give in. 551

【wikioi】2495 水叮当的舞步(IDA*)

http://wikioi.com/problem/2495/ 这题我还是看题解啊囧。(搜索实在太弱。完全没想到A*,还有看题的时候想错了,。,- -) 好吧,估价还是那么的简单,判断颜色不同的数目即可(左上角的联通块不算在内) 然后A*还是一样的做法。 迭代加深还是一样的味道~ 在这里我们用c[i][j]来表示左上角开始的联通块和联通块外面一层(因为要从外面一层拓展颜色...

176

【IDA*】codevs 2495:水叮当的舞步

2495 水叮当的舞步    题目描述Description   水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。  为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~   地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。  水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步,左上角的...

weixin_30500105的博客 178

[JZOJ 3422] 水叮当的舞步

Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。 为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~ 地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。 水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步,地毯左上角的格子所在的联通块里的所有格子就会变成她选择的那种颜色。这里连通

LYD729 750

水叮当的舞步

【题目描述】 地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步,左上角的格子所在的联通块里的所有格子就会变成她选择的那种颜色。这里连通定义为:两个格子有公共边,并且颜色相同。水叮当想知道最少要多少步才能把所有格子的颜色变成一样的。 【输入描述】 每个测试点包含多组数据。每组数据的第一行是一个整数N,...

weixin_30443731的博客 208

CodeVS2495 水叮当的舞步

标签:IDA* 题目 题目传送门 题目描述 Description   水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。   为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~   地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。   水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步

Welcome to yjjr's blog! 396

【JZOJ】3422. 水叮当的舞步

Description Time Limits: 1000 ms Memory Limits: 262144 KB 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变。 为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~ 地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。 水叮当可以随意选择一个0~5之间的颜色,然...

TL的博客 328
上一篇: 【BZOJ】T1085 骑士精神
coldhac
博客等级 码龄10年 4粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值