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

洛谷 P1850 [NOIP 2016 提高组] 换教室


题目传送门


前言

终于自己想出概率期望 d p dp dp 的状态了,但是依旧没能相对转移方程。(招笑)


暴力

这题部分分和特殊情况分给的挺多的,所以先拿部分分。

一、思路

  1. 先跑一边 F l o y d Floyd Floyd 最短路求出两点间最短距离 d i s i , j dis_{i, j} disi,j
  2. 对于 m = 0 m = 0 m=0,答案就是 ∑ i = 1 n − 1 d i s c i , c i + 1 \sum_{i = 1}^{n - 1} dis_{c_{i}, c_{i + 1}} i=1n1disci,ci+1
    对于所有 n ≤ 20 n \leq 20 n20,直接用状态压缩,二进制枚举所有 【申请情况】【同意情况】(注意:这两者不一样,因为申请了不一定同意,所以枚举申请情况之下还要枚举同意情况),直接计算。

二、复杂度

  1. 空间: O ( v 2 + n ) O(v^2 + n) O(v2+n)
  2. 时间:对于 m = 0 m = 0 m=0 O ( v 3 + n ) O(v^3 + n) O(v3+n);对于 n ≤ 20 n \leq 20 n20 O ( v 3 + n × 2 n × 2 m ) O(v^3 + n \times 2^n \times 2^m) O(v3+n×2n×2m)
    (当然后者的时间复杂度远远跑不满,因为对于多数数据 m m m 很小,会限制枚举的状态数量)

三、代码

#include <bits/stdc++.h>using namespace std;const int maxn = 2e3 + 7;
const int maxv = 3e2 + 7;
const int inf  = 0x3f3f3f3f;int n, m, v, e;
int c[maxn], d[maxn];
double p[maxn];
int dis[maxv][maxv];
void Floyd() {for (int k = 1; k <= v; ++k)for (int i = 1; i <= v; ++i)for (int j = 1; j <= v; ++j)dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
}
double ans;
int main() {scanf("%d%d%d%d", &n, &m, &v, &e);for (int i = 1; i <= n; ++i) scanf("%d", c + i);for (int i = 1; i <= n; ++i) scanf("%d", d + i);for (int i = 1; i <= n; ++i) scanf("%lf", p + i);memset(dis, inf, sizeof(dis));for (int i = 1; i <= v; ++i) dis[i][i] = dis[0][i] = dis[i][0] = 0;for (int i = 1, a, b, w; i <= e; ++i) {scanf("%d%d%d", &a, &b, &w);dis[a][b] = dis[b][a] = min(w, dis[a][b]);}Floyd();if (m == 0) {for (int i = 1; i < n; ++i)ans += dis[c[i]][c[i + 1]];printf("%.2lf\n", ans);return 0;}ans = 2e9;for (int s = 0; s < (1 << n); ++s) {  // 枚举【申请情况】if (__builtin_popcount(s) > m) continue;  // 用来计算 s 二进制中有多少个 1 的函数double sum = 0;  // 此【申请情况】下的期望for (int ss = s; 1; ss = s & (ss - 1)) {  // 枚举【同意情况】double tmp = 0;  // 此【同意情况】对【申请情况】的贡献for (int i = 2; i <= n; ++i) {int lst = ((ss & (1 << (i - 1 - 1))) ? d[i - 1] : c[i - 1]);int now = ((ss & (1 << (i - 1))) ? d[i] : c[i]);tmp += dis[lst][now];}for (int i = 1; i <= n; ++i)if (ss & (1 << (i - 1))) tmp *= p[i];else if (s & (1 << (i - 1))) tmp *= 1 - p[i];sum += tmp;if (ss == 0) break;}ans = min(ans, sum);}printf("%.2lf\n", ans);return 0;
} 

期望得分 68 p t s 68pts 68pts,实际得分 68 p t s 68pts 68pts
(洛谷测评机跑出来挺迷的,应该是数据水的问题,前面暴力的数据点一部分没过,后面正解的数据点过了一部分)


正解

概率期望的题一般就是拿 d p dp dp 做。

一、思路

状态设计

  • 很明显要有两维的状态 i , j i, j i,j,表示前 i i i 个中选了 j j j 个。
    但是由于花费还与上一状态有关(上一个课程是在 c i c_i ci 还是 d i d_i di),所以还要一维表示这个课是否被申请了。
  • d p i , j , 0 / 1 dp_{i, j, 0/1} dpi,j,0/1 表示在前 i i i 个课中 申请了(注意不是同意!!) j j j 个,且第 i i i 个课【没被申请 / 被申请了】时的最小期望。

状态转移

  1. 若当前课程 i i i 不申请,且上一个课程也没有申请,那么转移方程为: d p i , j , 0 = m i n ( d p i , j , d p i − 1 , j , 0 + d i s c i − 1 , c i ) dp_{i, j, 0} = min(dp_{i, j}, dp_{i - 1, j, 0} + dis_{c_{i - 1}, c_i}) dpi,j,0=min(dpi,j,dpi1,j,0+disci1,ci)
  2. 若当前课程 i i i 不申请,但上一个课程申请了,那么转移方程为(转移条件为 j > 0 j > 0 j>0): d p i , j , 0 = m i n ( d p i , j , 0 , d p i − 1 , j , 1 + d i s c i − 1 , c i × ( 1 − k i ) + d i s d i − 1 , c i × k i ) dp_{i, j, 0} = min( dp_{i, j, 0}, dp_{i - 1, j, 1} + dis_{c_{i - 1}, c_{i}} \times (1 - k_i) + dis_{d_{i - 1}, c_i} \times k_{i}) dpi,j,0=min(dpi,j,0,dpi1,j,1+disci1,ci×(1ki)+disdi1,ci×ki)后面的分别对应【上一次申请没通过】和【上一次申请通过了】;
  3. 若当前课程 i i i 申请,那么上一次可以申请,也可以不申请,总共有四种情况,在此就不列举出来了(条件当然也是 j > 0 j > 0 j>0)。

边界条件

  • 只有一个课程时,申请或不申请期望花费都为 0 0 0,即: d p 1 , 0 , 0 = d p 1 , 1 , 1 = 0 dp_{1,0,0} = dp_{1,1,1} = 0 dp1,0,0=dp1,1,1=0
  • 而对于 d p 1 , 0 , 1 , d p 1 , 1 , 0 dp_{1,0,1},dp_{1,1,0} dp1,0,1,dp1,1,0 这种不合法状态,我们可以先把他们设为正无穷,这样就不会从它门转移了。

答案

  • 因为题目说可以不用玩 m m m 次申请,所以答案就是 m i n i = 0 m { d p n , i , 0 , d p n , i , 1 } min_{i = 0}^{m} \left\{dp_{n, i,0}, dp_{n, i, 1} \right\} mini=0m{dpn,i,0,dpn,i,1}

复杂度

  1. 空间: O ( v 2 + n × m ) O(v^2 + n \times m) O(v2+n×m)
  2. 时间: O ( v 3 + n × m ) O(v^3 + n \times m) O(v3+n×m)

二、代码

#include <bits/stdc++.h>using namespace std;const int maxn = 2e3 + 7;
const int maxv = 3e2 + 7;
const int inf  = 0x3f3f3f3f;int n, m, v, e;
int c[maxn], d[maxn];
double p[maxn];
int dis[maxv][maxv];
void Floyd() {for (int k = 1; k <= v; ++k)for (int i = 1; i <= v; ++i)for (int j = 1; j <= v; ++j)dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
}double dp[maxn][maxn][2];
double ans;
int main() {scanf("%d%d%d%d", &n, &m, &v, &e);for (int i = 1; i <= n; ++i) scanf("%d", c + i);for (int i = 1; i <= n; ++i) scanf("%d", d + i);for (int i = 1; i <= n; ++i) scanf("%lf", p + i);memset(dis, 63, sizeof(dis));for (int i = 1; i <= v; ++i) dis[i][i] = dis[i][0] = dis[0][i] = 0;for (int i = 1, a, b, w; i <= e; ++i) {scanf("%d%d%d", &a, &b, &w);dis[a][b] = dis[b][a] = min(w, dis[a][b]);}Floyd();for (int i = 0; i <= n; ++i)for (int j = 0; j <= m; ++j)dp[i][j][0] = dp[i][j][1] = 2e9;dp[1][0][0] = dp[1][1][1] = 0;for (int i = 2; i <= n; ++i) {dp[i][0][0] = dp[i - 1][0][0] + dis[c[i - 1]][c[i]];for (int j = 1; j <= min(i, m); ++j) {// 巨丑马蜂dp[i][j][0] = min(dp[i - 1][j][0] + dis[c[i - 1]][c[i]],dp[i - 1][j][1] + dis[c[i - 1]][c[i]] * (1 - p[i - 1]) + dis[d[i - 1]][c[i]] * p[i - 1]);dp[i][j][1] = min(dp[i][j][1], dp[i - 1][j - 1][0] + dis[c[i - 1]][c[i]] * (1 - p[i]) + dis[c[i - 1]][d[i]] * p[i]);dp[i][j][1] = min(dp[i][j][1], dp[i - 1][j - 1][1] + dis[c[i - 1]][c[i]] * (1 - p[i - 1]) * (1 - p[i]) + dis[c[i - 1]][d[i]] * (1 - p[i - 1]) * p[i] + dis[d[i - 1]][c[i]] * p[i - 1] * (1 - p[i]) + dis[d[i - 1]][d[i]] * p[i - 1] * p[i]);}}ans = 2e9;for (int i = 0; i <= m; ++i)ans = min(ans, min(dp[n][i][0], dp[n][i][1]));printf("%.2lf\n", ans);return 0;
} 

期望的分 100 p t s 100pts 100pts,实际得分 100 p t s 100pts 100pts

相关文章:

洛谷 P1850 [NOIP 2016 提高组] 换教室

题目传送门 前言 终于自己想出概率期望 d p dp dp 的状态了&#xff0c;但是依旧没能相对转移方程。&#xff08;招笑&#xff09; 暴力 这题部分分和特殊情况分给的挺多的&#xff0c;所以先拿部分分。 一、思路 先跑一边 F l o y d Floyd Floyd 最短路求出两点间最短距…...

1penl配置

好的&#xff0c;根据您提供的 1pctl 命令输出信息&#xff0c;我们来重新依次回答您的所有问题&#xff1a; 第一&#xff1a;1Panel 怎么设置 IP 地址&#xff1f; 根据您提供的 user-info 输出&#xff1a; 面板地址: http://$LOCAL_IP:34523/93d8d2d705 这里的 $LOCAL_I…...

Windows下调试WebRTC源码

一、引言 《Windows下编译WebRTC源码》讲述了Windows下编译WebRTC源码的方法。本文在其基础之上&#xff0c;讲述使用Visual Studio调试WebRTC源码的方法。 二、生成Visual Studio工程文件 按照 《Windows下编译WebRTC源码》编译出webrtc.lib 后&#xff0c;执行下面的命令生…...

基于大模型的肾结石诊疗全流程风险预测与方案制定研究报告

目录 一、引言 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目标与内容 二、大模型技术原理与应用概述 2.1 大模型的基本原理 2.2 大模型在医疗领域的应用进展 2.3 适用于肾结石预测的大模型选择与依据 三、术前风险预测与准备 3.1 患者身体状况评估 3.2 结石情…...

《ATPL地面培训教材13:飞行原理》——第5章:升力

翻译&#xff1a;刘远贺&#xff1b;工具&#xff1a;Cursor & Claude 3.7&#xff1b;过程稿 第5章&#xff1a;升力 目录 空气动力系数基本升力方程回顾升力曲线升力曲线的解释速度-动压关系密度高度翼型剖面升力特性阻力特性简介升阻比飞机重量对最小飞行速度的影响表…...

STM32部分:2、环境搭建

飞书文档https://x509p6c8to.feishu.cn/wiki/DQsBw76bCiWaO4kS8TXcWDs0nAh Keil MDK用于编写代码&#xff0c;编译代码芯片支持包&#xff0c;用于支持某类芯片编程支持STM32CubeMX用于自动生成工程&#xff0c;减少手动重复工作 STM32F1系列芯片支持包 软件下载 直接下载&am…...

STL之list容器

list的介绍 1.list的底层是双向链表结构&#xff0c;双向链表中的每个元素在互不相关的独立结点中&#xff0c;在结点中通过指针指向前一个元素和后一个元素 2.list是可以在常数范围内在任意位置的插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代 3.vector的…...

DNS 域名解析

DNS&#xff08;Domain Name System&#xff09; 是一个将域名转换为IP地址的系统。它的主要功能是使用户能够通过易于记忆的域名访问互联网资源&#xff0c;而不是记住复杂的IP地址。DNS类似于“互联网的电话簿”&#xff0c;帮助计算机找到彼此的位置。 一、DNS的基本概念 …...

我写了一个分析 Linux 平台打开文件描述符跨进程传递的工具

Linux 系统的设计中&#xff0c;继承了 Unix “一切皆文件” (Everything is a file) 的思想&#xff0c;系统中的众多对象&#xff0c;都可以表示为文件&#xff0c;可以对它们执行文件操作&#xff0c;如 read()、write()、mmap()、ioctl()、close() 和 poll() 等。Linux 系统…...

QML图像提供器 (Image Provider)

QML 中的图像提供器是一种自定义图像加载机制&#xff0c;允许你从非文件源&#xff08;如数据库、网络或程序生成的内容&#xff09;提供图像数据。 主要类型 QQuickImageProvider - 基础图像提供器 QPixmapImageProvider - 提供 QPixmap 图像 QImageImageProvider - 提供 …...

【Java学习】通配符?

面向对象系列八&#xff1a;泛型(二) 一、通配符? 二、泛型符<> 1.泛型类里 2.泛型类外 2.1使用过程中 2.2使用最后末 三、限制 1.泛型类里的限制 2.延申处的限制 2.1extend限制上界 2.1.1返回值接 2.1.2形参传 2.2super限制下界 2.2.1形参传 2.2.2返回值…...

安卓基础(悬浮窗和摄像)

ACTION_MANAGE_OVERLAY_PERMISSION​​ 的作用就是 ​​打开系统设置的「悬浮窗权限管理页面」 Intent intent new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,Uri.parse("package:" getPackageName()) ); startActivity(intent); 直接跳转目标应用的权限…...

一种实波束前视扫描雷达目标二维定位方法——论文阅读

一种实波束前视扫描雷达目标二维定位方法 1. 专利的研究目标与实际问题意义2. 专利提出的新方法、模型与公式2.1 运动平台几何建模与回波信号构建2.1.1 距离历史建模2.1.2 回波信号模型2.2 距离向运动补偿技术2.2.1 匹配滤波与距离压缩2.3 加权最小二乘目标函数2.3.1 方位向信号…...

基于springboot的金院银行厅预约系统的设计及实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;信息管理系统的实施在技术上已逐步成熟。信息管理系统是一个不断发展的新型学科&#xff0c;任何一个单位要生存要发展&#xff0c;要高效率地把内部活动有机地组织起来&#xff0c;就必须建立与自身特点相适应的…...

AVFormatContext 再分析零

随着对于AVFormatContext 各个参数的学习&#xff0c;逐渐可以从 整体架构上 再认识一下 AVFormatContext 了。 还是从解封装的第一步开始。 int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options); 实际上…...

【学习心得】魔塔(ModelScope)和抱抱脸(Hugging Face)下载模型小细节

介绍常用的两种在模型社区如魔塔&#xff08;ModelScope&#xff09;和抱抱脸&#xff08;Hugging Face&#xff09;&#xff0c;下载预训练模型的方法&#xff0c;然后说明各种方法里面的小细节。 一、SDK下载 对于希望直接通过编程方式集成模型下载功能到自己的项目中的开发…...

嵌入式硬件篇---STM32 系列单片机型号命名规则

文章目录 前言一、STM32 型号命名规则二、具体型号解析1. STM32F103C8T6F103:C:8:T6:典型应用2. STM32F103RCT6F103:R:C:T6:典型应用三、命名规则扩展1. 引脚数与封装代码2. Flash 容量代码3. 温度范围代码四、快速识别技巧性能定位:F1/F4后缀差异硬件设计参考:引脚数…...

关于算法设计与分析——拆分表交换问题

题目&#xff1a; 用蛮力法设计一个算法&#xff0c;将A{a1, a2, ..., an}拆成B和C两个表&#xff0c;使A中值大于等于0的元素存入表B&#xff0c;值小于0的元素存入表C&#xff0c;要求表B和C不另外设置存储空间而利用表A的空间。 1&#xff09;问题分析 题目要求设计一个算…...

在pycharm profession 2020.3上离线安装.whl类型的包(以PySimpleGUI为例)

今天写个小代码&#xff0c;用到了PySimpleGUI。 在pycharm profession 2020.3的项目中的Terminal里运行如下代码即可安装。 python3 -m pip install --force-reinstall --extra-index-url https://PySimpleGUI.net/install PySimpleGUI 安装方法如图&#xff1a; 安装后使用…...

c++回调函数

函数指针 //函数 bool lengthCompare(const string&, const string&); //pf为指针&#xff0c;指向一个函数&#xff0c;函数的类型为&#xff1a;bool (const string&, const string&) bool (*pf)(const string&, const string&); //函数&#xff0…...

mysql主从复制搭建,并基于‌Keepalived + VIP实现高可用

以下是基于 ‌Keepalived VIP‌ 实现 MySQL 主从复制高可用的详细步骤&#xff0c;涵盖主从复制搭建与故障自动切换&#xff1a; 一、MySQL 主从复制搭建&#xff08;基础步骤回顾&#xff09; 1. ‌主库&#xff08;Master&#xff09;配置‌ 修改配置文件‌ /etc/my.cnf&…...

时间交织(TIADC)的失配误差校正处理(以4片1GSPS采样率的12bitADC交织为例讲解)

待写…有空再写&#xff0c;有需要的留言。 存在失配误差的4GSPS交织 校正完成后的4GSPS交织...

K8S自动弹性伸缩机制详解

Kubernetes (K8S) 自动弹性伸缩机制详解 Kubernetes 通过多种控制器和指标系统实现 自动弹性伸缩&#xff0c;主要包括 Pod水平伸缩&#xff08;HPA&#xff09;、垂直伸缩&#xff08;VPA&#xff09;、集群节点伸缩&#xff08;CA&#xff09; 三种方式。以下是核心机制和实…...

C++模版结构体的使用

1. convert_pointer 结构体模板 template<typename _SourceIterator, typename _DestT> struct convert_pointer {typedef typename convert_pointer<typename _SourceIterator::pointer, _DestT>::type type; };作用 这是一个递归模板&#xff0c;用于处理 _Sou…...

WebRTC 服务器之Janus架构分析

1. Webrtc三种类型通信架构 1.1 1 对 1 通信 1 对 1 通信模型设计的主要⽬标是尽量让两个终端进⾏直联&#xff0c;这样即可以节省服务器的资源&#xff0c;⼜可以提⾼ ⾳视频的服务质量。WebRTC ⾸先尝试两个终端之间是否可以通过 P2P 直接进⾏通信&#xff0c;如果⽆法直接…...

音视频开发成长之路与音视频知识总结

音视频开发曾经是一个富有挑战性和技术深度的领域。我来分享整理音视频开发的成长路径和知识体系&#xff1a; 音视频开发成长路线图 1. 基础阶段&#xff08;1-3个月&#xff09; 计算机基础&#xff1a;C/C、数据结构、操作系统音视频基础概念&#xff1a;采样率、比特率、…...

batch normalization和layer normalization区别

Normalization无非就是这样一个操作&#xff1a; 其中x是输入数据&#xff0c;维度为&#xff08;B&#xff0c;T&#xff0c;C&#xff09;&#xff0c;其中B是batchsize&#xff0c;T是序列长度&#xff0c;C是embedding维度&#xff1b;括号内是标准化操作&#xff0c;γ和…...

Android Compose 层叠布局(ZStack、Surface)源码深度剖析(14)

Android Compose 层叠布局&#xff08;ZStack、Surface&#xff09;源码深度剖析 一、引言 在 Android 应用开发领域&#xff0c;用户界面&#xff08;UI&#xff09;的设计与实现一直是至关重要的环节。随着技术的不断演进&#xff0c;Android Compose 作为一种全新的声明式…...

数据仓库方法论书籍及其阅读建议

A、关于数据仓库方法论的各书籍详细分析及汇总 1. ​​《Building the Data Warehouse (Third Edition)》 by W.H. Inmon​ 核心观点 ​企业级数据仓库&#xff08;EDW&#xff09;​​&#xff1a;自上而下的架构&#xff0c;采用第三范式&#xff08;3NF&#xff09;模型&…...

数据库 1.0

数据库就是放数据的地方 程序里面的数据就是暂时性的 要是想把数据永久性的储存 MySQL是典型的C / S架构 Client 云端 Sever 服务端 数据库服务的开启和关闭 可以在这里选择关闭开启&#xff0c;关闭之后就无法通过终端再连接mysql了 通过命令行的方式开启和关闭mysql&…...

给QCustomPlot添加一个QScrollBar滚动条、限制缩放范围、自动设置大小和右边栏垂直缩放

实现效果 实现思路 从QCustomPlot类派生一个类,进行个性化设置,在轴矩形的上边设置Margin,放一个滚动条,设置滚动条的样式 常量定义 #define NQSCRB 1000构造函数初始化 // 设置QScrollBar的样式// 顶部空--5,左侧空--6...

计算机系统结构 第二章 :缓存优化

零-1:复习cache的基础知识: 一、映像方式 直接映射 原理&#xff1a;主存被分成若干区&#xff0c;每个区大小与 Cache 相同&#xff0c;区内再分块&#xff0c;主存每个区中块的大小和 Cache 中块大小相等&#xff0c;且每个区包含的块数也与 Cache 中块数相等。主存中任意…...

软件工程实践

例一 用例文档 UC1注册 执行者 潜在会员 前置条件 潜在会员访问系统 后置条件 系统已记录注册信息 涉众利益 潜在会员——希望注册尽量简单&#xff0c;希望自己的信息不会泄露 商店——希望获得尽可能多的未来客户信息&#xff0c;特别是联系方法 基本路径 1.潜在会员请求注册…...

将Airtable导入NocoDB

将Airtable导入NocoDB 0. 前提条件1. 详细步骤 NocoDB提供了一种简化流程&#xff0c;可在几分钟内将您的Airtable数据库无缝转移到各种数据库管理系统&#xff0c;包括MySQL、Postgres和SQLite。此功能特别适合希望将Airtable数据库迁移到更强大且可扩展的数据库管理系统中的用…...

【云备份】服务端数据管理模块设计与实现

目录 一、要管理的数据 二、如何管理数据 三.数据管理类的设计 3.1.数据信息结构体的设计 3.2.数据管理类的设计 四.数据管理类实现 4.1.数据信息结构体的数据填充 4.2.数据管理类的实现 五. 源代码测试 数据管理模块&#xff1a;需要管理的数据有哪些&#xff0c;而…...

Qt开发:按钮类的介绍和使用

文章目录 一、命令按钮类 &#xff08;QPushButton&#xff09;1.1 基本功能介绍1.2 常用构造函数1.3 常用方法1.4 信号与槽使用示例1.5 开关按钮&#xff08;Checkable&#xff09;1.6 创建出菜单按钮&#xff08;Menu Button&#xff09; 二、工具按钮类 &#xff08;QToolBu…...

Clickhouse基于breakpad生成minidump文件,方便问题定位

背景 breakpad能够在程序崩溃的时候自动生成一个mini的core文件&#xff0c;能够帮助进行问题定位&#xff0c;但是clickhouse对于集成breappad的难度较大 查看github发现之前有大佬基于以前的分支有个MR&#xff0c;但是一直没有合并到社区&#xff0c;想来是有什么其他的原因…...

华为云Astro轻应用自定义连接器对接OBS云对象存储操作指南

操作难点图例(详细见下文详细操作步骤) 操作成功图例 说明:以下是通过自定义连接器创建新的OBS桶的图例 说明:以下是通过自定义连接器将数据内容嵌入创建新的OBS桶的图例 操作难点图例 说明:连接器编排需要注意的是动作选择、输入参数的设置等...

C# 运算符重载深度解析:从基础到高阶实践

运算符重载是 C# 中一项强大的特性&#xff0c;它允许开发者为用户自定义类型定义运算符的行为&#xff0c;使得代码更直观、更符合领域逻辑。本文将通过理论解析与实战示例&#xff0c;全面讲解运算符重载的实现规则、适用场景及注意事项。 一、运算符重载的核心概念 1. 什么…...

面试现场“震”情百态:HashMap扩容记

&#xff08;以下为符合要求的文章内容&#xff09; 【场景】 2024年秋招季某互联网大厂会议室 面试官&#xff1a;张工&#xff08;P8级架构师&#xff09; 求职者&#xff1a;马小帅&#xff08;双非二本应届生&#xff09; 第一轮提问&#xff08;Java基础篇&#xff09; …...

SCAU18124--N皇后问题

18124 N皇后问题 时间限制:5000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC Description 有N*N的国际象棋棋盘&#xff0c;要求在上面放N个皇后&#xff0c;要求任意两个皇后不会互杀&#xff0c;有多少种不同的放法&#xff1f; 输入格式 …...

MySQL 分库分表

对于使用 MySQL 作为数据库管理系统的应用来说&#xff0c;当数据量达到一定规模时&#xff0c;单库单表的架构会面临性能瓶颈&#xff0c;如查询缓慢、写入性能下降等问题。为了解决这些问题&#xff0c;可以使用分库分表技术。 二、为什么需要分库分表 2.1 单库单表的局限性…...

滑动窗口leetcode 904

代码&#xff1a; class Solution { public:int totalFruit(vector<int>& fruits) {int n fruits.size();unordered_map<int,int> window_type_count;int left 0;int ans 0;for(int right 0; right <n;right){while(window_type_count.size() 2 &&…...

用Maven定位和解决依赖冲突

用Maven定位和解决依赖冲突 一、依赖冲突的常见表现二、定位冲突依赖的4种方法2.1 使用Maven命令分析依赖树2.2 使用IDE可视化工具2.3 使用Maven Enforcer插件2.4 运行时分析 三、解决依赖冲突的5种方案3.1 排除特定传递依赖3.2 统一指定版本&#xff08;推荐&#xff09;3.3 使…...

八大排序之选择排序

本篇文章将带你详细了解八大基本排序中的选择排序 目录 &#xff08;一&#xff09;选择排序的时间复杂度和空间复杂度及稳定性分析 &#xff08;二&#xff09;代码实现 (三)输出结果 选择排序的基本原理是&#xff1a;每次从待排序的数组中找出最大值和最小值。具体流程是…...

SVM实战:从理论到鸢尾花数据集的分类可视化

SVM实战&#xff1a;从理论到鸢尾花数据集的分类可视化 在机器学习的广阔领域中&#xff0c;支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;作为一种经典且强大的分类算法&#xff0c;备受瞩目。它凭借独特的思想和卓越的性能&#xff0c;在模式识…...

深入解析 Stacking:集成学习的“超级英雄联盟

在机器学习的世界里&#xff0c;我们常常面临一个挑战&#xff1a;单一模型往往难以完美地解决复杂问题。就像漫威电影中的超级英雄们一样&#xff0c;每个模型都有自己的独特能力&#xff0c;但也有局限性。那么&#xff0c;如何让这些模型“联手”发挥更大的力量呢&#xff1…...

C# 编程核心:控制流与方法调用详解

在编程中&#xff0c;控制流和方法调用是构建程序逻辑的两大基石。它们决定了代码的执行顺序和模块化协作方式。本文将从基础概念出发&#xff0c;结合代码示例&#xff0c;深入解析这两部分内容。 控制流&#xff1a;程序执行的指挥棒 控制流决定了代码的执行路径&#xff0…...

PyTorch_张量基本运算

基本运算中&#xff0c;包括add, sub, mul, div, neg等函数&#xff0c;以及这些函数的带下划线的版本add_, sub_, mul_, div_, neg_, 其中带下划线的版本为修改原数据。 代码 import torch import numpy as np # 不修改原数据的计算 def test01():data torch.randint(0, 10…...

C++负载均衡远程调用学习之订阅功能与发布功能

目录 1.lars-DnsV0.1回顾 2.Lars-DnsV0.2-订阅功能的订阅模块分析 3.Lars-DnsV0.2-订阅模块的类的单例创建及方法属性初始化 4.Lars-DnsV0.2-发布功能的实现 5.Lars-DnsV0.2-发布功能的总结 6.Lars-DnsV0.2-订阅流程复习 7.Lars-DnsV0.2-订阅模块的集成 8.Lars-DnsV0.2订…...