【一百零一】【算法分析与设计】差分,1109. 航班预订统计,P4231 三步必杀,P5026 Lycanthropy

1109. 航班预订统计

这里有 n 个航班,它们分别从 1n 进行编号。

有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [first(i), last(i), seats(i)] 意味着在从 first(i)last(i)包含 first(i)last(i) )的 每个航班 上预订了 seats(i) 个座位。

请你返回一个长度为 n 的数组 answer,里面的元素是每个航班预定的座位总数。

示例 1:

输入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5 输出:[10,55,45,25,25] 解释: 航班编号 1 2 3 4 5 预订记录 1 : 10 10 预订记录 2 : 20 20 预订记录 3 : 25 25 25 25 总座位数: 10 55 45 25 25 因此,answer = [10,55,45,25,25]

示例 2:

输入:bookings = [[1,2,10],[2,2,15]], n = 2 输出:[10,25] 解释: 航班编号 1 2 预订记录 1 : 10 10 预订记录 2 : 15 总座位数: 10 25 因此,answer = [10,25]

提示:

  • 1 <= n <= 2 * 10(4)

  • 1 <= bookings.length <= 2 * 10(4)

  • bookings[i].length == 3

  • 1 <= first(i) <= last(i) <= n

  • 1 <= seats(i) <= 10(4)

1.

差分,arr数组,需要完成一些操作,例如区间[l,r]加c操作.

将arr数组进行一系列的add操作,add(l,r,c)表示区间[l,r]统一加上c.

2.

add(l,r,c)操作,只需要arr[l]+=c,arr[r+1]-=c.

3.

进行一系列的add操作后,求arr的前缀和,结果是我们想要的答案.

4.

将arr数组中0~3区间加上1,2~5区间加上2,3~6区间加上-1.

很容易可以得到答案是1,1,3,2,1,1,-1.

利用差分,步骤是arr[0]+=1,arr[3+1]-=1.

arr[2]+=2,arr[5+1]-=2.

arr[3]+=-1,arr[6+1]-=-1.

然后arr求前缀和,得到的就是答案.

5.

对arr数组进行操作的意义是,+=表示添加影响,-=表示影响消失.

例如0~3区间加上1,arr[0]+=1表示从下标0开始都要加上1,开始影响.

以直到3+1=4下标影响结束,所以需要-=1.

6.

前缀和计算出影响的结果.

代码

 
// #define DEBUG
#ifdef DEBUG
#define BUG(code) do{code}while(0)
#else
#define BUG(code) do{}while(0)
#endifclass Solution {
public:vector<int> ret; // 用于存储最终的航班预订座位数vector<vector<int>> bookings; // 存储航班预订记录int n; // 航班数量vector<int> arr; // 差分数组,用于记录区间加减操作void solve() {ret.assign(n, 0); // 初始化结果数组,长度为n,初始值为0arr.assign(n + 1, 0); // 初始化差分数组,长度为n+1,初始值为0for (auto& x : bookings) { // 遍历每条预订记录int left = x[0] - 1, right = x[1] - 1, nums = x[2]; // 提取预订记录中的起始航班、结束航班和预订座位数arr[left] += nums; // 在差分数组中起始位置加上预订座位数arr[right + 1] -= nums; // 在差分数组中结束位置的下一个位置减去预订座位数}for (int i = 0; i < n; i++) { // 计算前缀和得到每个航班的预订座位总数ret[i] = (i - 1 >= 0 ? ret[i - 1] : 0) + arr[i]; // 当前航班的预订座位数等于前一个航班的预订座位数加上当前差分数组的值// BUG(cout << ret[i] << endl;); // 如果启用DEBUG模式,输出当前航班的预订座位数BUG(cout << arr[i] << endl;); // 如果启用DEBUG模式,输出当前差分数组的值}}vector<int> corpFlightBookings(vector<vector<int>>& _bookings, int _n) {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); // 优化输入输出bookings = _bookings, n = _n; // 将输入参数赋值给类成员变量solve(); // 调用solve函数处理预订记录return ret; // 返回结果数组}
};

;

P4231 三步必杀

三步必杀

题目背景

(三)旧都

离开狭窄的洞穴,眼前豁然开朗。

天空飘着不寻常的雪花。

一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音。

这是由被人们厌恶的鬼族和其他妖怪们组成的小社会,一片其乐融融的景象。

诶,不远处突然出现了一些密密麻麻的小点,好像大颗粒扬尘一样。

离得近了点,终于看清楚了。

长着角的鬼们聚在一起,围观着另一只鬼的表演。

那”扬尘”,其实都是弹幕。

勇仪的招数之一,三步之内,所到之处弹幕云集,几乎没有生存可能。

为了强化这一技能,勇仪将对着一排柱子进行攻击。

旧地狱的柱子虽然无比坚固,但保险起见还是先要了解一下这样一套攻击对柱子有多少损伤,顺带也能检验练习的效果。

勇仪决定和其它鬼们商量商量...

“我知道妖怪之山的河童一族有一种叫做计算机的神奇道具,说不定可以借来用用”,萃香说道。

于是旧地狱的鬼族就决定请河城荷取来帮忙了。

“要记录【所有柱子的损伤程度】吗”,荷取问道。

经过进一步的询问,荷取发现他们仅仅需要【所有攻击都完成后】柱子的损伤程度。

任务了解地差不多了,荷取将其中的重要部分提取了出来,记录在了她的工作笔记本上:

(记录的内容见题目描述)

那么实验就这样开始了。

在惊天动地的碰撞声中,勇仪每完成一轮攻击,荷取都忠实地记录下对每根柱子产生的伤害。而此时勇仪就在旁边等待着记录完成,然后再进行下一轮的攻击。

地面上,天色渐晚。

“不想在这里留到深夜啊,不然就回不了家了”,荷取这样想着,手中依然在重复地向计算机中输入新产生的信息。

“真的必须一次一次地记录下每轮攻击对每个柱子产生的伤害吗?有没有更高效的方法?”这一念头在荷取的心中闪过...

(后续剧情在题解中,接下来请看T3)

题目描述

问题摘要:

$$$$个柱子排成一排,一开始每个柱子损伤度为0。

接下来勇仪会进行$M$次攻击,每次攻击可以用4个参数$l$,$r$,$s$,$e$来描述:

表示这次攻击作用范围为第$l$个到第$r$个之间所有的柱子(包含$l$,$r$),对第一个柱子的伤害为$s$,对最后一个柱子的伤害为$e$。

攻击产生的伤害值是一个等差数列。若$l=1$,$r=5$,$s=2$,$e=10$,则对第1~5个柱子分别产生2,4,6,8,10的伤害。

鬼族们需要的是所有攻击完成之后每个柱子的损伤度。

输入格式

第一行2个整数$N$,$M$,用空格隔开,下同。

接下来$M$行,每行4个整数$l$,$r$,$s$,$e$,含义见题目描述。

数据保证对每个柱子产生的每次伤害值都是整数。

输出格式

由于输出数据可能过大无法全部输出,为了确保你真的能维护所有柱子的损伤度,只要输出它们的异或和与最大值即可。

(异或和就是所有数字按位异或起来的值)

(异或运算符在c++里为^)

样例 #1

样例输入 #1

5 2 1 5 2 10 2 4 1 1

样例输出 #1

3 10

样例 #2

样例输入 #2

6 2 1 5 2 10 2 4 1 1

样例输出 #2

3 10

提示

样例解释:

样例1:

第一次攻击产生的伤害:2 4 6 8 10

第二次攻击产生的伤害:0 1 1 1 0

所有攻击结束后每个柱子的损伤程度:2 5 7 9 10。

输出异或和与最大值,就是3 10。

样例2:

没有打到第六根柱子,答案不变

数据范围:

本题满分为100分,下面是4个子任务。(x/y)表示(得分/测试点数量)

妖精级(18/3):$1\leqslant n$,$m\leqslant1000$。这种工作即使像妖精一样玩玩闹闹也能完成吧?

河童级(10/1):$s=e$,这可以代替我工作吗?

天狗级(20/4):$1\leqslant n\leqslant10^5$,$1\leqslant m\leqslant10^5$。小打小闹不再可行了呢。

鬼神级(52/2):没有特殊限制。要真正开始思考了。

以上四部分数据不相交。

对于全部的数据:$1\leqslant n\leqslant10^7$,$1\leqslant m\leqslant3\times 10^5$,$1\leqslant l<r\leqslant n$.

所有输入输出数据以及柱子受损伤程度始终在$[0,9\times 10^{18}]$范围内。

提示:

由于种种原因,时间限制可能会比较紧,C++选手请不要使用cin读入数据。

by orangebird

1.

代码

 
#include<bits/stdc++.h> // 包含所有C++标准库头文件
using namespace std;#define int long long // 定义int为long long类型,方便处理大整数
#define endl '\n' // 定义endl为换行符,简化代码
#define FAST() ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); // 优化输入输出,加快执行速度#define p pair<int,int> // 定义p为pair<int, int>类型,简化代码
#define ff first // 定义ff为first,简化pair的使用
#define ss second // 定义ss为second,简化pair的使用#define ltu(i,a,b) for(int i=a;i<=b;i++) // 定义从a到b的递增循环
#define utl(i,a,b) for(int i=a;i>=b;i--) // 定义从a到b的递减循环
#define tests() int t;cin>>t;while(t--) // 定义多组测试数据的输入方式int n, m; // n为柱子的数量,m为攻击次数
struct node { // 定义结构体node用于存储攻击信息int l, r, s, e; // l为起始柱子,r为结束柱子,s为起始伤害,e为结束伤害
};
vector<node> readd; // 存储所有攻击的向量
vector<int> arr; // 差分数组,用于记录伤害
int ret_max; // 记录所有柱子中最大损伤度
int ret; // 记录所有柱子的损伤度的异或和void solve() {ret = 0; // 初始化异或和为0ret_max = LLONG_MIN; // 初始化最大损伤度为最小的long long值arr.assign(n + 5, 0); // 初始化差分数组,大小为n+5,初始值为0for (auto& x : readd) { // 遍历每一个攻击记录int d = (x.e - x.s) / (x.r - x.l); // 计算等差数列的公差arr[x.l] += x.s; // 在起始位置增加初始伤害arr[x.l + 1] += d - x.s; // 在起始位置的下一位增加公差减去初始伤害arr[x.r + 1] += -d - x.e; // 在结束位置的下一位减少公差和结束伤害arr[x.r + 2] += x.e; // 在结束位置的下两位增加结束伤害}ltu(i, 1, n) { // 第一次构建前缀和arr[i] = (i - 1 >= 0 ? arr[i - 1] : 0) + arr[i]; // 前缀和累加}ltu(i, 1, n) { // 第二次构建前缀和arr[i] = (i - 1 >= 0 ? arr[i - 1] : 0) + arr[i]; // 前缀和累加ret_max = max(ret_max, arr[i]); // 更新最大损伤度ret ^= arr[i]; // 计算损伤度的异或和}cout << ret << " " << ret_max << endl; // 输出异或和和最大损伤度
}signed main() {FAST(); // 优化输入输出cin >> n >> m; // 输入柱子数量和攻击次数readd.clear(); // 清空攻击记录向量ltu(i, 1, m) { // 输入每一条攻击记录node temp = node(); // 定义临时变量存储攻击信息cin >> temp.l >> temp.r >> temp.s >> temp.e; // 输入攻击信息readd.push_back(temp); // 将攻击信息加入向量}solve(); // 调用solve函数计算结果
}

P5026 Lycanthropy

Lycanthropy

题目背景

小正方形亲眼看见了自己昔日的朋友被卷进了黑暗的深渊,然而它无力阻止……

现在它的朋友已经向它发起了攻击,因此小正方形不得不抵抗。

题目描述

我们把山顶上的湖泊看作一条长度为 $$$$ 的直线,一开始水深都在水平线上,我们视作此时的水深为 '0'

接下来,在一瞬间,小正方形的"朋友"们跳起并扎入水中,导致在入水点的水降低而远离入水点的水升高,注意两个 "朋友" 可能在同一地点入水。

小正方形的每个朋友有一个体积数值 $v$,当体积为 $$$$ 的一个朋友跳入水中,我们设入水点为 $i$,将会导致 $$i - v + $$ 到 $$$$ 的水位依次降低 $$1,2,\cdots,$$

同样地,第 $$$$ 到 $$i + v - $$ 的水位会依次降低 $v,v - 1,\cdots,1$.

相对应地,$i - v$ 的水位不变, $$i - v - $$ 到 $$i - 2 * $$ 水位依次增加 $1,2,\cdots,v$, $$i - 2 * $$ 到 $$i - 3 * v + $$ 水位依次增加 $$v,v - 1,\cdots,$$

同样,$i + v$ 水位不变,$i + v + 1$ 到 $$i + 2 * $$ 水位增加 $1,2,\cdots,v$,$i + 2 * v$ 到 $$i + 3 * v - $$ 水位依次增加 $$v,v - 1,\cdots,$$

现在小正方形想要穿过这个湖,他想要知道在这 $$$$ 个"朋友"跳入水中后湖上每个节点的水位,你能帮帮它吗?

输入格式

第一行为两个整数 $n$,$m$,表示"朋友"的数目与湖泊的宽度。

接下来 $$$$ 行,一行两个整数 $v,x$,表示第 $$i + $$ 个朋友的体积与入水点。

输出格式

一行 $$$$ 个整数,第 $$$$ 个整数表示 $$$$ 号位的水深。

样例 #1

样例输入 #1

1 10 1 5

样例输出 #1

0 0 1 0 -1 0 1 0 0 0

样例 #2

样例输入 #2

2 10 2 6 3 1

样例输出 #2

-2 0 0 0 0 0 2 2 2 2

提示

对于 $$30\$$ 的数据,$$n <= 50,m <= 50$$

对于 $$70\$$ 的数据,$$n <= 10^5,m <= 10^$$

对于 $$100\$$ 的数据,$$n <= 10^6,m <= 10^6,1 <= v <= 10000,1 <= x <= $$

1.

sett(i-3*v+1,i-2*v,1,v);

sett(i-2*v+1,i,v-1,-v);

sett(i+1,i+2*v,-v+1,v);

sett(i+2*v+1,i+3*v-1,v-1,1);

sett函数有四个参数,sett(l,r,s,e)

表示从区间l~r依次加上等差数列,s到e.

2.

MAXN是湖最大的长度,用于做偏移量.

当我们处理落点x,附近的水高低的时候,处理边界情况很麻烦。

因为可能出现负数,或者可能越界.

因此我们可以开辟大一点的空间,并做一个较大的偏移量,此时不会出现负数也不会越上界

对于每一个区间l~r,做一个偏移量MAXN

"I+=MAXN,r+=MAXN"

3.

build函数计算前缀和.

arr数组开辟的空间大小是2*MAXN+m

原本需要开辟的空间是m左右,然后在前面和后面多开辟一个MAXN

这样就不用考虑边界情况了.

我们需要用到的是1~m偏移一个MAXN的区间位置.

代码

 
#include <bits/stdc++.h> // 包含所有C++标准库头文件
using namespace std;#define DEBUG
#ifdef DEBUG
#define BUG(code) do{code}while(0)
#else
#define BUG(code) do{}while(0)
#endif // DEBUG#define int long long // 定义int为long long类型,方便处理大整数
#define endl '\n' // 定义endl为换行符,简化代码
#define FAST() ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) // 优化输入输出,加快执行速度#define ltu(i,a,b) for(int i=a;i<=b;i++) // 定义从a到b的递增循环
#define utl(i,a,b) for(int i=a;i>=b;i--) // 定义从a到b的递减循环
#define tests() int t;cin>>t;while(t--) // 定义多组测试数据的输入方式const int MAXN = 1e6 + 10; // 定义常量MAXN,用于数组的大小
int n, m; // n为朋友的数量,m为湖泊的宽度
struct node { // 定义结构体node用于存储朋友的体积和入水点int v, x; // v为体积,x为入水点
};
vector<node> readd; // 存储所有朋友信息的向量
vector<int> arr; // 差分数组,用于记录水位变化void sett(int l, int r, int s, int e) {l += MAXN; // 调整左边界,避免负索引r += MAXN; // 调整右边界,避免负索引int d = (r != l) ? (e - s) / (r - l) : 0; // 计算等差数列的公差arr[l] += s; // 在左边界加上初始值sarr[l + 1] += d - s; // 在左边界的下一位置加上d-sarr[r + 1] += -d - e; // 在右边界的下一位置减去d和earr[r + 2] += e; // 在右边界的下两位置加上e
}void build() {ltu(i, 1, 2 * MAXN + m - 1) { // 构建前缀和arr[i] += arr[i - 1]; // 前缀和累加}
}void solve() {arr.assign(2 * MAXN + m, 0); // 初始化差分数组,大小为2*MAXN+m,初始值为0for (auto& xx : readd) { // 遍历每一个朋友的信息int i = xx.x; // 读取入水点int v = xx.v; // 读取体积sett(i - 3 * v + 1, i - 2 * v, 1, v); // 处理左侧影响sett(i - 2 * v + 1, i, v - 1, -v); // 处理左侧与中间的影响sett(i + 1, i + 2 * v, -v + 1, v); // 处理中间与右侧的影响sett(i + 2 * v + 1, i + 3 * v - 1, v - 1, 1); // 处理右侧影响}build(); // 构建前缀和build(); // 第二次构建前缀和ltu(i, MAXN + 1, MAXN + m) { // 输出每个位置的水位cout << arr[i] << " "; // 输出水位}cout << endl; // 输出换行
}signed main() {FAST(); // 优化输入输出cin >> n >> m; // 输入朋友的数量和湖泊的宽度readd.clear(); // 清空朋友信息向量ltu(i, 1, n) { // 输入每一个朋友的信息node temp; // 定义临时变量存储朋友信息cin >> temp.v >> temp.x; // 输入朋友的体积和入水点readd.push_back(temp); // 将朋友信息加入向量}solve(); // 调用solve函数计算结果
}

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。

同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。

谢谢您的支持,期待与您在下一篇文章中再次相遇!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞吉外卖项目学习笔记(一)

项目展示&#xff1a; 一、软件开发整体介绍 1.1 软件开发流程 作为软件开发人员&#xff0c;我们的主要工作是在 编码阶段 1.2 角色分工 1.3 软件环境 二、瑞吉外面项目介绍 2.1 项目介绍 系统管理后台页面&#xff1a; 移动端页面&#xff1a; 2.2 产品原型展示 产品原型是…

STM32学习问题总结(1)—CubeMX生成后下载无反应

在CubeMX生成项目后&#xff0c;写好代码&#xff0c;测试LED时发现怎么都不行&#xff0c;然后发现时Keil工程配置的问题 第一步&#xff1a; 打开Keil魔术棒的Debug下的Settings 第二步&#xff1a; 勾选Flash Download下的Reset and Run即可 被卡了两个小时&#xff0c;…

洗地机什么牌子好?洗地机前十名排行榜

现代吸拖扫一体洗地机不仅高效&#xff0c;还具有智能化设计&#xff0c;使清洁变得轻松。它强大的吸尘功能能够轻松应对灰尘和碎屑&#xff0c;不论是硬质地面还是地毯&#xff0c;都能提供理想的清洁效果。配合拖地功能&#xff0c;通过内置水箱和智能拖布&#xff0c;能彻底…

国产飞腾/龙芯/瑞芯微芯片在信创行业应用:金融行业、教育行业、党政机关

党政机构 方案背景&#xff1a; 在国家提出信息技术应用创新发展战略的大环境下&#xff0c;政务大厅需要基于国家科技自主技术深入推进“互联网政务服务”。加快建设全国一体化在线政务服务平台&#xff0c;进一步落实创新驱动发展战略&#xff0c;提升政务网络安全保障能力…

NATS-研究学习

NATS-研究学习 文章目录 NATS-研究学习[toc]介绍说明提供的服务内容各模式介绍测试使用发布订阅&#xff08;Publish Subscribe&#xff09;请求响应&#xff08;Request Reply&#xff09;队列订阅&分享工作&#xff08;Queue Subscribers & Sharing Work&#xff09;…

运放的自激振荡问题

运放的自激振荡指的是当运算放大器加电后&#xff0c;在没有外部信号输入的情况下&#xff0c;输出端会出现高频类似于正弦波的波形。 运算放大器产生自激的原因以及解决办法-CSDN博客 a)当振荡由分布电容、电感等引起时&#xff0c;可通过反馈端并联电容&#xff0c;抵消影响…

【开源】课程管理平台 JAVA+Vue.js+SpringBoot+MySQL

目录 一、项目介绍 课程管理模块 作业题目模块 考试阅卷模块 教师评价模块 部门角色菜单模块 二、项目截图 三、核心代码 一、项目介绍 Vue.jsSpringBoot前后端分离新手入门项目《课程管理平台》&#xff0c;包括课程管理模块、作业题目模块、考试阅卷模块、教师评价模…

spoon工具的安装与配置

spoon对应的jdk包下载资源地址 spoon软件下载资源地址 首先需要安装jdk&#xff0c;配置java环境&#xff0c;安装好后&#xff0c;cmd一下&#xff0c;查看java -version&#xff0c;看看是否成功安装&#xff0c;如果失败&#xff0c;查看系统环境变量&#xff0c;去配置jdk…

Java | Leetcode Java题解之第122题买卖股票的最佳时机II

题目&#xff1a; 题解&#xff1a; class Solution {public int maxProfit(int[] prices) {int ans 0;int n prices.length;for (int i 1; i < n; i) {ans Math.max(0, prices[i] - prices[i - 1]);}return ans;} }

Python保存为json中文Unicode乱码解决json.dump()

保存为json中文Unicode乱码&#xff1a; 可以看到&#xff0c;中文字符没有乱码&#xff0c;只是出现了反斜杠&#xff0c;此时解决方法应考虑是否进行了二次序列化。 一、原因1 在dump时加入ensure_asciiFalse 即可解决&#xff0c;即json.dump(json_data, f, indent4, en…

阿里云布置net core 项目

一、 创建镜像 给镜像添加触发器&#xff0c;编译的时候会触发k8s集群里的taget链接&#xff0c;从而更新项目 二&#xff0c;创建k8s集群 使用镜像创建 添加基本信息 镜像名称&#xff1a;镜像仓库》基本信息公网地址镜像Tag:创建镜像时的镜像版本镜像配置为&#xff1a;总…

opencv笔记(13)—— 停车场车位识别

一、所需数据介绍 car1.h5 是训练后保存的模型 class_directionary 是0&#xff0c;1的分类 二、图像数据预处理 对输入图片进行过滤&#xff1a; def select_rgb_white_yellow(self,image): #过滤掉背景lower np.uint8([120, 120, 120])upper np.uint8([255, 255, 255])#…

C#WPF数字大屏项目实战04--设备运行状态

1、引入Livecharts包 项目中&#xff0c;设备运行状态是用饼状图展示的&#xff0c;因此需要使用livechart控件&#xff0c;该控件提供丰富多彩的图形控件显示效果 窗体使用控件 2、设置饼状图的显示图例 通过<lvc:PieChart.Series>设置环状区域 3、设置饼状图资源样…

【TB作品】MSP430G2553单片机,智能储物柜

智能储物柜将实现的功能&#xff1a; 1在超市或者机场场景下&#xff0c;用户需要进行物品暂存时。按下储物柜键盘的需求按键&#xff0c;智能储物柜将会随机为用户分配一个还没使用的柜子&#xff0c;屏幕提示用户选择密码存储方式或者身份证存储方式&#xff1b; 2 用户选择密…

禁止Windows Defender任务计划程序

开始键->搜索“任务计划程序”->“任务计划程序库”->“Microsoft”->"Windows"->"Windows Defender"->右边四项

43-5 waf绕过 - 安全狗简介及安装

一、安全狗安装 安装安全狗需要开启 Apache 系统服务。如果 Apache 系统服务未开启,安装过程中可能会出现无法填入服务名称的问题,导致无法继续安装。为避免此问题,可以先在虚拟机中安装 PHPStudy。 安装PHPStudy 下载、安装phpstudy并启动(安装过程可以一路下一步,也…

安装VS2017后,离线安装Debugging Tools for Windows(QT5.9.2使用MSVC2017 64bit编译器)

1、背景 安装VS2017后&#xff0c;Windows Software Development Kit - Windows 10.0.17763.132的Debugging Tools for Windows默认不会安装&#xff0c;如下图。这时在QT5.9.2无法使用MSVC2017 64bit编译器。 2、在线安装 如果在线安装参考之前的文章&#xff1a; Qt5.9.2初…

Windows操作系统提权之系统服务漏洞提权Always Install Elevated

Always Install Elevated 1.形成原因 任意用户以NT AUTHORITY\SYSTEM权限安装 i。 AlwaysInstallElevated是一个策略设置&#xff0c;当在系统中使用Windows Installer安装任何程序时&#xff0c;该参数允许非 特权用户以system权限运行MSI文件。如果目标系统上启用了这一设…

leetcode - 20.有效的括号(LinkedHashMap)

leetcode题目有效的括号&#xff0c;分类是easy&#xff0c;但是博主前前后后提交了几十次才通过&#xff0c;现在记录一下使用Java语言的写法。 题目链接: 20.有效的括号 题目描述&#xff1a; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&…

【漏洞复现】WordPress Country State City Dropdown CF7插件 SQL注入漏洞(CVE-2024-3495)

0x01 产品简介 Country State City Dropdown CF7插件是一个功能强大、易于使用的 WordPress 插件&#xff0c;它为用户在联系表单中提供国家.州/省和城市的三级下拉菜单功能&#xff0c;帮助用户更准确地填写地区信息。同时&#xff0c;插件的团队和支持也非常出色&#xff0c…