(个人题解)第十六届蓝桥杯大赛软件赛省赛C/C++ 研究生组
宇宙超级无敌声明:个人题解(好久不训练,赛中就是一个憨憨)
先放代码吧,回头写思路。
文章目录
- A. 数位倍数
- B. IPv6
- C. 变换数组
- D. 最大数字
- E. 冷热数据队列
- F. 01串
- G. 甘蔗
- H. 原料采购
A. 数位倍数
问:
在1至202504 (含)中,有多少个数的各个数位之和是5的整数倍。
code:
#include<bits/stdc++.h>using namespace std;int main(){int cnt = 0;for(int i = 1; i <= 202504; i++){int tmp = 0, x = i;while(x){tmp += x % 10;x /= 10;}if(tmp % 5 == 0){cnt++;}} cout << cnt << endl;return 0;
}
B. IPv6
问:
所有IPv6地址的最短缩写的长度和是多少,对1e9+7取模。
思路:
八段IPv6地址,每一段有四位十六进制数。考虑每一位是否为零,使用四位二进制表示(0 - 15)。
eg:0101,表示第三位是有值的,这个段长度为3,有15*15种方案
DFS搜每一段,然后在考虑连续多个段为零的情况。
ps: 赛后发现数组忘记清零了/(ㄒoㄒ)/~~
code:
#include<bits/stdc++.h>
#define ll long long
using namespace std;const ll mod = 1e9 + 7;int a[20], b[20], is0[20], n = 8;
ll res = 0;void dfs(int pos){if(pos == n+1){for(int i = 1; i <= n; i++){int x = a[i];if(x == 0) b[i] = 1, is0[i] = 1; else{while(x){b[i]++;x >>= 1;} }}ll len = 7, cnt = 0, mx = 0, flag = 0;for(int i = 1; i <= n; i++){len += b[i];if(is0[i] == 0){ // 不是0 if(cnt >= mx){ // 细节 >= if(i == cnt) flag = 1;else flag = 0;mx = cnt;}cnt = 0;} else cnt++;b[i] = is0[i] = 0;}if(cnt > mx){ // 细节 > mx = cnt;flag = 1;}if(mx == 8) len = 2;else if(flag && mx > 0) len = len - (2 * mx - 1) + 1; // 首尾长度+1 else if(mx > 0) len = len - (2 * mx - 1); ll base = 1;for(int i = 1; i <= n; i++){int x = a[i];while(x){if(x & 1) base = base * 25 % mod;x >>= 1;}}res = (res + len * base % mod) % mod;return;}for(int i = 0; i < 16; i++){a[pos] = i;dfs(pos+1);}
}int main(){dfs(1);cout << res << endl;return 0;
}
C. 变换数组
问:
对数组a的每个元素进行 m 次操作,每次操作令 a[i] = a[i] * bit(a[i]), 其中 bit(a[i]) 表示 a[i] 的二进制表示有多
少个1。
思路:
数据范围不大,直接模拟。
code:
#include<bits/stdc++.h>using namespace std;const int maxn = 1e3 + 5;int a[maxn];int main(){int n, m;cin >> n;for(int i = 1; i <= n; i++) cin >> a[i];cin >> m;for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){int cnt = 0, x = a[i];while(x){if(x & 1) cnt++;x >>= 1;}a[i] *= cnt;}}for(int i = 1; i <= n; i++) cout << a[i] << (i == n ? "\n" : " ");return 0;
}
D. 最大数字
问:
有 n 个连续的整数1,2,3,··· ,n,可以自由排列它们的顺序。
然后,把这些数字转换成二进制表示,按照排列顺序拼接形成一个新的二进制数。
目标是让这个二进制数的值最大,并输出这个二进制对应的十进制表示。
思路:
首先,考虑如何排序:
如下图,进行先序遍历,即可得到最大的二进制表示。
再考虑如何输出这个数,我写了个大数加法,过 n <= 1e3,没问题。对于所有数据的 n <= 1e4,坐等大佬的最优解。
code:
#include<bits/stdc++.h>using namespace std;const int maxn = 1e3 + 5;string add(string a, string b){ // 大数加法if(a.size() > b.size()) swap(a, b);int lena = a.size(), lenb = b.size(), flag = 0;for(int i = 0; i < lena; i++){int num = a[lena - i - 1] - '0' + b[lenb - i - 1] - '0' + flag;if(num >= 10) flag = 1, num -= 10;else flag = 0;b[lenb - i - 1] = char(num + '0');}if(flag){if(lena == lenb) b = "1" + b;else{int pos = lena;while(flag && pos < lenb){b[lenb - pos - 1] += 1;if(b[lenb - pos - 1] > '9'){b[lenb - pos - 1] = '0';flag = 1;}else flag = 0;pos++;}if(flag) b = "1" + b;}}return b;
}string t = "";void dfs(int x, int n, string s){ // 先序遍历t = t + s;if(2*x+1 <= n) dfs(2*x+1, n, s + "1");if(2*x+0 <= n) dfs(2*x+0, n, s + "0");
}string res = "0", base = "1";int main(){int n;cin >> n;dfs(1, n, "1"); int len = t.size();for(int i = 0; i < len; i++){if(t[len-i-1] == '1') res = add(res, base);base = add(base, base);}cout << res << endl;return 0;
}
E. 冷热数据队列
问:
有两个队列 q1 和 q2,初始为空,容量分别为 n1 和 n2。
进行 m 次操作,对于每次操作,查询一个 x:
- 若 x 既不在 q1 中,也不在 q2 中,把 x 放入 q2 的首部。
- 若 x 已经在队列中,则将 x 移动至 q1 首部。
- 当 q1 或 q2 队列容量不足时,会将其尾部的数据页淘汰出去。
- 当 q1 已满,但 q2 未满时,从 q1 中淘汰出的数据页会移动到 q2 首部。
输出 m 次操作后,两个队列中的元素。
思路:
根据题意模拟,注意这里的队列的首部的定义,观察样例。
对于每次操作的元素 x,维护一个状态 f,表示其在那个队列中。
对于移动操作或弹出操作,只修改状态,进行懒操作(像线段树的lazy操作一样),具体实现看代码。
对于 q1,因为有移动操作, 当元素进队时,连着操作次数一起进队,并且通过记录最新操作来判断,队头的元素是否真的被弹出了。
code:
#include<bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;int f[maxn], op[maxn]; // 如x在q1中,op表示操作号
int res[maxn];
queue<int> q2, qu;
queue<pair<int, int> > q1;int n1, n2;
int cnt1 = 0, cnt2 = 0;void push_q2(int x){f[x] = 2;q2.push(x);cnt2++; while(cnt2 > n2){int tmp = q2.front();q2.pop();if(f[tmp] == 2){cnt2--;f[tmp] = 0;}}
}void push_q1(int x, int i){f[x] = 1;op[x] = i;q1.push({x, i});cnt1++; while(cnt1 > n1){pair<int, int> tmp = q1.front();q1.pop();if(f[tmp.first] == 1 && op[tmp.first] == tmp.second){cnt1--;f[tmp.first] = 0;if(cnt2 < n2) push_q2(tmp.first);}}
}int main(){cin >> n1 >> n2;int q;cin >> q;for(int i = 1; i <= q; i++){int x;cin >> x;if(f[x] == 0) push_q2(x);else if(f[x] == 1){// 在q,且在q1,仅移动 q1.push({x, i});op[x] = i; // 记录最大的操作号 }else{// 在q,在q2,移动到q1 cnt2--; // q2中移除 push_q1(x, i); // 放入q1 }}int cnt = 0;while(!q1.empty()){pair<int, int> tmp = q1.front();q1.pop();if(f[tmp.first] == 1 && op[tmp.first] == tmp.second){res[++cnt] = tmp.first;}}for(int i = cnt; i >= 1; i--) cout << res[i] << " ";cout << endl;cnt = 0;while(!q2.empty()){int tmp = q2.front();q2.pop();if(f[tmp] == 2){res[++cnt] = tmp;}}for(int i = cnt; i >= 1; i--) cout << res[i] << " ";cout << endl;return 0;
}
F. 01串
给定一个由0,1,2,3··· 的二进制表示拼接而成的长度无限的 01 串。其前若干位形如011011100101110111··· 。
请求出这个串的前x位里有多少个1。
思路:
赛中就写了个模拟。
看数据范围,应该是有结论的,即 x 位二进制下,有多少个1 这种结论,然后再处理一些细节才能过所有数据。
挖坑,有时间再想结论。
code:
#include<bits/stdc++.h>using namespace std;stack<int> st;int main(){long long n;scanf("%lld", &n);long long res = 0, len = 1;for(int i = 1; i <= n; i++){int x = i;while(x){ // 注意要逆过来st.push(x % 2);x >>= 1;}while(len < n && !st.empty()){res += st.top();st.pop();len++;}} printf("%lld", res);return 0;
}
G. 甘蔗
应该是个DP,赛中写了个爆搜。
code
#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxn = 1e3 + 5;int res = 2e9;int a[maxn], b[maxn], v[maxn];vector<int> check(int A, int B, int C){// 默认砍A vector<int> tmp; if(A <= B){if(B - C >= 0 && B - C <= A){tmp.push_back(B - C);}} else{if(A - C >= B) tmp.push_back(B + C);if(B - C >= 0) tmp.push_back(B - C);}return tmp;
}void dfs(int pos, int n, int m, int cnt){if(pos > n){res = min(res, cnt);return;}if(cnt > res) return;int A = a[pos], B = a[pos-1];for(int i = 1; i <= m; i++){vector<int> tmp = check(A, B, b[i]);for(auto x : tmp){a[pos] = x;dfs(pos+1, n, m, cnt+1);a[pos] = A;}}if(v[abs(A - B)] == 1){dfs(pos+1, n, m, cnt);}
}int main(){int n, m;scanf("%d %d", &n, &m);for(int i = 1; i <= n; i++) scanf("%d", &a[i]);for(int i = 1; i <= m; i++) scanf("%d", &b[i]), v[b[i]] = 1;sort(b+1, b+1+m);res = 2e9;dfs(2, n, m, 0);int A = a[1];for(int i = 1; i <= m; i++){vector<int> tmp = check(a[1], a[2], b[i]);for(auto x : tmp){a[1] = x;dfs(3, n, m, 1);a[1] = A;} }if(res > n) res = -1;cout << res << endl;return 0;
}
H. 原料采购
维护一个大小为 m 的大根堆,即单价大的在上,依次走所有采购点。
code:
#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxn = 1e5 + 5;ll a[maxn], b[maxn], c[maxn];priority_queue<pair<ll, ll> > qu;int main(){ll n, m, o;scanf("%lld %lld %lld", &n, &m, &o);for(int i = 1; i <= n; i++) scanf("%lld %lld %lld", &a[i], &b[i], &c[i]);ll res = 9e18, len_value = 0, now_value = 0, v = 0; // 距离 + 产品, 体积 for(int i = 1; i <= n; i++){len_value = c[i] * o;if(v + b[i] <= m){qu.push({a[i], b[i]});now_value = a[i] * b[i];continue;}else{if(v < m){qu.push({a[i], m - v});now_value += a[i] * (m - v);b[i] -= (m - v);v = m;}// 已经满 m ll num = 0;while(!qu.empty()){pair<ll, ll> t = qu.top();if(t.first > a[i]){qu.pop();if(num + t.second >= b[i]){now_value -= t.first * (b[i] - num);t.second -= (b[i] - num);num = b[i];if(t.second != 0) qu.push(t);break;}else{num += t.second;now_value -= t.first * t.second;}}else break;}if(num != 0){qu.push({a[i], num});now_value += a[i] * num;}res = min(res, now_value + len_value);}}if(m != v) res = -1;printf("%lld\n", res);return 0;
}
相关文章:
(个人题解)第十六届蓝桥杯大赛软件赛省赛C/C++ 研究生组
宇宙超级无敌声明:个人题解(好久不训练,赛中就是一个憨憨) 先放代码吧,回头写思路。 文章目录 A. 数位倍数B. IPv6C. 变换数组D. 最大数字E. 冷热数据队列F. 01串G. 甘蔗H. 原料采购 A. 数位倍数 问: 在1至…...
GitLab + Jenkins + .Net8 实现CICD部署
前提条件:需要安装好 Jenkins 和 GitLab 。 1. Jenkins配置 登录 Jenkins 找到自己的一个任务,点击配置(没有任务就新建)。 按图操作 点击高级展开后截图,点击生成Token 配置好自己的作业(我的是一个 .Ne…...
AI工具导航 快速找到喜欢的AI工具 功能使用介绍
此篇文章内容来源CTO Plus技术服务栈官网:http://www.mdrsec.com/ 在人工智能技术迅猛发展的2025年,AI工具的数量和种类呈爆炸式增长,涵盖文本生成、图像创作、视频编辑、编程辅助等多个领域。面对琳琅满目的AI工具,如何高效筛选和…...
[题解] Educational Codeforces Round 168 (Rated for Div. 2) E - level up
链接 思路 1 注意到在 k ∈ [ 1 , n ] k \in [1,n] k∈[1,n] 可以得到的最高等级分别为: n , n 2 , n 3 . . . . . n n n,\frac{n}{2},\frac{n}{3}.....\frac{n}{n} n,2n,3n.....nn, 总的个数是一个调和级数, s u m n ∗ ln n sumn*\ln n sumn∗lnn, 完全可以处…...
达梦数据库-学习-19-兼容ORACLE相关参数介绍
目录 一、环境信息 二、介绍 三、参数 一、环境信息 名称值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系统CentOS Linux release 7.9.2009 (Core)内存4G逻辑核数2DM版本1 DM Database Server 64 V8 2 DB Version: 0x7000c 3 03134284194-202…...
如何通过 Spring 层面进行事务回滚?
Spring 中事务可以分为声明式事务和编程式事务,那么解下来就从这两方面说一说在 Spring 层面个怎么进行回滚 声明式事务回滚: 1. 基础注解配置 通过Transactional注解实现自动回滚,默认对RuntimeException和Error生效 Transactional publ…...
学Qt笔记
使用的是Qt SDK5.14.0 根据比特汤众老师的课程学习 先叠个甲:本人正在学qt,视角还不完备,如有错误请多多包含 选了widget开始学习 1.qt creator设计提供了拖拽式的编辑ui的控件,和代码直接编辑构建的方式 2.浅浅的认识了qt的对…...
【HarmonyOS 5】鸿蒙实现手写板
【HarmonyOS 5】鸿蒙实现手写板 一、前言 实现一个手写板功能,基本思路如下: 创建一个可交互的组件,用户在屏幕上触摸并移动手指时,会根据触摸的位置动态生成路径,并使用黑色描边绘制在屏幕上。当用户按下屏幕时…...
JavaWeb 课堂笔记 —— 09 MySQL 概述 + DDL
本系列为笔者学习JavaWeb的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)》,章节分布参考视频教程,为同样学习…...
设计模式 --- 访问者模式
访问者模式是一种行为设计模式,它允许在不改变对象结构的前提下,定义作用于这些对象元素的新操作。 优点: 1.符合开闭原则:新增操作只需添加新的访问者类,无需修改现有对象结构。 2.操作逻辑集中管理&am…...
【Linux C】简单bash设计
主要功能 循环提示用户输入命令(minibash$)。创建子进程(fork())执行命令(execlp)。父进程等待子进程结束(waitpid)。关键问题 参数处理缺失:scanf("%s", buf)…...
如何在Agent中设置Memory
什么是LLM代理? LLM代理可以被定义为能够对环境采取行动的大型语言模型。代理的主要组成部分包括:记忆、规划、提示、知识和工具。大型语言模型可以被视为这个架构的大脑,而其他所有组件则是代理正常工作的基础模块。 代理的组成部分 1. 提…...
【强化学习-蘑菇书-3】马尔可夫性质,马尔可夫链,马尔可夫过程,马尔可夫奖励过程,如何计算马尔可夫奖励过程里面的价值
欢迎去各大电商平台选购纸质版蘑菇书《Easy RL:强化学习教程》 文章是根据 蘑菇书EasyRL ,网络查找资料和汇总,以及新版本的python编写的可运行代码和示例,包含了一些自己对书内容的简单理解 一、 马尔可夫性质 在随机过程中&a…...
leetcode 718 最长公共子数组
这个题目和最长公共子数组,类似于镜像题,子问题比较难想。对于 d p [ i ] [ j ] dp[i][j] dp[i][j] ,定义为分别以 i i i 和 j j j 结尾的最长公共子数组(公共后缀) 核心代码: if(nums1[i-1] nums2[j-…...
【C++】继承:万字总结
📝前言: 这篇文章我们来讲讲面向对象三大特性之一——继承 🎬个人简介:努力学习ing 📋个人专栏:C学习笔记 🎀CSDN主页 愚润求学 🌄其他专栏:C语言入门基础,py…...
java和c#的相似及区别基础对比
用过十几种语言,但是java和c#是最为重要的两门。c#发明人曾主导开发了pascal和delphi,加入微软后,参考了c和java完成了c#和net。大家用过java或c#任意一种的,可以通过本篇文章快速掌握另外一门语言。 基础语法 变量声明…...
TP8 PHP 支付宝-通用版-V3 SDK 接口加签方式为证书方式
TP8 已安装支付宝-通用版-V3 SDK 接口加签方式之前使用密钥方式,现在要使用证书 官方文档小程序文档 - 支付宝文档中心 SDK源码仓库https://github.com/alipay/alipay-sdk-php-all/tree/master/v3 第一步:生成证书 需要先下载支付宝官方工具:…...
地毯填充luogu
P1228 地毯填补问题 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿。宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站立的地方外的所有地方盖上,美丽漂亮聪慧的公主就是他的人了。公主…...
数据查询语言
一、DQL基础语法与执行逻辑 1.SELECT语句结构 (1)核心语法: SELECT 列名 FROM 表名 WHERE 条件 ,用于指定返回的字段和筛选行。例如, SELECT name, age FROM emp WHERE age > 25 筛选年龄大于25岁的员工姓名和年龄。 (2)执行顺序: FROM → WHERE → GROUP BY → HAV…...
【NLP】18. Encoder 和 Decoder
1. Encoder 和 Decoder 概述 在序列到序列(sequence-to-sequence,简称 seq2seq)的模型中,整个系统通常分为两大部分:Encoder(编码器)和 Decoder(解码器)。 Encoder&…...
基于Cline和OpenRouter模型进行MCP实战
大家好,我是herosunly。985院校硕士毕业,现担任算法工程师一职,获得CSDN博客之星第一名,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得多项AI顶级比赛的Top名次,其中包括阿里云、科大讯飞比赛第一名…...
Elasticsearch 故障转移及水平扩容
一、故障转移 Elasticsearch 的故障转移(Failover)机制是其高可用性的核心,通过分布式设计、自动检测和恢复策略确保集群在节点故障时持续服务。 1.1 故障转移的核心组件 组件作用Master 节点管理集群状态(分片分配、索引创建&…...
聊聊Spring AI的Prompt
序 本文主要研究一下Spring AI的Prompt Prompt org/springframework/ai/chat/prompt/Prompt.java public class Prompt implements ModelRequest<List<Message>> {private final List<Message> messages;private ChatOptions chatOptions;public Prompt(…...
centos 7:虚拟机网络配置
1、网络模式选择 桥接模式 特点:虚拟机会获得与物理机同网段的独立IP,可直接访问内网/外网适用场景:渗透测试、需要与其他设备交互的场景配置要点:需在VMware中指定桥接到物理机的真实网卡(如WiFi或有线网卡ÿ…...
Spring - 14 ( 5000 字 Spring 入门级教程 )
一:Spring原理 1.1 Bean 作用域的引入 在 Spring 的 IoC 和 DI 阶段,我们学习了 Spring 如何有效地管理对象。主要内容包括: 使用 Controller、Service、Repository、Component、Configuration 和 Bean 注解来声明 Bean 对象。通过 Applic…...
基于贝叶斯估计的多传感器数据融合算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 贝叶斯估计 4.2 多传感器数据融合 5.完整程序 1.程序功能描述 基于贝叶斯估计的多传感器数据融合算法matlab仿真,输入多个传感器的数据,通过贝叶斯估计…...
linux编辑器-vim
一、基本概念 vim有很多模式但是有三个重要的模式分别是命令模式、插入模式、低行模式。 命令模式:控制光标移动、字符、字或行的删除、移动、复制等。插入模式:只有在该模式下才可以进行文字输入。低行模式:文件的保存或退出,也…...
day27图像处理OpenCV
文章目录 一、图像预处理1 图像翻转(图像镜像旋转)2 图像仿射变换2.1 图像旋转2.2 图像平移2.3 图像缩放2.4 图像剪切 3 插值方法3.1 最近邻插值3.2 双线性插值(常用)3.3 像素区域插值--一般缩小使用3.4 双三次插值3.5 Lanczos插值 一、图像预处理 1 图像翻转(图像镜像旋转) …...
iOS开发--接入ADMob广告失败
接入ADMob的第三方广告,初始化时提示错误如下: state Not Ready;No such adapter in the application 查了各种官方文档,发现接入过程正确,查了Chatgpt和DeepSeek,它们各种分析,分析结果如下: …...
PyTorch进阶学习笔记[长期更新]
第一章 PyTorch简介和安装 PyTorch是一个很强大的深度学习库,在学术中使用占比很大。 我这里是Mac系统的安装,相比起教程中的win/linux安装感觉还是简单不少(之前就已经安好啦),有需要指导的小伙伴可以评论。 第二章…...
vue3 ts 自定义指令 app.directive
在 Vue 3 中,app.directive 是一个全局 API,用于注册或获取全局自定义指令。以下是关于 app.directive 的详细说明和使用方法 app.directive 用于定义全局指令,这些指令可以用于直接操作 DOM 元素。自定义指令在 Vue 3 中非常强大࿰…...
【漫话机器学习系列】199.过拟合 vs 欠拟合(Overfit vs Underfit)
机器学习核心问题:过拟合 vs 欠拟合 图示作者:Chris Albon 1. 什么是拟合(Fit)? 拟合(Fit)是指模型对数据的学习效果。 理想目标: 在训练集上效果好 在测试集上效果也好 不复杂、…...
从0到1使用C++操作MSXML
1. 引言 MSXML(Microsoft XML Core Services)是微软提供的一套用于处理XML的COM组件库,广泛应用于Windows平台的XML解析、验证、转换等操作。本文将详细介绍如何从零开始,在C中使用MSXML解析和操作XML文件,包含完整的…...
【中间件】nginx反向代理实操
一、说明 nginx用于做反向代理,其目标是将浏览器中的请求进行转发,应用场景如下: 说明: 1、用户在浏览器中发送请求 2、nginx监听到浏览器中的请求时,将该请求转发到网关 3、网关再将请求转发至对应服务 二、具体操作…...
C语言中冒泡排序和快速排序的区别
冒泡排序和快速排序都是常见的排序算法,但它们在原理、效率和应用场景等方面存在显著区别。以下是两者的详细对比: 一、算法原理 1. 冒泡排序 原理:通过重复遍历数组,比较相邻元素的大小,并在必要时交换它们的位置。…...
进程基本介绍
进程是操作系统的重要内容,都是需要了解和学习的,那么今天我们就来好好看看. 进程基本介绍 1、Linux中,每个执行的程序都称为一个进程,每一个进程都分配一个ID号(pid,进程号). 2.每个进程都可以以两种方式存在的,前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的,…...
通过平台大数据智能引擎及工具,构建设备管理、运行工况监测、故障诊断等应用模型的智慧快消开源了
智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。 基于多年的深度…...
不同数据库的注入报错信息
不同数据库在报错注入时返回的报错信息具有显著差异,了解这些差异可以帮助快速判断数据库类型并构造针对性的注入攻击语句。以下是主流数据库的典型报错模式及对比: 目录 1. MySQL 2. Microsoft SQL Server 3. Oracle …...
tcpdump`是一个非常强大的命令行工具,用于在网络上捕获并分析数据包
通过 tcpdump,你可以抓取网络流量,诊断网络问题,或分析通信协议的细节。下面是如何在 Linux 上使用 tcpdump 进行抓包的详细步骤。 1. 安装 tcpdump 在大多数 Linux 发行版中,tcpdump 是默认安装的。如果没有安装,可…...
【漏洞复现】Vite 任意文件读取漏洞 CVE-2025-30208/CVE-2025-31125/CVE-2025-31486/CVE-2025-32395
Vite是什么,和Next.js有什么区别? 我上一篇文章刚介绍了Next.js漏洞的复现: 【漏洞复现】Next.js中间件权限绕过漏洞 CVE-2025-29927_next.js 中间件权限绕过漏洞-CSDN博客 Vite 和 Next.js 是两个不同类型的前端工具,它们各自…...
Odrive源码分析(六) 相关控制变量传递
本文记录下odrive源代码中相关控制模块之间变量的传递,这对理解odrive源代码至关重要。 通过前面文字的分析,odrive有两条数据链路,一条是通过中断进行实时的控制,另外一条是OS相关的操作,主要分析下中断内部的相关变量…...
ARM架构FFmpeg极致优化交叉编译指南
ARM架构FFmpeg极致优化交叉编译指南 一、工具链科学配置 使用最新的ARM官方工具链(Linaro或ARM GNU Toolchain) 确保工具链支持目标平台特定指令集(如NEON, VFP等) 设置正确的–sysroot和–prefix参数 1. 工具链选择原则 # 32位ARM (推荐) wget https://developer.arm.com/…...
zk源码—7.ZAB协议和数据存储一
大纲 1.两阶段提交Two-Phase Commit(2PC) 2.三阶段提交Three-Phase Commit(3PC) 3.ZAB协议算法 4.ZAB协议与Paxos算法 5.zk的数据存储原理之内存数据 6.zk的数据存储原理之事务日志 7.zk的数据存储原理之数据快照 8.zk的数据存储原理之数据初始化和数据同步流程 1.两阶…...
2025蓝桥杯C++A组省赛 题解
昨天打完蓝桥杯本来想写个 p y t h o n python python A A A 组的题解,结果被队友截胡了。今天上课把 C A CA CA 组的题看了,感觉挺简单的,所以来水一篇题解。 这场 B B B 是一个爆搜, C C C 利用取余的性质比较好写&#…...
用哪个机器学习模型 依靠极少量即时静态数据来训练ai预测足球赛的结果?
目录 一、模型推荐 1.集成树模型(XGBoost/CatBoost) 2.逻辑回归(Logistic Regression) 3.贝叶斯概率模型(Naive Bayes或贝叶斯网络) 4.支持向量机(SVM) 二、模型排除 三、训练…...
讲解贪心算法
贪心算法是一种常用的算法思想,其在解决问题时每一步都做出在当前状态下看起来最优的选择,从而希望最终能够获得全局最优解。C作为一种流行的编程语言,可以很好地应用于贪心算法的实现。下面我们来讲一篇关于C贪心算法的文章。 目录 贪心算法…...
0基础 | 电动汽车的“电源翻译官” | DC/DC转换器 | 电源系统三
你有没有想过,电动汽车里那么多五花八门的电子设备,比如车灯、仪表盘、摄像头,甚至连控制马达的“大脑”(ECU),是怎么用上电的?今天就来聊聊电动车里一个默默工作的“小功臣”——DC/DC转换器&a…...
zynq7020 u-boot 速通
zynq u-boot 速通 简介 上回最小系统已经跑起来,证明串口和 ddr 正确配置.现在我们需要正确配置 网口, qspi, emmc. 网口:通过 tftp 下载 dtb,image,rootfs 在线调试.qspi:固化 boot.bin 到 qspi flash,这样 qspi 启动就可以直接运行 u-boot.emmc:存放 ubuntu_base 跟文件系统…...
C++学习之路,从0到精通的征途:string类的模拟实现
目录 一.string类的成员变量与成员函数 二.string类的接口实现 1.构造函数,析构函数,拷贝构造函数,赋值重载 (1)构造函数 (2)析构函数 (3)拷贝构造函数 &…...
网页制作中的MVC和MVT
MVC(模型-视图-控制器)和MVT(模型-模板-视图)是两种常见的软件架构模式,通常用于Web应用程序的设计。它们之间的主要区别在于各自的组件职责和工作方式。 MVC(模型-视图-控制器): 模…...