【差分约束】P5590 赛车游戏|省选-
本文涉及知识点
【数学 线性代数】差分约束
P5590 赛车游戏
题目描述
R 君和小伙伴打算一起玩赛车。但他们被老司机 mocania 骗去了秋名山。
秋名山上有 n n n 个点和 m m m 条边,R 君和他的小伙伴要从点 1 1 1 出发开往点 n n n,每条边都有一个初始的方向。老司机 mocania 拿到了秋名山的地图但却不知道每条路有多长。显然,为了赛车游戏的公平,每条 1 1 1 到 n n n 的路径应当是等长的。mocania 想,我就随便给边标上一个 1...9 1...9 1...9 的长度,反正傻傻的 R 君也看不出来。
可 mocania 的数学不大好,不知道怎么给边标长度,只能跑来请教你这个 OI 高手了。
输入格式
第一行两个整数 n , m n,m n,m。
接下来 m m m 行,每行两个整数 u , v u,v u,v,表示一条从 u u u 到 v v v 的有向边。
输出格式
如果无解或者不存在 1 1 1 到 n n n 的路径直接输出一个 − 1 -1 −1。
如果有解第一行输出两个数 n , m n,m n,m,和输入文件中给出的相同。
接下来 m m m 行,每行三个整数 u , v , w u,v,w u,v,w,表示把从 u u u 到 v v v 的路径的长度设置为 w w w,其中 w w w 是一个 1 ∼ 9 1\sim 9 1∼9 的整数。要求所有边的出现顺序和题目中给出的相同。
输入输出样例 #1
输入 #1
10 10
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
1 10
输出 #1
10 10
1 2 1
2 3 1
3 4 1
4 5 1
5 6 1
6 7 1
7 8 1
8 9 1
9 10 1
1 10 9
说明/提示
数据范围
本题启用 Special Judge 和 Subtask。
Subtask #1( 30 30 30 分): n ≤ 10 n \leq 10 n≤10, m ≤ 20 m \leq 20 m≤20;
Subtask #2( 30 30 30 分): n ≤ 100 n \leq 100 n≤100, m ≤ 200 m \leq 200 m≤200;
Subtask #3( 40 40 40 分): n ≤ 1000 n \leq 1000 n≤1000, m ≤ 2000 m \leq 2000 m≤2000。
保证数据中不会出现重边,自环。
P5590 赛车游戏 差分约束
一,以1为起点BFS,如果无法到达N点,返回-1。
二,所有边反转,从N开始BFS。两轮BFS都到达的点才处理,有一轮没达到的点及相连的边删除。
三,假定各边的权重为1,求各节点到1的最长路leves[i]。如果有环(正环),返回-1。
四,按leves[i] 从大到小枚举各节点, 枚举i的后续节点j。m1 = min(leves[j]),m2=max(leves[j]),有leves[i] < leves[j],故leves[i] < m1恒成立。确保leves[i] < m1的前提上, 增加leves[i] 及其前置节点,使得leves[j]-leves[i] <=9.
第四步完成后,leves[j] - leves[i] 就是i到j 的权。如果leves[i] 有多个合法值,都要枚举。
综合3到5就是差分约束。leves[i] < leves[j] ,即levevs[i] -leves[j] <=-1,leves[j]-leves[i] <=9。由于levevs[i] -leves[j]<=-1,地图有环,差分系统的有向图也一定有环。
由于边权最大9,边数1000。故1e4就是极大值。增加0到各点权位1e4的边。以0为起点,求最小路径。
总结
删除非起点终点路径上的点和边后。起点到任意点的任意路径路程都相等,否则和起点到终点任意路径相等矛盾。vis[i]记录起点到i的最短路,也就是起点i到任意路径的路程。
u有边指向v,则:uv的边权是dis[v]-dis[u],可以是1到9的任意值。
本题是差分约束的充分条件,故差分约束,无解,则本题无解。
下面用数学归纳法来证明差分的系统的解一定符合所有路径都是最短路。
经过0条边的路径,只有一条,一定符合本题。
如果经过i条边的路径都符合,则经过i+1条边的路径也符合。令第i+1条边是u → \rightarrow →v,则此路径的路程是:dis[u]+(dis[v]-disv[u])= div[v]就是最短路。
注意:忽略的边任意权值。
代码
核心代码
#include <iostream>
#include <sstream>
#include <vector>
#include<map>
#include<unordered_map>
#include<set>
#include<unordered_set>
#include<string>
#include<algorithm>
#include<functional>
#include<queue>
#include <stack>
#include<iomanip>
#include<numeric>
#include <math.h>
#include <climits>
#include<assert.h>
#include<cstring>
#include<list>#include <bitset>
using namespace std;template<class T1, class T2>
std::istream& operator >> (std::istream& in, pair<T1, T2>& pr) {in >> pr.first >> pr.second;return in;
}template<class T1, class T2, class T3 >
std::istream& operator >> (std::istream& in, tuple<T1, T2, T3>& t) {in >> get<0>(t) >> get<1>(t) >> get<2>(t);return in;
}template<class T1, class T2, class T3, class T4 >
std::istream& operator >> (std::istream& in, tuple<T1, T2, T3, T4>& t) {in >> get<0>(t) >> get<1>(t) >> get<2>(t) >> get<3>(t);return in;
}template<class T = int>
vector<T> Read() {int n;scanf("%d", &n);vector<T> ret(n);for (int i = 0; i < n; i++) {cin >> ret[i];}return ret;
}template<class T = int>
vector<T> Read(int n) {vector<T> ret(n);for (int i = 0; i < n; i++) {cin >> ret[i];}return ret;
}template<int N = 1'000'000>
class COutBuff
{
public:COutBuff() {m_p = puffer;}template<class T>void write(T x) {int num[28], sp = 0;if (x < 0)*m_p++ = '-', x = -x;if (!x)*m_p++ = 48;while (x)num[++sp] = x % 10, x /= 10;while (sp)*m_p++ = num[sp--] + 48;AuotToFile();}void writestr(const char* sz) {strcpy(m_p, sz);m_p += strlen(sz);AuotToFile();}inline void write(char ch){*m_p++ = ch;AuotToFile();}inline void ToFile() {fwrite(puffer, 1, m_p - puffer, stdout);m_p = puffer;}~COutBuff() {ToFile();}
private:inline void AuotToFile() {if (m_p - puffer > N - 100) {ToFile();}}char puffer[N], * m_p;
};template<int N = 1'000'000>
class CInBuff
{
public:inline CInBuff() {}inline CInBuff<N>& operator>>(char& ch) {FileToBuf();ch = *S++;return *this;}inline CInBuff<N>& operator>>(int& val) {FileToBuf();int x(0), f(0);while (!isdigit(*S))f |= (*S++ == '-');while (isdigit(*S))x = (x << 1) + (x << 3) + (*S++ ^ 48);val = f ? -x : x; S++;//忽略空格换行 return *this;}inline CInBuff& operator>>(long long& val) {FileToBuf();long long x(0); int f(0);while (!isdigit(*S))f |= (*S++ == '-');while (isdigit(*S))x = (x << 1) + (x << 3) + (*S++ ^ 48);val = f ? -x : x; S++;//忽略空格换行return *this;}template<class T1, class T2>inline CInBuff& operator>>(pair<T1, T2>& val) {*this >> val.first >> val.second;return *this;}template<class T1, class T2, class T3>inline CInBuff& operator>>(tuple<T1, T2, T3>& val) {*this >> get<0>(val) >> get<1>(val) >> get<2>(val);return *this;}template<class T1, class T2, class T3, class T4>inline CInBuff& operator>>(tuple<T1, T2, T3, T4>& val) {*this >> get<0>(val) >> get<1>(val) >> get<2>(val) >> get<3>(val);return *this;}template<class T = int>inline CInBuff& operator>>(vector<T>& val) {int n;*this >> n;val.resize(n);for (int i = 0; i < n; i++) {*this >> val[i];}return *this;}template<class T = int>vector<T> Read(int n) {vector<T> ret(n);for (int i = 0; i < n; i++) {*this >> ret[i];}return ret;}template<class T = int>vector<T> Read() {vector<T> ret;*this >> ret;return ret;}
private:inline void FileToBuf() {const int canRead = m_iWritePos - (S - buffer);if (canRead >= 100) { return; }if (m_bFinish) { return; }for (int i = 0; i < canRead; i++){buffer[i] = S[i];//memcpy出错 }m_iWritePos = canRead;buffer[m_iWritePos] = 0;S = buffer;int readCnt = fread(buffer + m_iWritePos, 1, N - m_iWritePos, stdin);if (readCnt <= 0) { m_bFinish = true; return; }m_iWritePos += readCnt;buffer[m_iWritePos] = 0;S = buffer;}int m_iWritePos = 0; bool m_bFinish = false;char buffer[N + 10], * S = buffer;
};template<class T = int, T iDef = INT_MAX / 2>
class CDisNegativeRing //贝尔曼-福特算法
{
public:bool Dis(int N, vector<tuple<int, int, int>> edgeFromToW, int start) {vector<T> pre(N, iDef);pre[start] = 0;for (int t = 0; t < N; t++) {auto cur = pre;for (const auto& [u, v, w] : edgeFromToW) {cur[v] = min(cur[v], pre[u] + w);}if (t + 1 == N) {for (int i = 0; i < N; i++) {if (pre[i] != cur[i]) { return false; }}}pre.swap(cur);}m_vDis = pre;return true;}vector<T> m_vDis;
};class CNeiBo
{
public:static vector<vector<int>> Two(int n, const vector<pair<int, int>>& edges, bool bDirect, int iBase = 0){vector<vector<int>> vNeiBo(n);for (const auto& [i1, i2] : edges){vNeiBo[i1 - iBase].emplace_back(i2 - iBase);if (!bDirect){vNeiBo[i2 - iBase].emplace_back(i1 - iBase);}}return vNeiBo;}static vector<vector<int>> Two(int n, const vector<vector<int>>& edges, bool bDirect, int iBase = 0){vector<vector<int>> vNeiBo(n);for (const auto& v : edges){vNeiBo[v[0] - iBase].emplace_back(v[1] - iBase);if (!bDirect){vNeiBo[v[1] - iBase].emplace_back(v[0] - iBase);}}return vNeiBo;}static vector<vector<std::pair<int, int>>> Three(int n, vector<vector<int>>& edges, bool bDirect, int iBase = 0){vector<vector<std::pair<int, int>>> vNeiBo(n);for (const auto& v : edges){vNeiBo[v[0] - iBase].emplace_back(v[1] - iBase, v[2]);if (!bDirect){vNeiBo[v[1] - iBase].emplace_back(v[0] - iBase, v[2]);}}return vNeiBo;}static vector<vector<int>> Mat(vector<vector<int>>& neiBoMat){vector<vector<int>> neiBo(neiBoMat.size());for (int i = 0; i < neiBoMat.size(); i++){for (int j = i + 1; j < neiBoMat.size(); j++){if (neiBoMat[i][j]){neiBo[i].emplace_back(j);neiBo[j].emplace_back(i);}}}return neiBo;}
};
class CBFSDis
{
public:CBFSDis(vector<vector<int>>& vNeiB, vector<int> start){m_vDis.assign(vNeiB.size(), m_iNotMayDis);queue<int> que;for (const auto& n : start){m_vDis[n] = 0;que.emplace(n);}while (que.size()){const int cur = que.front();que.pop();for (const auto next : vNeiB[cur]){if (m_iNotMayDis != m_vDis[next]){continue;}m_vDis[next] = m_vDis[cur] + 1;que.emplace(next);}}}
public:const int m_iNotMayDis = 1e9;vector<int> m_vDis;
};
class Solution {
public:vector<int> Ans(int N, const vector<pair<int, int>>& edge) {auto neiBo = CNeiBo::Two(N, edge, true, 1);vector<vector<int>> neiBoBack(N);for (int i = 0; i < N; i++) {for (const auto& j : neiBo[i]) {neiBoBack[j].emplace_back(i);}}CBFSDis dis1(neiBo, { 0 });if (dis1.m_iNotMayDis == dis1.m_vDis.back()) { return {}; }CBFSDis dis2(neiBoBack, { N - 1 });vector<tuple<int, int, int>> edge2;auto Not = [&](int i, int j) {if ((dis1.m_vDis[i] > N) || (dis1.m_vDis[j] > N)) { return true; }if ((dis2.m_vDis[i] > N) || (dis2.m_vDis[j] > N)) { return true; }return false;};for (auto [i, j] : edge) {i--, j--;if (Not(i, j)) { continue; }//eves[i] < leves[j] ,即levevs[i] -leves[j] <=-1,leves[j]-leves[i] <=9。由于levevs[i] -leves[j]<=-1,edge2.emplace_back(j, i, -1);edge2.emplace_back(i, j, 9);}CDisNegativeRing dis;if (!dis.Dis(N, edge2, 0)) { return {}; }vector<int> ans;for (auto [i, j] : edge) {i--, j--;if (Not(i, j)) { ans.emplace_back(9); continue; }ans.emplace_back(dis.m_vDis[j] - dis.m_vDis[i]);}return ans;}
};int main() {
#ifdef _DEBUGfreopen("a.in", "r", stdin);
#endif // DEBUG ios::sync_with_stdio(0);int n, m ;cin >> n >> m ; auto ope = Read<pair< int,int>>(m);
#ifdef _DEBUG printf("n=%d", n);Out(ope, "edge=");//Out(ope, ",ope=");//Out(edge2, ",edge2=");/*Out(que, "que=");*/
#endif // DEBUG auto res = Solution().Ans(n,ope);if (res.empty()) {cout << -1;}else {cout << n << " " << m << "\n";for (int i = 0; i < m; i++) {cout << ope[i].first << " " << ope[i].second << " " << res[i] << "\n";}}return 0;
}
单元测试
int n;vector<pair<int, int>> edge;TEST_METHOD(TestMethod1){n = 3, edge = { {1,2} };auto res = Solution().Ans(n, edge);AssertV({}, res);}TEST_METHOD(TestMethod2){n = 10,edge = { {1,2},{2,3},{3,4},{4,5},{5,6},{6,7},{7,8},{8,9},{9,10},{1,10} };auto res = Solution().Ans(n, edge);vector<int >act(edge.size(), 1);act.back() = 9;AssertV(act, res);}TEST_METHOD(TestMethod3){n = 3, edge = { {1,3},{1,2} };auto res = Solution().Ans(n, edge);AssertV({9,9}, res);}
扩展阅读
我想对大家说的话 |
---|
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。 |
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作 |
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注 |
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。 |
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。 |
如果程序是一条龙,那算法就是他的是睛 |
失败+反思=成功 成功+反思=成功 |
视频课程
先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176
测试环境
操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。
相关文章:
【差分约束】P5590 赛车游戏|省选-
本文涉及知识点 【数学 线性代数】差分约束 P5590 赛车游戏 题目描述 R 君和小伙伴打算一起玩赛车。但他们被老司机 mocania 骗去了秋名山。 秋名山上有 n n n 个点和 m m m 条边,R 君和他的小伙伴要从点 1 1 1 出发开往点 n n n,每条边都有一个…...
咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包
咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包(内有教程) 刷机教程简单说明: 1、把下载好的刷机包,U盘里建立一个upgrade文件夹,固件放入此文件夹里,放入U盘中,注意升级包为压缩包不要对…...
【软件工程】06_软件设计
6.1 软件设计概述 1. 软件设计的目标 软件设计的最基本目标就是回答 “概括地描述系统如何实现用户所提出来的功能和性能等方面的需求?” 这个问题。 软件设计的目标是根据软件需求分析的结果,设想并设计软件,即根据目标系统的逻辑模型确定目标系统的物理模型。包括软件体系…...
在Flutter中使用Future读取一个大文件会导致线程阻塞吗
目录 一、Future 与文件读取的机制 1. Dart 的异步 I/O 原理 2. 代码示例 二、什么情况下会阻塞主线程? 1. I/O 操作本身不会阻塞 2. 数据处理可能阻塞 3. 示例对比 三、如何避免阻塞主线程? 1. 将耗时操作移到 Isolate 2. 使用 compute 函数(简化 Isolate 操作)…...
2025-03-17 Unity 网络基础1——网络基本概念
文章目录 1 网络1.1 局域网1.2 以太网1.3 城域网1.4 广域网1.5 互联网(因特网)1.6 万维网1.7 小结 2 IP 地址2.1 IP 地址2.2 端口号2.3 Mac 地址2.4 小结 3 客户端与服务端3.1 客户端3.2 服务端3.3 网络游戏中的客户端与服务端 1 网络 在没有网络之前…...
2025-03-17 学习记录--C/C++-PTA 习题4-8 高空坠球
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 习题4-8 高空坠球 皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下&…...
Java网络编程socket
一、UDP 特点: ① 用户数据报协议(User Datagram Protocol) ② UDP是面向无连接通信协议 ③ 速度快,一次只能传输64KB数据,数据不安全,容易丢失 (1)单播 一对一 客户端…...
蓝桥杯备赛 Day0_移动零
🎈 个人主页👉:tbRNA-CSDN博客tbRNA-CSDN博客tbRNA-CSDN博客 💯 个人简介:在校大学生一枚💋. 😍 希望我的文章对大家有着不一样的帮助,欢迎大家关注我,感谢大家的多多支持…...
Razor C# 变量
Razor C# 变量 引言 在ASP.NET MVC和Razor视图引擎中,变量是构建动态网页的基础。理解Razor C#变量的使用对于开发者来说至关重要。本文将详细介绍Razor C#变量的概念、类型、作用域以及如何在实际项目中有效使用它们。 一、Razor C# 变量的概念 Razor C# 变量是存储在Raz…...
产品更新丨谷云科技ETLCloud 3月更新速递
本月,我们的数据集成产品ETLCloud继续迎来多项更新,进一步提升系统的兼容性和用户体验。以下是本月更新的亮点内容: 新增10项功能组件,持续丰富产品易用性 聚水潭-奇门通用组件 新增聚水潭-奇门通用组件,帮助企业更…...
如何高效定位网络丢包问题?
引言 本期分享一个比较常见的网络问题--丢包。例如我们去ping一个网站,如果能ping通,且网站返回信息全面,则说明与网站服务器的通信是畅通的,如果ping不通,或者网站返回的信息不全等,则很可能是数据被丢包…...
gitlab将本地项目提交到远程dev分支
获取Git路径 首先从远程获取到git路径,将给的git地址进行克隆到本地文件; git clone http:************.git 按照git地址的文件路径将本地项目,拷贝到目标文件中 在该路径中,初始化命令; # 初始化项目 git init #…...
Linux命令学习使用列表
Linux命令学习使用列表 1 系统启动相关2 系统网络相关3 系统磁盘相关4 系统定时任务5 系统进程监控 1 系统启动相关 1.1 麒麟V10 sp3修改选择默认启动项 2 系统网络相关 2.1 Linux IP 配置 2.2 ping监测网络通信情况 3 系统磁盘相关 4 系统定时任务 5 系统进程监控 5.1 L…...
分布式锁: 并发时,redis如何避免删别人的锁
在使用Redis实现分布式锁的时候,如何避免在并发情况下误删别人的锁。首先,分布式锁的基本概念:是多个客户端在访问共享资源时,通过某种机制来确保同一时间只有一个客户端能持有锁。 Redis通常用SET命令加上NX选项来创建锁…...
解决 Jupyter Notebook 中本地模块修改不生效的问题
解决 Jupyter Notebook 中本地模块修改不生效的问题 问题原因 当你在 Jupyter Notebook 中导入本地目录的库,修改后重新运行 import 语句却发现修改没有生效,这是因为 Python 的模块缓存机制。Python 解释器会将已导入的模块缓存在 sys.modules 字典中…...
蓝桥杯嵌入式赛道复习笔记2(按键控制LED灯,双击按键,单击按键,长按按键)
硬件原理解释 这张图展示了一个简单的按键电路原理图,其中包含四个按键(PB0、PB1、PB2、PB3、PA0),每个按键通过一个10kΩ的上拉电阻连接到VDD(电源电压),并接地(GND)。 …...
简单爬虫--框架
简单爬虫 import requests import re import chardet# 模拟浏览器的请求头 headers {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" }# 发送 HTTP 请求获取百…...
游戏引擎学习第163天
我们可以在资源处理器中使用库 因为我们的资源处理器并不是游戏的一部分,所以它可以使用库。我说过我不介意让它使用库,而我提到这个的原因是,今天我们确实有一个选择——可以使用库。 生成字体位图的两种方式:求助于 Windows 或…...
多模态模型Orpheus,基于病理图像的乳腺癌复发风险智能评估工具|顶刊解读·25-03-17
小罗碎碎念 在医学领域,尤其是乳腺癌治疗方面,准确评估患者的复发风险至关重要。对于占乳腺癌很大比例的 HR/HER2 - 亚型患者,目前主要依靠 Oncotype DX 的复发评分(RS)来指导治疗决策。 然而,该检测存在…...
基于MapReduce的气候数据分析
标题:基于MapReduce的气候数据分析 内容:1.摘要 本文聚焦于基于MapReduce的气候数据分析。背景在于随着全球气候变化问题日益严峻,海量气候数据的高效处理和分析成为关键。目的是利用MapReduce技术对气候数据进行有效挖掘,以揭示气候变化规律和趋势。方…...
Spring 原生启动过程
Spring(Spring Framework)的原生启动过程,它主要涉及 ApplicationContext 的初始化、BeanFactory 的加载、Bean 的创建与依赖注入。下面详细解析: Spring 原生启动过程 Spring 本身不依赖 SpringApplication,其核心在…...
【React】useEffect、useLayoutEffect底层机制
目录 useEffect不设置依赖设置空数组,无依赖设置多个依赖返回值是一个函数总结useEffect的使用环境useEffect 中发送请求错误示例用.then获取数据在useEffect创建一个函数 总结 useLayoutEffectuseLayoutEffect 和useEffect区别执行时机:浏览器渲染的关系…...
RTSP/Onvif视频安防监控平台EasyNVR调用接口返回匿名用户名和密码的原因排查
视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。平台拓展性强、支持二次开发与集成,可应用在景区、校园、水利、社区、工地等场…...
Linux-数据结构-线性表-单链表
一.链表的概念 【1】线性表的链式存储 解决顺序存储的缺点,插入和删除,动态存储问题。 【2】特点: 线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以不连续。可以被存…...
基于SpringBoot+Vue3实现的宠物领养管理平台功能一
一、前言介绍: 1.1 项目摘要 随着社会经济的发展和人们生活水平的提高,越来越多的人开始关注并参与到宠物领养中。宠物已经成为许多家庭的重要成员,人们对于宠物的关爱和照顾也日益增加。然而,传统的宠物领养流程存在诸多不便&a…...
DeepSeek进阶应用(二):结合Kimi制作PPT(双AI协作教程)
🌟引言: DeepSeek作为国产AI大模型,以强大的逻辑推理和结构化内容生成能力著称,擅长根据用户需求生成PPT大纲或Markdown文本;Kimi的PPT助手则能解析结构化内容并套用模板快速生成美观的PPT,两者结合实现“内容+设计”全流程自动化 名人说:苔花如米小,也学牡丹开。——…...
准确---快速安装nginx
1. 安装 Nginx 和 Stream 模块 首先,使用 yum 安装 Nginx 及其 Stream 模块: yum install nginx yum install nginx-mod-stream这将安装 Nginx 及其 Stream 模块,Stream 模块用于处理 TCP 和 UDP 流量,通常用于代理、负载均衡等…...
本地知识库RAG总结
目录 RAG流程: 知识库的要求: 知识抽取: 知识存储: 向量化: 知识检索: 应用客户端: RAG智能问答应用几个痛点: 如何提升召回率改进思路: 如何提升回答专业性: RAG评测: 总结: 参考…...
Trae IDE 介绍与使用教程
一、产品概述 Trae IDE 是由字节跳动推出的国内首个原生AI集成开发环境,专为中文开发者深度定制,旨在通过智能化工具降低编程门槛,提升开发效率。作为对标国外Cursor的国产替代方案,Trae不仅继承了AI驱动的代码生成与补全功能&am…...
OceanBase 用户问题精选答疑:OceanBase 版本升级解析
背景 此篇博客的源自于OceanBase社区论坛内一位名为皇甫侯的热心用户所提的建议,希望向OceanBase的用户介绍OceanBase的版本升级路径。本文以一个版本升级为示例,汇总了对用户而言比较重要的版本升级要点,期望通过这份分享,能让读…...
SpringBoot 和vue前后端配合开发网页拼图10关游戏源码技术分享
今天分享一个 前后端结合 的网页游戏 开发项目源码技术。 这也是我第一次写游戏类的程序,虽然不是特别复杂的游戏,但是是第一次写,肯定要记录一下了,哈哈。 游戏的内容 就是 我们显示中玩的那个 拼图碎片的 游戏,类似下…...
LeetCode 1005. K 次取反后最大化的数组和 java题解
https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/description/ 看着简单但是写si人的一题。 class Solution {public int largestSumAfterKNegations(int[] nums, int k) {Arrays.sort(nums);//排序int last_negative-1,first_positive-1;//最后一个负…...
c++ 类和对象 —— 中 【复习笔记】
1. 类的默认成员函数 如果一个类什么成员都没有,简称空类。但实际上,任何类在不写成员时,编译器会自动生成6个默认成员函数(用户未显式实现,编译器生成的成员函数) 这6个成员函数可分为三类: …...
「速通AI编程开发」共学(三):提示词(Prompts)配置项
「速通AI编程开发」共学(三) 一、共学课程来源学习初衷 二、介绍不同模式下的提示词(Prompts)支持性提示词 三、提示词学习材料分享 一、共学课程来源 Datawhale通过开源学习模式,助力AI学习者与知识连接,…...
Spring Cloud Stream - 构建高可靠消息驱动与事件溯源架构
一、引言 在分布式系统中,传统的 REST 调用模式往往导致耦合,难以满足高并发和异步解耦的需求。消息驱动架构(EDA, Event-Driven Architecture)通过异步通信、事件溯源等模式,提高了系统的扩展性与可观测性。 作为 S…...
电脑如何录屏
以下是电脑录屏的常用方法总结,涵盖系统自带工具、第三方软件及进阶功能,结合不同场景需求推荐最佳方案: 一、系统自带工具 Xbox Game Bar(Windows 10/11) 操作步骤:按 WinG 打开游戏栏 → 点击录制按钮&am…...
【微知】plantuml在泳道图中如何将多个泳道框起来分组并且设置颜色?(box “浏览器“ #LightGreen endbox)
泳道分组并且着色 分组用 box和endbox ,颜色用#xxx,标注用"xxx" box "浏览器" #LightGreen participant "浏览器1" as Browser participant "浏览器2" as Browser2 endboxparticipant "服务端" as …...
c++ 中的可变参数模板与折叠表达式
c 11 引入了可变参数模板,c 17 引入了折叠表达式,比 c 语言的可变参数更加简洁灵活。这篇博客总结了一些例子。 …(省略号)用于可变参数(Variadic Arguments),它可以放在模板参数 或 函数参数的…...
websocket学习手册及python实现简单的聊天室
概述 WebSocket 是一种网络通信协议,允许在单个 TCP 连接上进行全双工通信。它最核心的优势就在于实现了持久连接,实现了实时的数据传输。HTTP 协议有一个很大的缺点,通信只能由客户端发起,服务器返回响应后连接就会关闭…...
论文阅读:2023-arxiv Can AI-Generated Text be Reliably Detected?
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 文章目录 Abstract(摘要)1 Introduction(引言)Conclusion(结论) Can AI-Generated Text be Reliably D…...
Mock接口编写教程-axios-mock-adapter(React)
Mock模拟接口编写教程 直接在前端实现接口模拟 1.第一步 设置模拟接口 // mock.ts import axios from axios import MockAdapter from axios-mock-adapter// 创建一个模拟适配器 const mock new MockAdapter(axios)// 设置模拟接口 export const setupMock () > {mock.…...
react(一):特点-基本使用-JSX语法
初识React React是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发和维护。 官网文档:React 官方中文文档 特点 1.声明式编程 2.组件化开发 3.多平台适配 开发依赖 开发React必须依赖三个库: 1.react:包含react所必…...
golang函数与方法的区别
1.调用方式的区别 函数的调用方式:函数名(参数...) 方法的调用方式: 变量.方法名(参数...) 2.函数的使用 package mainimport "fmt" //函数参数为值类型,调用的时候只能传递值类型数据&#…...
解决 openeuler 系统 docker 下载慢,docker 镜像加速
一、步骤说明 1. 编辑 Docker 配置文件 Docker 的镜像源配置文件路径为 /etc/docker/daemon.json。如果该文件不存在,则需要先创建目录和文件。 # 创建目录(如果不存在) sudo mkdir -p /etc/docker# 编辑配置文件(使用 nano 或…...
Android ARouter的详细使用指南
Android ARouter的详细使用指南。我需要先确定用户的基础,可能他们已经有Android开发经验,但对ARouter不太熟悉。首先,我应该介绍ARouter是什么,解决什么问题,比如模块化中的页面跳转问题。然后,需要分步骤…...
PosterRender 实现微信下程序 分享商品生成海报
PosterRender 是什么 PosterRender 是一种专注于生成高质量海报图像的技术或工具,常用于生成静态图片,特别是适合用于营销、宣传和展示的图形设计。它通常用于在服务端或客户端渲染复杂的图像,包括文字、图形、图标、背景等,生成…...
电机控制常见面试问题(十五)
文章目录 一、电机气隙二、电气时间三.电机三环控制详解四.驱动板跳线意义五.电机开环自检 一、电机气隙 电机气隙是定子和转子之间的空隙,防止钉子转子运转时物理接触,此外,气隙是磁路的重要环节,磁场需通过气隙传递能量&#x…...
基于云漂移优化(Cloud Drift Optimization,CDO)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码
一、云漂移优化算法 云漂移优化(Cloud Drift Optimization,CDO)算法是2025年提出的一种受自然现象启发的元启发式算法,它模拟云在大气中漂移的动态行为来解决复杂的优化问题。云在大气中受到各种大气力的影响,其粒子的…...
【第9章】亿级电商平台订单系统-整体技术架构设计
1-1 本章导学 课程主题:系统蓝图描绘与整体技术架构设计核心学习内容: ▶️ 订单系统的整体技术架构设计 ▶️ 架构设计核心方法论与实践应用本章核心内容架构 1. 技术预研 架构设计的基础支撑环节关键技术可行性分析与选型依据2. 整体技术架构设计方法与步骤 结构化设计方法…...
harmonyOS NEXT开发与前端开发深度对比分析
文章目录 1. 技术体系概览1.1 技术栈对比1.2 生态对比 2. 开发范式比较2.1 鸿蒙开发范式2.2 前端开发范式 3. 框架特性对比3.1 鸿蒙 Next 框架特性3.2 前端框架特性 4. 性能优化对比4.1 鸿蒙性能优化4.2 前端性能优化 5. 开发工具对比5.1 鸿蒙开发工具5.2 前端开发工具 6. 学习…...