当前位置: 首页 > news >正文

http://noi.openjudge.cn/_2.5基本算法之搜索_1804:小游戏

文章目录

    • 题目
    • 深搜代码
    • 宽搜代码
    • 深搜数据
    • 演示图
    • 总结

题目

1804:小游戏
总时间限制: 1000ms 内存限制: 65536kB
描述
一天早上,你起床的时候想:“我编程序这么牛,为什么不能靠这个赚点小钱呢?”因此你决定编写一个小游戏。 游戏在一个分割成w * h个正方格子的矩形板上进行。如图所示,每个正方格子上可以有一张游戏卡片,当然也可以没有。 当下面的情况满足时,我们认为两个游戏卡片之间有一条路径相连: 路径只包含水平或者竖直的直线段。路径不能穿过别的游戏卡片。但是允许路径临时的离开矩形板。下面是一个例子:
在这里插入图片描述
这里在 (1, 3)和 (4, 4)处的游戏卡片是可以相连的。而在 (2, 3) 和 (3, 4) 处的游戏卡是不相连的,因为连接他们的每条路径都必须要穿过别的游戏卡片。 你现在要在小游戏里面判断是否存在一条满足题意的路径能连接给定的两个游戏卡片。
输入
输入包括多组数据(不多于10组)。一个矩形板对应一组数据。每组数据包括的第一行包括两个整数w和h (1 <= w, h <= 75),分别表示矩形板的宽度和长度。下面的h行,每行包括w个字符,表示矩形板上的游戏卡片分布情况。使用‘X’表示这个地方有一个游戏卡片;使用空格表示这个地方没有游戏卡片。
之后的若干行上每行上包括4个整数x1, y1, x2, y2 (1 <= x1, x2 <= w, 1 <= y1, y2 <= h)。给出两个卡片在矩形板上的位置(注意:矩形板左上角的坐标是(1, 1))。输入保证这两个游戏卡片所处的位置是不相同的。如果一行上有4个0,表示这组测试数据的结束。
如果一行上给出w = h = 0,那么表示所有的输入结束了。
输出
对每一个矩形板,输出一行“Board #n:”,这里n是输入数据的编号。然后对每一组需要测试的游戏卡片输出一行。这一行的开头是“Pair m: ”,这里m是测试卡片的编号(对每个矩形板,编号都从1开始)。接下来,如果可以相连,找到连接这两个卡片的所有路径中包括线段数最少的路径,输出“k segments.”,这里k是找到的最优路径中包括的线段的数目;如果不能相连,输出“impossible.”。
每组数据之后输出一个空行。
样例输入
5 4
XXXXX
X X
XXX X
XXX
2 3 5 3
1 3 4 4
2 3 3 4
0 0 0 0
0 0
样例输出
Board #1:
Pair 1: 4 segments.
Pair 2: 3 segments.
Pair 3: impossible.

深搜代码

#include <bits/stdc++.h>
using namespace std;
struct point{int x,y,//出发行列 d,//方向 num;//线段数 
};
bool k[100][100];//标记是不是牌, 
int r,c,//地图行列 sx,sy,tx,ty, //始发和终点位置 d[4][2]={{0,-1},{-1,0},{0,1},{1,0}},//左上右下四个方向的行列变化 num[100][100];//每个点四个方向的最少线段数,要逐个逐方向更新更小值。
void view(bool k[][100]){cout<<"地图\n";cout<<" 列\t";for(int j=0;j<=c+1;j++)cout<<j<<"";cout<<endl;for(int i=0;i<=r+1;i++){cout<<i<<"行\t";for(int j=0;j<=c+1;j++)cout<<(k[i][j]?'X':' ')<<"";cout<<endl;}	
}
void view(int k[][100],int ans){cout<<"最少线段数"<<ans<<endl;cout<<" 列\t";for(int j=0;j<=c+1;j++)cout<<j<<"";cout<<endl;for(int i=0;i<=r+1;i++){cout<<i<<"行\t";for(int j=0;j<=c+1;j++)cout<<num[i][j]<<"";cout<<endl;}cout<<endl; 
}
void go(int x,int y,int f,int numx,int& ans){int x2,y2;for(int i=0;i<4;i++){x2=x+d[i][0],y2=y+d[i][1];if(x2<0||x2>r+1||y2<0||y2>c+1)continue;//不能越界 int cost=(i==f?numx:numx+1);if(cost>=ans)continue;//剪枝,超过最少线段数的线路不用考虑 if(x2==tx&&y2==ty){ans=min(ans,cost);//cout<<"OK"<<endl;view(num,ans);return;}if(k[x2][y2]||num[x2][y2])continue;//如果是牌不能穿越 num[x2][y2]=cost;//标记,并记住步数go(x2,y2,i,cost,ans); num[x2][y2]=0;//回溯 }
}
int main(){//freopen("data.cpp","r",stdin);int t1=1;while(cin>>c>>r&&(r||c)){//多组地图,全部是0才结束 cin.get();//消融行结束标记 memset(k,0,sizeof(k));//初始化整个地图,0是可以走 char cx;//地图字符 for(int i=1;i<=r;i++){for(int j=1;j<=c;j++){cx=cin.get();k[i][j]=(cx=='X'?1:0);//卡片不能走 }cin.get();//消融行结束标记}cout<<"Board #"<<t1++<<":\n";//输出组信息int t2=1,x,y,//出发行列 x2,y2;//到达行列 while(cin>>sy>>sx>>ty>>tx&&(sx||sy||tx||ty)){//多组数据,全部是0才结束 //cout<<"出发:"<<sx<<","<<sy<<"\t"<<tx<<","<<ty<<endl;memset(num,0,sizeof(num));//各点初始化为最大值 int ans=0x3f3f3f;//0x3f=63,不够大,0x3f3f3f=4194303够了//view(k);go(sx,sy,-1,0,ans);cout<<"Pair "<<t2++<<": ";if(ans==0x3f3f3f)cout<<"impossible.\n";else cout<<ans<<" segments.\n"; }cout<<endl;//每组地图后有空行 } return 0;
}

宽搜代码

#include <bits/stdc++.h>
using namespace std;
struct point{int x,y,//出发行列 d,//方向 num;//线段数 
};
bool k[100][100];//标记是不是牌, 
int r,c,//地图行列 sx,sy,tx,ty, //始发和终点位置 d[4][2]={{0,-1},{-1,0},{0,1},{1,0}},//左上右下四个方向的行列变化 num[100][100][4];//每个点四个方向的最少线段数,要逐个逐方向更新更小值。
int main(){//freopen("data2.cpp","r",stdin);int t1=1;while(cin>>c>>r&&(r||c)){//多组地图,全部是0才结束 cin.get();//消融行结束标记 memset(k,0,sizeof(k));//初始化整个地图,0是可以走 char cx;//地图字符 for(int i=1;i<=r;i++){for(int j=1;j<=c;j++){cx=cin.get();if(cx=='X')k[i][j]=1;//k[i][j]=(cx=='X'?1:0);//卡片不能走 }cin.get();//消融行结束标记}cout<<"Board #"<<t1++<<":\n";//输出组信息int t2=1,x,y,//出发行列 x2,y2;//到达行列 while(cin>>sy>>sx>>ty>>tx&&(sx||sy||tx||ty)){//多组数据,全部是0才结束 memset(num,0x3f3f3f,sizeof(num));//各点初始化为最大值 queue<point> q;//宽搜队列 q.push(point{sx,sy,-1,0});//出发,下次方向都算不同,就会0+1多个线路for(int i=0;i<4;i++)num[sx][sy][i]=0;//出发位置各方向无线段 int ans=0x3f3f3f,//找最少线段数 cost;//中间值,存线段数变化结果 while(!q.empty()){point p=q.front();q.pop();x=p.x,y=p.y;for(int i=0;i<4;i++){//四个方向逐个尝试 x2=x+d[i][0],y2=y+d[i][1];if(x2<0||x2>r+1||y2<0||y2>c+1)continue;//出界 cost=(p.d==i?p.num:p.num+1);//方向一样线段数不变,否则多条线段 if(x2==tx&&y2==ty){//到达目标 if(num[x2][y2][i]>cost)num[x2][y2][i]=cost;ans=min(ans,cost);//更新最终最少线段数 }if(k[x2][y2])continue;//不能穿越牌if(num[x2][y2][i]>cost){//更少的线段数才更新并出发。 num[x2][y2][i]=cost;//更新该点i方向上的最少线段数 q.push(point{x2,y2,i,cost});//从新达点出发 }}}cout<<"Pair "<<t2++<<": ";if(ans==0x3f3f3f)cout<<"impossible.\n";else cout<<ans<<" segments.\n"; }cout<<endl;//每组地图后有空行 } return 0;
}

深搜数据

地图列     01234567
01行       XXXX
2行         XX
3行      XX  X
4行      XXX  X
5行
Board #1:
出发:3,1       4,6
地图列     01234567
01行       XXXX
2行         XX
3行      XX  X
4行      XXX  X
5行
OK
最少线段数1001234567
023333333
120000054
220000067
310000098
400000000
500000000OK
最少线段数901234567
023333333
120000054
220000067
310000008
400000008
500000000OK
最少线段数601234567
023333333
120000054
220000060
310000060
400000000
500000000OK
最少线段数501234567
023333333
120000004
220000004
310000004
400000004
500000000OK
最少线段数401234567
023333330
120000040
220000040
310000040
400000000
500000000OK
最少线段数301234567
001222220
101000030
201000030
300000030
400000000
500000000Pair 1: 3 segments.

演示图

在这里插入图片描述

总结

1.问的不是步数,而是线段数
2.出发到到达方向一样,是一条线段,
不一样是两条线段
所以出发位置得带方向
3.宽搜,从不同方向到达该点,用更少线段数更新。不少不更新
例:短距离多线段,上2右1下1右1下1左2可达目标,是6线段
长距离少线段,上2右2下2左2,是4线段
4.数组得初始化。
如果用字符数组表示地图,外延得初始化,否则有可能是’X’,不能通过。
5.从大开始找最小,
初始化整型数组(各点最少线段数num[100][100][4]),可以用 memset(num,0X3f3f3f,sizeof(num))
十六进制0X3f=整数63,不够大.
十六进制0X3f3f3f=整数4194303.
再大就得逐一赋值。
6.深搜就是尝试所有的情况,关键就是剪

相关文章:

http://noi.openjudge.cn/_2.5基本算法之搜索_1804:小游戏

文章目录 题目深搜代码宽搜代码深搜数据演示图总结 题目 1804:小游戏 总时间限制: 1000ms 内存限制: 65536kB 描述 一天早上&#xff0c;你起床的时候想&#xff1a;“我编程序这么牛&#xff0c;为什么不能靠这个赚点小钱呢&#xff1f;”因此你决定编写一个小游戏。 游戏在一…...

Windows Flip PDF Plus Corporate PDF翻页工具

软件介绍 Flip PDF Plus Corporate是一款功能强大的PDF翻页工具&#xff0c;也被称为名编辑电子杂志大师。这款软件能够迅速将PDF文件转换为具有翻页动画效果的电子书&#xff0c;同时保留原始的超链接和书签。无论是相册、视频、音频&#xff0c;还是Flash、视频和链接&#…...

Java八股文-List

集合的底层是否加锁也就代表是否线程安全 (一)List集合 一、数组 array[1]是如何通过索引找到堆内存中对应的这块数据的呢? (1)数组如何获取其他元素的地址值 (2)为什么数组的索引是从0开始的&#xff0c;不可以从1开始吗 (3)操作数组的时间复杂度 ①查找 根据索引查询 未…...

btrfs , ext4 , jfs , xfs , zfs 对比 笔记250406

btrfs , ext4 , jfs , xfs , zfs 对比 笔记250406 特性Btrfsext4JFSXFSZFS定位现代多功能传统稳定轻量级高性能大文件企业级存储最大文件/分区16EB / 16EB16TB / 1EB4PB / 32PB8EB / 8EB16EB / 25610⁵ ZB快照✅ 支持❌ 不支持❌ 不支持❌ 不支持✅ 支持透明压缩✅ (Zstd/LZO)❌…...

Meta上新Llama 4,到底行不行?

这周AI圈被Meta的“深夜突袭”炸开了锅。 Llama 4家族带着三个新成员&#xff0c;直接杀回开源模型战场&#xff0c;连扎克伯格都亲自站台喊话&#xff1a;“我们要让全世界用上最好的AI&#xff01;” 但别急着喊“王炸”&#xff0c;先看看它到底强在哪。 这次Meta玩了个狠招…...

显示器工艺简介

华星光电显示器的生产工艺流程介绍&#xff0c;从入厂原料到生产出显示器的整体工艺介绍 华星光电显示器的生产工艺流程主要包括以下几个阶段&#xff0c;从原材料入厂到最终显示器的生产&#xff1a; 原材料准备 玻璃基板&#xff1a;显示器的核心材料&#xff0c;通常采用超…...

音乐软件Pro版!内置音源,听歌自由,一键畅享!

今天给大家介绍一款超实用的音乐软件——LX音乐Pro版。原版LX音乐需要用户自行导入音源才能正常使用&#xff0c;但此次推出的Pro版已经内置了音源&#xff0c;省去了繁琐的操作步骤&#xff0c;使用起来更加便捷 这款软件不仅支持歌曲搜索&#xff0c;还能搜索歌单&#xff0c…...

Spring 中有哪些设计模式?

&#x1f9e0; 一、Spring 中常见的设计模式 设计模式类型Spring 中的应用场景单例模式创建型默认 Bean 是单例的工厂模式创建型BeanFactory、FactoryBean抽象工厂模式创建型ApplicationContext 提供多个工厂接口代理模式结构型AOP 动态代理&#xff08;JDK/CGLIB&#xff09;…...

R语言使用ggplot2作图

在ggplot2中&#xff0c;图是采用串联起来&#xff08;&#xff09;号函数创建的。每个函数修改属于自己的部分。比如&#xff0c;ggplot()geom()...... aes(x, y, colour a,shape a,size a.......) ggplot2中画图常用的五大块内容 数据(data)及一系列将数据中的变量对应到图…...

GenerationMixin概述

类 类名简单说明GenerateDecoderOnlyOutput继承自 ModelOutput&#xff0c;适用于非束搜索方法的解码器-only模型输出类。GenerateEncoderDecoderOutput继承自 ModelOutput&#xff0c;适用于非束搜索方法的编码器-解码器模型输出类。GenerateBeamDecoderOnlyOutput继承自 Mod…...

文心快码制作微信小程序

AI时代来临&#xff0c;听说Baidu Comate也推出了自家的编程工具Zulu&#xff0c;可以从零到一帮你生成代码&#xff0c;趁着现在还免费&#xff0c;试试效果如何。这里以开发一个敲木鱼的微信小程序为例 一、需求分析 写小程序需求文档 首先&#xff0c;第一步我要准确描述…...

flutter provider状态管理使用

在 Flutter 中&#xff0c;Provider 是一个轻量级且易于使用的状态管理工具&#xff0c;它基于 InheritedWidget&#xff0c;并提供了一种高效的方式来管理和共享应用中的状态。相比其他复杂的状态管理方案&#xff08;如 Bloc 或 Riverpod&#xff09;&#xff0c;Provider 更…...

C++——静态成员

目录 静态成员的定义 静态成员变量 编程示例 存在的意义 静态成员函数 类内声明 类外定义 编程示例 静态成员的定义 静态成员在C类中是一个重要的概念&#xff0c;它包括静态成员变量和静态成员函数。静态成员的特点和存在的意义如下&#xff1a; 静态成员变量 1…...

UDP学习笔记(四)UDP 为什么大小不能超过 64KB?

&#x1f310; UDP 为什么大小不能超过 64KB&#xff1f;TCP 有这个限制吗&#xff1f; 在进行网络编程或者调试网络协议时&#xff0c;我们常常会看到一个说法&#xff1a; “UDP 最大只能发送 64KB 数据。” 这到底是怎么回事&#xff1f;这 64KB 是怎么来的&#xff1f;TCP…...

Linux中用gdb查看coredump文件

查看dump的命令&#xff1a; gdb 可执行文件 dump文件路径查看函数调用栈 (gdb)bt查看反汇编代码 (gdb)disassemble查看寄存器的值 (gdb)info all-registers如果通过上述简单命令无法排查&#xff0c;还是通过-g参数编译带符号表的可执行文件&#xff0c;再用gdb查看...

PyTorch 深度学习 || 7. Unet | Ch7.1 Unet 框架

1. Unet 框架...

LeetCode 热题 100 堆

215. 数组中的第K个最大元素 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 **k** 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 …...

LeetCode栈 155. 最小栈

设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…...

Linux系统03---文件操作时间编程

目录 文件操作 1.1 缓冲区 1.2 基于缓冲区的文件操作---高级 IO 1.3 基于非缓冲区的文件操作—低级 IO 1.3.1 文件描述符 int fd; 1.3.2 函数名&#xff1a;open() 1.3.3 函数名&#xff1a;close() 1.3.4 函数名&#xff1a;write() 1.3.5 函数名&#xff1a;read(…...

4月5日作业

需求&#xff1a; 1.按照图示的VLAN及IP地址需求&#xff0c;完成相关配置 2.要求SW 1为VLAN 2/3的主根及主网关 SW2为VLAN 20/30的主根及主网关&#xff0c;SW1和 SW2互为备份 3.可以使用super vlan 4.上层通过静态路由协议完成数据通信过程 5.AR1为企业出口路由器…...

新一代AI架构实践:数字大脑AI+智能调度MCP+领域执行APP的黄金金字塔体系

新一代AI架构实践&#xff1a;数字大脑智能调度领域执行的黄金金字塔体系 一、架构本质的三层穿透性认知 1.1 核心范式转变&#xff08;CPS理论升级&#xff09; 传统算法架构&#xff1a;数据驱动 → 特征工程 → 模型训练 → 业务应用 新一代AI架构&#xff1a;物理规律建…...

低代码开发:重塑软件开发的未来

在数字化转型的浪潮中&#xff0c;企业对软件开发的需求呈爆炸式增长。然而&#xff0c;传统软件开发模式面临着开发周期长、成本高、技术门槛高等诸多挑战。低代码开发平台&#xff08;Low-Code Development Platform&#xff09;应运而生&#xff0c;它通过可视化编程和拖拽式…...

小型园区网实验作业

拓扑搭建&#xff1a; 实验需求&#xff1a; 1、按照图示的VLAN及IP地址需求&#xff0c;完成相关配置 2、要求SW1为VLAN 2/3的主根及网关 SW2 为VLAN 20/30 的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan 4、上层通过静态路由协议完成数据通信过程 5、A…...

Gateway 网关 快速开始

一、核心概念 路由&#xff08;route) 路由是网关中最基础的部分&#xff0c;路由信息包括一个ID、一个目的URI、一组断言工厂、一组Filter组成。如果断言为真&#xff0c;则说明请求的 URL 和配置的路由匹配。 断言(predicates) 断言函数允许开发者去定义匹配 Http Request 中…...

C++中如何使用STL中的list定义一个双向链表,并且实现增、删、改、查操作

一、STL中的 list 是双向链表&#xff0c;但不是循环链表&#xff0c;通过指针访问结点数据&#xff0c;它的内存空间可以是不连续的&#xff0c;使用它能高效地进行各种操作。 二、代码 #include <bits/stdc.h> using namespace std;// 打印链表元素的函数 void print…...

shell脚本中捕获键盘中断信号trap

在 Shell 脚本中&#xff0c;可以通过 trap 命令捕获键盘中断信号&#xff08;通常是 SIGINT&#xff0c;即 CtrlC&#xff09;。以下是具体的实现方法&#xff1a; 1.使用 trap 捕获键盘中断信号 trap 命令用于捕获信号并执行相应的命令或函数。SIGINT&#xff08;信号编号为 …...

让ChatGPT用DeepReaserch指导进行学术写作

目录 ChatGPT在学术论文写作中的作用与分阶段提示词指南 1.选题阶段&#xff08;确定研究课题方向&#xff09; 2.文献综述阶段&#xff08;调研与综述已有研究&#xff09; 3.研究设计阶段&#xff08;设计研究方法与框架&#xff09; 4.撰写正文阶段&#xff08;撰写各部…...

Compose笔记(十四)--LazyColumn

这一节了解一下Compose中的LazyColumn&#xff0c;在Jetpack Compose 中&#xff0c;LazyColumn 是一个用于高效显示长列表或可滚动垂直布局的组件。它类似于传统 Android 开发中的 RecyclerView&#xff0c;但专为 Compose 的声明式 UI 框架设计&#xff0c;能够显著优化性能&…...

CNN-SE-Attention-ITCN多特征输入回归预测(Matlab完整源码和数据)

CNN-SE-Attention-ITCN多特征输入回归预测&#xff08;Matlab完整源码和数据&#xff09; 目录 CNN-SE-Attention-ITCN多特征输入回归预测&#xff08;Matlab完整源码和数据&#xff09;预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.一种适合光伏功率回归预测的高创…...

Spring Data JPA中的List底层:深入解析ArrayList的奥秘!!!

&#x1f31f; Spring Data JPA中的List底层&#xff1a;深入解析ArrayList的奥秘 &#x1f4a1; 你是否好奇过&#xff0c;为什么Spring Data JPA的查询方法返回的List<T>总是默认为ArrayList&#xff1f;本文将通过技术原理解析、验证实验和性能优化指南&#xff0c;为…...

redis高并发缓存架构与性能优化

Redlock实现原理 超过半数redis节点加锁成功才算成功加锁。 Redlock存在问题 如果主节点挂掉&#xff0c;还没有同步到从节点&#xff0c;重新选举出主节点&#xff0c;那加锁就没有加到这个新的主节点上。 如果增加redis主节点数&#xff0c;那么加锁的性能更差&#xff0c;要…...

解锁多邻国:全方位语言学习新体验

解锁多邻国&#xff1a;全方位语言学习新体验​ ​ 在数字化学习浪潮中&#xff0c;多邻国&#xff08;Duolingo&#xff09;凭借独特优势&#xff0c;成为全球超 5 亿用户的语言学习首选。这款 2012 年诞生于美国匹兹堡的应用&#xff0c;2019 年进入中国市场后&#xff0c;…...

Docker部署SeraXNG接入dify报错解决

报错&#xff1a; 设置授权 配置凭据后&#xff0c;工作区中的所有成员都可以在编排应用程序时使用此工具。 SearXNG base URL* 如何获取 PluginInvokeError: {"args":{},"error_type":"ToolProviderCredentialValidationError","message&q…...

Zookeeper的作用详解

Zookeeper作为分布式协调服务&#xff0c;在分布式系统中承担核心协调角色&#xff0c;其作用可归纳为以下核心功能模块&#xff1a; 一、分布式协调与同步 分布式锁管理 提供独占锁和共享锁&#xff0c;通过创建临时顺序节点实现锁的公平竞争。例如&#xff0c;客户端在/distr…...

高频面试题(含笔试高频算法整理)基本总结回顾34

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…...

Dify 与 n8n 对比分析:AI 应用开发与自动化工作流工具的深度比较

Dify 与 n8n 对比分析&#xff1a;AI 应用开发与自动化工作流工具的深度比较 摘要 本文对比分析了 Dify 和 n8n 两款工具的核心定位、功能特点、适用场景及技术门槛。Dify 专注于 AI 应用开发&#xff0c;适合快速搭建智能客服、知识库检索等场景&#xff1b;n8n 则定位于通用…...

Systemd构建容器化微服务集群管理系统

实训背景 你是一家云计算公司的 DevOps 工程师&#xff0c;需为某客户设计一套基于 Docker 的微服务集群管理系统&#xff0c;需求如下&#xff1a; 容器自启管理&#xff1a;确保三个服务&#xff08;webapp、api、redis&#xff09;在系统启动时自动运行。依赖顺序控制&…...

手搓多模态-04 归一化介绍

在机器学习中&#xff0c;归一化是一个非常重要的工具&#xff0c;它能帮助我们加速训练的速度。在我们前面的SiglipVisionTransformer 中&#xff0c;也有用到归一化层&#xff0c;如下代码所示&#xff1a; class SiglipVisionTransformer(nn.Module): ##视觉模型的第二层&am…...

nano 编辑器的使用

nano 编辑器的使用 1. 启动 nano2. 编辑文本3. 基本操作4. 保存和退出5. 其他常用快捷键6. 高级用法 nano 是一个简单易用的文本编辑器&#xff0c;适合初学者使用&#xff1a; 1. 启动 nano 在终端中输入 nano 命令&#xff0c;后面可以跟上你想要编辑的文件的名称。如果文件…...

如何搞定学习人工智能所需的数学?

一、明确AI所需的数学核心领域 AI的数学需求并非泛泛而谈&#xff0c;而是集中在几个核心领域。以下是按优先级排序的关键知识点&#xff1a; 线性代数 核心概念&#xff1a;向量、矩阵、特征值分解、奇异值分解&#xff08;SVD&#xff09;。应用场景&#xff1a;图像处理&a…...

TCP/IP五层协议

目录 1. 五层模型结构 2. 各层核心功能与协议 (1) 应用层&#xff08;Application Layer&#xff09; (2) 传输层&#xff08;Transport Layer&#xff09; (3) 网络层&#xff08;Network Layer&#xff09; (4) 数据链路层&#xff08;Data Link Layer&#xff09; (5…...

解决Opencv:TypeError: points is not a numerical tuple

最近刚开始学习Opencv&#xff0c;跟着b站阿婆主敲代码的时候&#xff0c;又又又又&#xff0c;又出现了bug&#xff0c;下面听我娓娓道来~~ --------------------------------------------------------------------------&#xff08;手动分界线&#xff09; 首先描述一下当时…...

LLM-大语言模型浅谈

目录 核心定义 典型代表 核心原理 用途 优势与局限 未来发展方向 LLM&#xff08;Large Language Model&#xff09;大语言模型&#xff0c;指通过海量文本数据训练 能够理解和生成人类语言的深度学习模型。 核心定义 一种基于深度神经网络&#xff08;如Transformer架…...

LeetCode第132题_分割回文串II

LeetCode 第132题&#xff1a;分割回文串 II 题目描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文。 返回符合要求的 最少分割次数 。 难度 困难 题目链接 点击在LeetCode中查看题目 示例 示例 1&#xff1a; 输入&#xf…...

【Leetcode 每日一题】368. 最大整除子集

问题背景 给你一个由 无重复 正整数组成的集合 n u m s nums nums&#xff0c;请你找出并返回其中最大的整除子集 a n s w e r answer answer&#xff0c;子集中每一元素对 ( a n s w e r [ i ] , a n s w e r [ j ] ) (answer[i], answer[j]) (answer[i],answer[j]) 都应当…...

python三大库之---pandas(二)

python三大库之—pandas&#xff08;二&#xff09; 文章目录 python三大库之---pandas&#xff08;二&#xff09;六&#xff0c;函数6.1、常用的统计学函数6.2重置索引 六&#xff0c;函数 6.1、常用的统计学函数 函数名称描述说明count()统计某个非空值的数量sum()求和mea…...

消防车调度问题:基于Matlab的优化求解

摘要 本文聚焦消防车调度问题&#xff0c;介绍如何将其转化为数学模型并利用Matlab进行求解。通过建立损失矩阵&#xff0c;以总损失最小为目标构建线性规划模型&#xff0c;并针对模型求解结果可能出现的不合理情况&#xff0c;增加消防车到达先后次序约束条件。 关键词&…...

批量将 Markdown 转换为 Word/PDF 等其它格式

在工作当中&#xff0c;我们经常会接触到 Markdown 格式的文档。这是一种非常方便我们做记录&#xff0c;做笔记的一种格式文档。现在很多互联网编辑器都是支持 Markdown 格式的&#xff0c;编辑起文章来更加的方便简介。有时候&#xff0c;我们会碰到需要将 Markdown 格式的文…...

C语言学习笔记-9

九、结构体 构造类型&#xff1a; 不是基本类型的数据结构也不是指针类型&#xff0c; 它是若干个相同或不同类型的数据构成的集合 结构体类型&#xff1a; 结构体是一种构造类型的数据结构&#xff0c;是一种或多种基本类型或构造类型的数据的集合。 1.结构体类型定义 定…...

LLM 部署(1)——LLM 部署框架对比

1 Ollama 一个专注于简化大型语言模型&#xff08;LLM&#xff09;在本地部署和运行的开源框架。 简化部署&#xff1a;Ollama使用Docker容器技术来简化LLM的部署过程 捆绑模型组件&#xff1a;Ollama将模型权重、配置和数据捆绑到一个包中&#xff0c;称为Modelfile&#xf…...