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

洛谷 P2801 教主的魔法 题解

之前学过 莫队 算法,其运用了分块思想;但是我居然是第一次写纯种的分块题目。

题意

给你一个长度为 n n n 的序列 a a a(一开始 ∀ a i ∈ [ 1 , 1000 ] \forall a_i\in[1,1000] ai[1,1000])。要求执行 q q q 次操作,操作有两种,每次形如 o p , l , r , w / c op,l,r,w/c op,l,r,w/c

  • o p op op M \rm M M,将 a l , a l + 1 , ⋯ , a r a_l,a_{l+1},\cdots,a_r al,al+1,,ar 分别加上 w w w
  • o p op op A \rm A A,查询 a l , a l + 1 , ⋯ , a r a_l,a_{l+1},\cdots,a_r al,al+1,,ar 中,有多少个数大于 c c c

n ≤ 1 0 6 , q ≤ 3000 , w ≤ 1000 , c ≤ 1 0 9 n\le10^6,q\le3000,w\le1000,c\le10^9 n106,q3000,w1000,c109

思路

主席树?是我早就不会打的。

如果我们把它变成一道分块练习题呢?

考虑对序列 a a a 分块,对于每一块内,使用辅助数组 b b b 以保证块内数有序。不妨设 b l t , b r t bl_t,br_t blt,brt 表示块 t t t 的左右端点, b e l i bel_i beli 表示下标 i i i 所在的块的编号。

对于修改操作 l , r , w l,r,w l,r,w,如果 ∃ t , b l t ≤ l < r ≤ b r t \exist t,bl_t\le l<r\le br_t t,bltl<rbrt,即同一块, t = b e l l = b e l r t=bel_l=bel_r t=bell=belr,如果其不在左右端点上,那么块内的排序性质就会被破坏;反之如果它们不在同一块,说明它们中间跨过了若干块整块的区间,我们发现被跨过的区间仍然保持有序

那么我们得到一个初步的修改方法:

  • 设左右端点所在的块分别在 l b = b e l l , r b = b e l r lb=bel_l,rb=bel_r lb=bell,rb=belr,如果 l b = r b lb=rb lb=rb,就块内暴力加 w w w 并快排更新;
  • 否则即 l b < r b lb<rb lb<rb,我们发现块 l b + 1 ∼ r b − 1 lb+1\sim rb-1 lb+1rb1 内仍然有序,那么不妨想线段树引入懒惰标记一样,我们搞一个加法标记,把整一块 t t t 内所有元素同时加的数,用 t a g t tag_t tagt 记录下来,等到查询时再处理;只强制更新更新 l ∼ b r l b l\sim br_{lb} lbrlb b l r b ∼ r bl_{rb}\sim r blrbr 的数据和块 l b , r b lb,rb lb,rb

这样子大大减少了排序的次数,每次修改操作顶多 2 × log ⁡ 2 n 2\times \log_2n 2×log2n,瓶颈在于快排。

void modify(ll t)//更新t块内数据
{for(int i=bl[t];i<=br[t];i++)b[i]=a[i];sort(b+bl[t],b+br[t]+1);
}
void add(ll ql,ll qr,ll x)//l,r,w
{ll lb=bel[ql],rb=bel[qr];//左右端所在块if(lb==rb)//同一块{for(int i=ql;i<=qr;i++)a[i]+=x;modify(lb);return;}//不同块for(int i=ql;i<=br[lb];i++)a[i]+=x;for(int i=bl[rb];i<=qr;i++)a[i]+=x;modify(lb);modify(rb);for(int i=lb+1;i<rb;i++)//lb+1~rb-1块打标记tag[i]+=x;
}

接下来就是查询,其实就和修改所运用的思想差不多了。同样讨论 l , r l,r l,r 在或不在同一块的两种情况。如果同一块就直接 q l ∼ q r ql\sim qr qlqr 扫过去(倒着枚举体检 break 凹时间也行、甚至乎二分,反正块内就是有序的),不同块就搜左右两边 l ∼ b r r b l\sim br_{rb} lbrrb b l r b ∼ r bl_{rb}\sim r blrbr,至于中间的整块整块的,按块二分就好。

ll find(ll ql,ll qr,ll x)
{ll l=ql,r=qr;while(l<=r){ll mid=(l+r)>>1;if(b[mid]<x)l=mid+1;else r=mid-1;}return qr-l+1;
}
ll query(ll ql,ll qr,ll x)
{ll ret=0,lb=bel[ql],rb=bel[qr];if(lb==rb){ret+=find(ql,qr,x-tag[lb]);return ret;}for(int i=ql;i<=br[lb];i++)if(a[i]+tag[lb]>=x)ret++;for(int i=bl[rb];i<=qr;i++)if(a[i]+tag[rb]>=x)ret++;for(int i=lb+1;i<rb;i++)ret+=find(bl[i],br[i],x-tag[i]);return ret;
}

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=1e6+9;
ll n,q,a[N];
ll tag[N];//加法标记
ll bSize,cnt_b,bel[N],bl[N],br[N],b[N];
void init()
{bSize=sqrt(n);cnt_b=n/bSize;if(n%bSize)cnt_b++;for(int i=1;i<=n;i++){bel[i]=(i-1)/bSize+1;b[i]=a[i];}for(int i=1;i<=cnt_b;i++){bl[i]=(i-1)*bSize+1;br[i]=i*bSize;}br[cnt_b]=n;for(int i=1;i<=cnt_b;i++)sort(b+bl[i],b+br[i]+1);
}
void modify(ll t)//更新t块内数据
{for(int i=bl[t];i<=br[t];i++)b[i]=a[i];sort(b+bl[t],b+br[t]+1);
}
void add(ll ql,ll qr,ll x)
{ll lb=bel[ql],rb=bel[qr];//左右端所在块if(lb==rb)//同一块{for(int i=ql;i<=qr;i++)a[i]+=x;modify(lb);return;}//不同块for(int i=ql;i<=br[lb];i++)a[i]+=x;for(int i=bl[rb];i<=qr;i++)a[i]+=x;modify(lb);modify(rb);for(int i=lb+1;i<rb;i++)//lb+1~rb-1块打标记tag[i]+=x;
}
ll find(ll ql,ll qr,ll x)
{ll l=ql,r=qr;while(l<=r){ll mid=(l+r)>>1;if(b[mid]<x)l=mid+1;else r=mid-1;}return qr-l+1;
}
ll query(ll ql,ll qr,ll x)
{ll ret=0,lb=bel[ql],rb=bel[qr];if(lb==rb){ret+=find(ql,qr,x-tag[lb]);return ret;}for(int i=ql;i<=br[lb];i++)if(a[i]+tag[lb]>=x)ret++;for(int i=bl[rb];i<=qr;i++)if(a[i]+tag[rb]>=x)ret++;for(int i=lb+1;i<rb;i++)ret+=find(bl[i],br[i],x-tag[i]);return ret;
}
int main()
{scanf("%lld%lld",&n,&q);for(int i=1;i<=n;i++)scanf("%lld",&a[i]);init();while(q--){char op;ll l,r,x;cin>>op;scanf("%lld%lld%lld",&l,&r,&x);if(op=='M')add(l,r,x);else printf("%lld\n",query(l,r,x));}return 0;
}

相关文章:

洛谷 P2801 教主的魔法 题解

之前学过 莫队 算法&#xff0c;其运用了分块思想&#xff1b;但是我居然是第一次写纯种的分块题目。 题意 给你一个长度为 n n n 的序列 a a a&#xff08;一开始 ∀ a i ∈ [ 1 , 1000 ] \forall a_i\in[1,1000] ∀ai​∈[1,1000]&#xff09;。要求执行 q q q 次操作&…...

Google最新生图模型Gemini-2.0-Flash-Exp免费用

Google发布新生图模型 Google释放出最新生图模型&#xff0c;在发布说明中提到&#xff1a; 2025年3月12日 在 Gemini-2.0-Flash-Exp 中发布原生图像输出功能 Gemini 2.0 Flash Experimental 模型发布&#xff0c;支持原生图像输出功能。开发者能够使用 Gemini 进行图像输出和…...

windows安装Elasticsearch

下载 下载最新版 https://www.elastic.co/downloads/elasticsearch 下载历史版本 安装 进入bin目录中 成功启动 访问 http://localhost:9200...

vulnhub靶场之stapler靶机

前言 靶机&#xff1a;stapler靶机&#xff0c;IP地址为192.168.10.12 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.6 靶机采用virtualbox&#xff0c;攻击机采用VMware虚拟机&#xff0c;都采用桥接网卡模式 文章涉及的靶机及工具&#xff0c;都可以自行访问官网或…...

2025年AI搜索引擎开源项目全景指南:从核心框架到生态工具

2025年AI搜索引擎开源项目全景指南&#xff1a;从核心框架到生态工具 在人工智能技术迅猛发展的当下&#xff0c;开源项目已成为构建AI搜索引擎的核心驱动力。本文整理9个具有代表性的开源项目&#xff0c;涵盖搜索框架、扩展生态及底层支持技术&#xff0c;助你快速搭建或优化…...

数字孪生像魔镜,映照出无限可能的未来

在当今科技飞速发展的时代&#xff0c;数字孪生作为一项极具潜力的前沿技术&#xff0c;正逐渐崭露头角&#xff0c;成为众多领域关注的焦点。它犹如一面神奇的魔镜&#xff0c;以数字化的方式精准映照出现实世界中的各种实体与系统&#xff0c;为我们开启了一扇通往无限可能未…...

PDF Reader

Acrobat Reader...

C++友元

1.什么是友元&#xff1f; 当我们需要在类的外部访问该类的私有成员和保护成员时&#xff0c;就可以利用友元来实现这一操作 在类中用 friend 关键字对函数或类进行声明 2.非成员函数友元 友元函数不是当前类的成员函数&#xff0c;而是当前类的外部函数&#xff0c;但是他可以…...

吴恩达机器学习笔记复盘(五)均方误差函数

只讲了线性回归的代价函数。 均方误差&#xff08;Mean Squared Error, MSE&#xff09; 均方误差&#xff08;MSE&#xff09;基于最小二乘法&#xff0c;通过计算预测值与真实值之间差值的平方的平均值来衡量模型的误差。 原理 假设我们有一组数据集&#xff0c;其中是第…...

使用 Docker 部署前端项目全攻略

文章目录 1. Docker 基础概念1.1 核心组件1.2 Docker 工作流程 2. 环境准备2.1 安装 Docker2.2 验证安装 3. 项目配置3.1 项目结构3.2 创建 Dockerfile 4. 构建与运行4.1 构建镜像4.2 运行容器4.3 访问应用 5. 使用 Docker Compose5.1 创建 docker-compose.yml5.2 启动服务5.3 …...

珠算与珠心算发展简介

珠算是中华传统优秀文化的科学遗产&#xff0c;它是我国劳动人民的伟大创造&#xff0c;被誉为中国的第五大发明&#xff0c;至今已有 1800 余年的历史。 珠算&#xff0c;是以算盘为工具&#xff0c;用手指拨动算珠进行数值计算的一门计算技术。同时&#xff0c;珠算又是一门科…...

基于SSM + JSP 的水果蔬菜商城

基于ssm的水果蔬菜商城系统前台和后台&#xff08;源码安装视频数据库环境&#xff09;计算机项目程序设计管理系统java小程序网站商城 一.相关技术 Java、Spring、Springboot、MVC、Mybatis、MySQL、SSM框架、Web、HTML、maven、JavaScript、css、vue 二.部署配置 1.IntelliJ …...

基于深度学习的蛀牙智能检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

Linux与深入HTTP序列化和反序列化

深入HTTP序列化和反序列化 本篇介绍 在上一节已经完成了客户端和服务端基本的HTTP通信&#xff0c;但是前面的传递并没有完全体现出HTTP的序列化和反序列化&#xff0c;为了更好得理解其工作流程&#xff0c;在本节会以更加具体的方式分析到HTTP序列化和反序列化 本节会在介绍…...

音视频入门基础:RTP专题(20)——通过FFprobe显示RTP流每个packet的信息

通过FFprobe命令&#xff1a; ffprobe -protocol_whitelist "file,rtp,udp" -of json -show_packets XXX.sdp 可以显示SDP描述的RTP流每个packet&#xff08;数据包&#xff09;的信息&#xff1a; 对于RTP流&#xff0c;上述的“packet”&#xff08;数据包&#…...

Java Web 大文件上传优化:从困境到高效

文章目录 Java Web 大文件上传优化&#xff1a;从困境到高效一、优化前的困境&#xff08;一&#xff09;内存占用问题&#xff08;二&#xff09;上传速度缓慢&#xff08;三&#xff09;稳定性欠佳 二、优化后的实现方案&#xff08;一&#xff09;客户端&#xff08;Vue&…...

C++——STL 常用的查找算法

算法简介&#xff1a; find //查找元素find_if //按条件查找元素adjacent_find //查找相邻重复元素binary_search //二分查找法count //统计元素个数count_if //按条件统计元素个数 1. find 功能描述&#xff1a; 查找指定元素&#xff0c;找到返回指定元素的迭…...

【一次成功】Win10本地化单机部署k8s v1.31.2版本及可视化看板

【一次成功】Win10本地化单机部署k8s v1.31.2版本及可视化看板 零、安装清单一、安装Docker Desktop软件1.1 安装前<启用或关闭Windows功能> 中的描红的三项1.2 查看软件版本1.3 配置Docker镜像 二、更新装Docker Desktop三、安装 k8s3.1 点击启动安装3.2 查看状态3.3 查…...

Vulkan视频解码decode显示display之同步

在ReleaseDisplayedPicture函数中消耗图片资源并且显示display完成&#xff0c;设置两个标志m_hasConsummerSignalFence true 和m_hasConsummerSignalSemaphore true virtual int32_t ReleaseDisplayedPicture(DecodedFrameRelease** pDecodedFramesRelease, uint32_t nu…...

专题|Python梯度提升实例合集:GBM、XGBoost、SMOTE重采样、贝叶斯、逻辑回归、随机森林分析信贷、破产数据...

全文链接&#xff1a;https://tecdat.cn/?p41051 分析师&#xff1a;Jiajie Shi&#xff0c;Yimeng Li 在当今数据驱动的时代&#xff0c;数据分析师和数据建模师面临着各式各样复杂且极具挑战性的任务。本专题合集便是围绕这些挑战展开的宝贵知识盛宴&#xff08;点击文末“阅…...

4.0 相机引导XY轴控制螺丝枪打螺丝

假如一个产品的同一水平上要打6个螺钉&#xff0c;是通过伺服XY轴移动带动相机以及螺丝枪&#xff0c;由相机拍照&#xff0c;根据拍照后螺丝孔位置来引导伺服进行移动以对准螺丝孔位置的。步骤如下&#xff1a; 一、9点标定&#xff0c;即把相机与伺服的实际位置关联起来。步骤…...

【ElasticSearch】学习笔记

一、lucene的组成 segment是一个具备完整搜索功能的最小单元。 多个segment组成了一个单机文本检索库lucene。 inverted index:倒排索引&#xff0c;用于快速根据关键词找到对应的文章term index: 构建出关键词的目录树&#xff0c;解决了term dictionary数据量过大&#xff…...

Spring Boot整合RabbitMQ极简教程

一、消息队列能解决什么问题&#xff1f; 异步处理&#xff1a;解耦耗时操作&#xff08;如发短信、日志记录&#xff09;流量削峰&#xff1a;应对突发请求&#xff0c;避免系统过载应用解耦&#xff1a;服务间通过消息通信&#xff0c;降低依赖 二、快速整合RabbitMQ 1. 环…...

代码随想录-04-字符串-03.替换数字

替换数字 题目 给定一个字符串 s&#xff0c;它包含小写字母和数字字符&#xff0c;请编写一个函数&#xff0c;将字符串中的字母字符保持不变&#xff0c;而将每个数字字符替换为number。 例如&#xff0c;对于输入字符串 “a1b2c3”&#xff0c;函数应该将其转换为 “anum…...

Tailwindcss开启黑夜模式

本篇讲述如何使用tailwindcss切换白天黑夜主题 tailwindcss自带的暗夜切换会比css自带的theme主体切换来得方便很多&#xff0c;学习成本也很低&#xff0c;只要求会用tailiwndcss 1&#xff0c;tailwindcss.config有两种暗夜模式切换&#xff0c;媒体查询和手动类切换。手动控…...

AI与人的智能,改变一生的思维模型【7】易得性偏差

目录 **易得性偏差思维模型&#xff1a;大脑的「热搜算法」与反操纵指南****病毒式定义&#xff1a;你的大脑正在被「热搜」劫持****四大核心攻击路径与史诗级案例****1. 信息过载时代的「认知短路」****2. 媒体放大器的「恐怖滤镜」****3. 个人经验的「数据暴政」****4. 社交茧…...

有序表--跳表

实现一种结构&#xff0c;支持如下操作&#xff0c;要求单次调用的时间复杂度O(log n) 1&#xff0c;增加x&#xff0c;重复加入算多个词频 2&#xff0c;删除x&#xff0c;如果有多个&#xff0c;只删掉一个 3&#xff0c;查询x的排名&#xff0c;x的排名为&#xff0c;比x小的…...

双指针---字符串替换数字(数字替换为“number“)

题目链接&#xff1a;替换数字 要求&#xff1a;时间复杂度为O(n) 思路&#xff1a; 1、先将字符串扩容到要输出串的长度。 2、从后向前替换数字字符&#xff0c;也就是双指针法&#xff0c;newIndex指向新长度的末尾&#xff0c;i指向旧长度的末尾。 #include<iostream&g…...

外星人入侵-Python-三

武装飞船 开发一个名为《外星人入侵》的游戏吧&#xff01;为此将使用 Pygame&#xff0c;这是一组功能强大而有趣的模块&#xff0c;可用于管理图形、动画乃至声音&#xff0c; 让你能够更轻松地开发复杂的游戏。通过使用Pygame来处理在屏幕上绘制图像 等任务&#xff0c;可将…...

JavaScript相关面试题

以下是150道JavaScript相关面试题及详细答案&#xff1a; JavaScript基础 1.JavaScript是什么&#xff1f; JavaScript是一种直译式脚本语言&#xff0c;主要用于网页开发&#xff0c;也可用于服务器端开发&#xff08;如Node.js&#xff09;。它是一种动态类型、弱类型、基于原…...

常见的数学模型

数学模型的基本原理 简单来说&#xff0c;数学模型就是用数学语言来描述现实世界中的现象或规律。它就像一个“翻译器”&#xff0c;把复杂的现实问题转化成我们可以用数学方法解决的问题。 核心思想&#xff1a; 简化现实&#xff1a;现实世界太复杂&#xff0c;模型会抓住最…...

计算机四级 - 数据库原理 - 第3章 「关系数据库系统概述」

3.1 关系数据库系统概述 关系数据模型的三大要素&#xff1a;关系数据结构、关系操作集合&#xff08;一次一个集合&#xff09;和关系完整性约束 1. 关系语言的特点是高度非过程化的, DBMS会自动帮用户选择存取路径&#xff0c;用户不需要依靠循环和递归完成数据的重复操作。…...

使用PHP进行自动化测试:工具与策略的全面分析

使用PHP进行自动化测试&#xff1a;工具与策略的全面分析 引言 随着软件开发的复杂性不断增加&#xff0c;自动化测试已成为确保软件质量的关键环节。PHP作为一种广泛使用的服务器端脚本语言&#xff0c;拥有丰富的生态系统和工具支持&#xff0c;使其成为自动化测试的理想选…...

discuz门户文章允许游客评论

discuz开启游客评论 1、进入后台&#xff0c;用户--用户组--系统用户组--游客--编辑 2、论坛相关 设置未允许发表回复 3、门户相关--文章评论字数(设置此用户组发表文章评论字数限制&#xff0c;设置为0将禁止此用户组发表评论) 4、验证游客回复 测试站 http://jinzhu.zhaowo.…...

AtCoder Beginner Contest 003(A - 社の給料、B -トランプ、C -プログラミング講座、D - 社の冬 )题目讲解

前言 又更新AtCoder Beginner Contes 的题目讲解啦!! 希望能给诸位带来帮助。 话不多说,开始讲解: A - 社の給料←题目翻译 为了解决这个问题,我们需要计算青木每月完成正好N个任务时的平均工资。通过分析,我们可以发现这个问题可以通过数学公式直接求解,而不需要复…...

代码随想录二刷|图论11

图论 一、基础知识 1 无向图 &#xff08;1&#xff09;度&#xff1a;一个顶点连n条边就度为n &#xff08;2&#xff09;权 加权无向图&#xff1a;有边长的无向图 &#xff08;3&#xff09;通道&#xff1a;两个顶点之间有一些边和点&#xff0c;并且没有重复的边 路…...

农资出入库登记本,农药化肥库存出入库软件,佳易王农资管理庄稼医院开单管理系统操作教程

一、概述 本实例以佳易王农资管理庄稼医院开单管理系统为例说明&#xff0c;其他版本可参考本实例。试用版软件资源可到文章最后了解&#xff0c;下载的文件为压缩包文件&#xff0c;请使用免费版的解压工具解压即可试用。 软件特点&#xff1a; 1、功能实用&#xff0c;操作简…...

串的KMP算法详解

KMP算法深度解析 一、从暴力匹配到智能跳转&#xff1a; 在文本编辑器的搜索功能中&#xff0c;当我们在百万字的文档中查找特定关键词时&#xff0c;传统暴力匹配算法的时间复杂度高达O(mn)。KMP算法通过独创的部分匹配表&#xff08;Partial Match Table&#xff09;&#x…...

软件测试之测试分类

1. 为什么要对软件测试进行分类 软件测试是软件⽣命周期中的⼀个重要环节&#xff0c;具有较⾼的复杂性&#xff0c;对于软件测试&#xff0c;可以从不同的⻆度 加以分类&#xff0c;使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理测试 的分类⽅…...

机器学习 : 训练过程

文章目录 概要流程1 . 前向传播2 . 计算损失3 . 后向传播4 . 梯度下降 技术名词解释小结 【全文大纲】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 概要 主要思想拟合数据 流程 1 . 前向传播 y func * (wxb) 2 . 计算损失 y - Y 3 . 后向传播 根据链式法…...

六十天前端强化训练之第二十天React Router 基础详解

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、核心概念 1.1 核心组件 1.2 路由模式对比 二、核心代码示例 2.1 基础路由配置 2.2 动态路由示例 2.3 嵌套路由实现 2.4 完整示例代码 三、关键功能实现效果 四、…...

如何在AVL树中高效插入并保持平衡:一步步掌握旋转与平衡因子 —— 旋转篇

文章目录 AVL树种旋转的规则右单旋右单旋代码左单旋左单旋代码左右双旋左右单旋的代码右左单旋右左单旋的代码 AVL树种旋转的规则 在AVL树中&#xff0c;旋转是为了保持树的平衡性。AVL树是一种自平衡的二叉搜索树&#xff0c;它要求每个节点的左右子树的高度差不能超过1。当插…...

C++Primer学习(7.1 定义抽象数据类型)

类的基本思想是数据抽象(data abstraction)和封装(encapsulation)。数据抽象是种依赖于接口(interface)和实现(implementation)分离的编程(以及设计)技术。类的接口包括用户所能执行的操作:类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。 封…...

Vue 3 Diff 算法深度解析:与 Vue 2 双端比对对比

文章目录 1. 核心算法概述1.1 Vue 2 双端比对算法1.2 Vue 3 快速 Diff 算法 2. 算法复杂度分析2.1 时间复杂度对比2.2 空间复杂度对比 3. 核心实现解析3.1 Vue 2 双端比对代码3.2 Vue 3 快速 Diff 代码 4. 性能优化分析4.1 性能测试数据4.2 内存使用对比 5. 使用场景分析5.1 Vu…...

启动桌面Docker提示虚拟服务未启动

在启动 Docker Desktop 时&#xff0c;可能会遇到以下提示&#xff1a; Docker Desktop - Virtual Machine Platform not enabled Virtual Machine Platform not enabled该错误通常是由于 Windows 未启用 “Virtual Machine Platform” 功能导致的&#xff0c;这是运行 Docker…...

【SpringBoot】实现登录功能

在上一篇博客中&#xff0c;我们讲解了注册页面的实现。在此基础上会跳转到登录页面&#xff0c;今天给大家带来的是使用 SpringBoot&#xff0c;MyBatis&#xff0c;Html&#xff0c;CSS&#xff0c;JavaScript&#xff0c;前后端交互实现一个登录功能。 目录 一、效果 二、…...

DataWhale 速通AI编程开发:(进阶篇)第3章 提示词(Prompts)配置项

学习网址&#xff1a;Datawhale-学用 AI,从此开始 3.1 Roo Code提示词配置了什么 众所周知&#xff0c;提示词&#xff08;Prompt&#xff09;是用户向大语言模型输入的一段文本&#xff0c;用于指导大语言模型生成符合用户要求的输出。在ai编程领域更是如此&#xff0c;提示…...

VUE中VNode(虚拟节点)是个啥?

用 JavaScript 生成 Virtual DOM&#xff08;VNode&#xff09; 在 Vue 中&#xff0c;Virtual DOM&#xff08;虚拟 DOM&#xff09;是一个用 JavaScript 对象表示真实 DOM 结构的抽象层。通过这种方式&#xff0c;Vue 可以通过比较 Virtual DOM 与真实 DOM 的差异来最小化更…...

力扣:3. 无重复字符的最长子串(滑动窗口)

3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09;3. 无重复字符的最长子串 - 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1:输入: s "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc"…...

注解+AOP实现权限控制

注解与AOP实战&#xff1a;实现权限控制 在现代Java开发中&#xff0c;注解&#xff08;Annotation&#xff09;和面向切面编程&#xff08;AOP&#xff09;是两种强大的技术&#xff0c;它们能够帮助我们实现代码的解耦&#xff0c;提高代码的可读性和可维护性。本文将通过一…...