序列差分练习题--从模板到灵活运用
本篇包含6道序列差分练习题及题解,难度由模板到提高
语文成绩
题目背景
语文考试结束了,成绩还是一如既往地有问题。
题目描述
语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少。你能帮帮她吗?
输入格式
第一行有两个整数 nnn,ppp,代表学生数与增加分数的次数。
第二行有 nnn 个数,a1∼ana_1 \sim a_na1∼an,代表各个学生的初始成绩。
接下来 ppp 行,每行有三个数,xxx,yyy,zzz,代表给第 xxx 个到第 yyy 个学生每人增加 zzz 分。
输出格式
输出仅一行,代表更改分数后,全班的最低分。
样例 #1
样例输入 #1
3 2
1 1 1
1 2 1
2 3 1
样例输出 #1
2
提示
对于 40%40\%40% 的数据,有 n≤103n \le 10^3n≤103。
对于 60%60\%60% 的数据,有 n≤104n \le 10^4n≤104。
对于 80%80\%80% 的数据,有 n≤105n \le 10^5n≤105。
对于 100%100\%100% 的数据,有 n≤5×106n \le 5\times 10^6n≤5×106,p≤np \le np≤n,学生初始成绩 $ \le 100,,,z \le 100$。
差分入门模板题
#include <bits/stdc++.h>
using namespace std;const int N = 5000005;int n, p, ans;
int a[N],b[N];int main()
{cin >> n >> p;for(int i = 1; i <= n; i ++) {cin >> a[i];b[i] = a[i] - a[i - 1];}while(p --){int x, y, z;cin >> x >> y >> z;b[x] += z;b[y + 1] -= z;}ans = 100;for(int i = 1; i <= n; i ++) {a[i] = a[i - 1] + b[i];ans = min(ans, a[i]);}cout << ans;return 0;
}
海底高铁
题目描述
该铁路经过 NNN 个城市,每个城市都有一个站。不过,由于各个城市之间不能协调好,于是乘车每经过两个相邻的城市之间(方向不限),必须单独购买这一小段的车票。第 iii 段铁路连接了城市 iii 和城市 i+1(1≤i<N)i+1(1\leq i<N)i+1(1≤i<N)。如果搭乘的比较远,需要购买多张车票。第 iii 段铁路购买纸质单程票需要 AiA_iAi 博艾元。
虽然一些事情没有协调好,各段铁路公司也为了方便乘客,推出了 IC 卡。对于第 iii 段铁路,需要花 CiC_iCi 博艾元的工本费购买一张 IC 卡,然后乘坐这段铁路一次就只要扣 Bi(Bi<Ai)B_i(B_i<A_i)Bi(Bi<Ai) 元。IC 卡可以提前购买,有钱就可以从网上买得到,而不需要亲自去对应的城市购买。工本费不能退,也不能购买车票。每张卡都可以充值任意数额。对于第 iii 段铁路的 IC 卡,无法乘坐别的铁路的车。
Uim 现在需要出差,要去 MMM 个城市,从城市 P1P_1P1 出发分别按照 P1,P2,P3,⋯,PMP_1,P_2,P_3,\cdots,P_MP1,P2,P3,⋯,PM 的顺序访问各个城市,可能会多次访问一个城市,且相邻访问的城市位置不一定相邻,而且不会是同一个城市。
现在他希望知道,出差结束后,至少会花掉多少的钱,包括购买纸质车票、买卡和充值的总费用。
输入格式
第一行两个整数,N,MN,MN,M。
接下来一行,MMM 个数字,表示 PiP_iPi。
接下来 N−1N-1N−1 行,表示第 iii 段铁路的 Ai,Bi,CiA_i,B_i,C_iAi,Bi,Ci。
输出格式
一个整数,表示最少花费
样例 #1
样例输入 #1
9 10
3 1 4 1 5 9 2 6 5 3
200 100 50
300 299 100
500 200 500
345 234 123
100 50 100
600 100 1
450 400 80
2 1 10
样例输出 #1
6394
提示
222 到 333 以及 888 到 999 买票,其余买卡。
对于 30%30\%30% 数据 M=2M=2M=2。
对于另外 30%30\%30% 数据 N≤1000,M≤1000N\leq1000,M\leq1000N≤1000,M≤1000。
对于 100%100\%100% 的数据 M,N≤105,Ai,Bi,Ci≤105M,N\leq 10^5,A_i,B_i,C_i\le10^5M,N≤105,Ai,Bi,Ci≤105。
#include <bits/stdc++.h>
using namespace std;
/*
在读入p数组的时候
给两个目的地之间做好标记
用差分来标记!
这样最后再求一遍前缀和
就会出来每条路线走过的次数!
对每条路线单独判定方案即可这题卡常了。。
忘记了,以后还是别偷懒了
*/
typedef long long LL;
const int N = 100005, M = 100005;LL n, m, sum;
int p[M];
LL a[N], b[N], c[N];
LL s1[N]; //差分数组
LL cnt[N]; //记录每个线路经过几次LL ponder(int t) //t号线的最佳方案
{return min(a[t] * cnt[t], c[t] + b[t] * cnt[t]);
}int main()
{//第i段铁路连接 i 和 i + 1cin >> n >> m;cin >> p[1];for(int i = 2; i <= m; i ++) {cin >> p[i];int a = min(p[i], p[i - 1]);int b = max(p[i], p[i - 1]);s1[a] += 1;s1[b] -= 1; //这里不是b + 1哦....}for(int i = 1; i < n; i ++) {cin >> a[i] >> b[i] >> c[i];cnt[i] = cnt[i - 1] + s1[i]; //顺便求前缀和}for(int i = 1; i < n; i ++) {sum += ponder(i); //斟酌一下对于这条路哪个方案更好}cout << sum;return 0;
}
。。。。。。。。。。。。。。。。。。。。。。
上面算是入门级难度,接下来的几题是差分套差分的一些经典例子
Lycanthropy
题目背景
小正方形亲眼看见了自己昔日的朋友被卷进了黑暗的深渊,然而它无力阻止……
现在它的朋友已经向它发起了攻击,因此小正方形不得不抵抗。
题目描述
我们把山顶上的湖泊看作一条长度为 mmm 的直线,一开始水深都在水平线上,我们视作此时的水深为 ‘0’
接下来,在一瞬间,小正方形的"朋友"们跳起并扎入水中,导致在入水点的水降低而远离入水点的水升高,注意两个 “朋友” 可能在同一地点入水。
小正方形的每个朋友有一个体积数值 vvv,当体积为 vvv 的一个朋友跳入水中,我们设入水点为 iii,将会导致 i−v+1i - v + 1i−v+1 到 iii 的水位依次降低 1,2,⋯,v1,2,\cdots,v1,2,⋯,v
同样地,第 iii 到 i+v−1i + v - 1i+v−1 的水位会依次降低 v,v−1,⋯,1v,v - 1,\cdots,1v,v−1,⋯,1.
相对应地,i−vi - vi−v 的水位不变, i−v−1i - v - 1i−v−1 到 i−2∗vi - 2 * vi−2∗v 水位依次增加 1,2,⋯,v1,2,\cdots,v1,2,⋯,v, i−2∗vi - 2 * vi−2∗v 到 i−3∗v+1i - 3 * v + 1i−3∗v+1 水位依次增加 v,v−1,⋯,1v,v - 1,\cdots,1v,v−1,⋯,1
同样,i+vi + vi+v 水位不变,i+v+1i + v + 1i+v+1 到 i+2∗vi + 2 * vi+2∗v 水位增加 1,2,⋯,v1,2,\cdots,v1,2,⋯,v,i+2∗vi + 2 * vi+2∗v 到 i+3∗v−1i + 3 * v - 1i+3∗v−1 水位依次增加 v,v−1,⋯,1v,v - 1,\cdots,1v,v−1,⋯,1
现在小正方形想要穿过这个湖,他想要知道在这 nnn 个"朋友"跳入水中后湖上每个节点的水位,你能帮帮它吗?
输入格式
第一行为两个整数 nnn,mmm,表示"朋友"的数目与湖泊的宽度。
接下来 nnn 行,一行两个整数 v,xv,xv,x,表示第 i+1i + 1i+1 个朋友的体积与入水点。
输出格式
一行 mmm 个整数,第 iii 个整数表示 iii 号位的水深。
样例 #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%30\%30% 的数据,n<=50,m<=500n <= 50,m <= 500n<=50,m<=500
对于 70%70\%70% 的数据,n<=105,m<=105n <= 10^5,m <= 10^5n<=105,m<=105
对于 100%100\%100% 的数据,n<=106,m<=106,1<=v<=10000,1<=x<=mn <= 10^6,m <= 10^6,1 <= v <= 10000,1 <= x <= mn<=106,m<=106,1<=v<=10000,1<=x<=m
#include <bits/stdc++.h>
using namespace std;
/*
差分套差分
求两遍前缀和
*/const int N = 1000005, M = 2000005, dif = 50000;
//dif为偏移量,避免REint n, m;
int h[M];
int s[M]; //初级差分数组
int s2[M]; //最外层差分
int mm = 100000000, MM;int main()
{cin >> n >> m;for(int i = 1; i <= n; i ++) {int v, x;cin >> v >> x;//记录下被影响到的边界//前缀和要从边界开始求mm = min(mm, x - 3 * v + 1 + dif);MM = max(MM, x + 3 * v + dif);s[x - 3 * v + 1 + dif] += 1;s[x - 2 * v + 1 + dif] -= 2;s[x + 1 + dif] += 2;s[x + 2 * v + 1 + dif] -= 2;s[x + 3 * v + 1 + dif] += 1;}for(int i = mm; i <= MM; i ++) {s2[i] = s2[i - 1] + s[i];}for(int j = mm; j <= MM; j ++) {h[j] = h[j - 1] + s2[j];}for(int i = 1; i <= m; i ++) cout << h[i + dif] << ' ';return 0;
}
三步必杀
题目背景
(三)旧都
离开狭窄的洞穴,眼前豁然开朗。
天空飘着不寻常的雪花。
一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音。
这是由被人们厌恶的鬼族和其他妖怪们组成的小社会,一片其乐融融的景象。
诶,不远处突然出现了一些密密麻麻的小点,好像大颗粒扬尘一样。
离得近了点,终于看清楚了。
长着角的鬼们聚在一起,围观着另一只鬼的表演。
那”扬尘”,其实都是弹幕。
勇仪的招数之一,三步之内,所到之处弹幕云集,几乎没有生存可能。
为了强化这一技能,勇仪将对着一排柱子进行攻击。
旧地狱的柱子虽然无比坚固,但保险起见还是先要了解一下这样一套攻击对柱子有多少损伤,顺带也能检验练习的效果。
勇仪决定和其它鬼们商量商量…
“我知道妖怪之山的河童一族有一种叫做计算机的神奇道具,说不定可以借来用用”,萃香说道。
于是旧地狱的鬼族就决定请河城荷取来帮忙了。
“要记录【所有柱子的损伤程度】吗”,荷取问道。
经过进一步的询问,荷取发现他们仅仅需要【所有攻击都完成后】柱子的损伤程度。
任务了解地差不多了,荷取将其中的重要部分提取了出来,记录在了她的工作笔记本上:
(记录的内容见题目描述)
那么实验就这样开始了。
在惊天动地的碰撞声中,勇仪每完成一轮攻击,荷取都忠实地记录下对每根柱子产生的伤害。而此时勇仪就在旁边等待着记录完成,然后再进行下一轮的攻击。
地面上,天色渐晚。
“不想在这里留到深夜啊,不然就回不了家了”,荷取这样想着,手中依然在重复地向计算机中输入新产生的信息。
“真的必须一次一次地记录下每轮攻击对每个柱子产生的伤害吗?有没有更高效的方法?”这一念头在荷取的心中闪过…
(后续剧情在题解中,接下来请看T3)
题目描述
问题摘要:
NNN个柱子排成一排,一开始每个柱子损伤度为0。
接下来勇仪会进行MMM次攻击,每次攻击可以用4个参数lll,rrr,sss,eee来描述:
表示这次攻击作用范围为第lll个到第rrr个之间所有的柱子(包含lll,rrr),对第一个柱子的伤害为sss,对最后一个柱子的伤害为eee。
攻击产生的伤害值是一个等差数列。若l=1l=1l=1,r=5r=5r=5,s=2s=2s=2,e=10e=10e=10,则对第1~5个柱子分别产生2,4,6,8,10的伤害。
鬼族们需要的是所有攻击完成之后每个柱子的损伤度。
输入格式
第一行2个整数NNN,MMM,用空格隔开,下同。
接下来MMM行,每行4个整数lll,rrr,sss,eee,含义见题目描述。
数据保证对每个柱子产生的每次伤害值都是整数。
输出格式
由于输出数据可能过大无法全部输出,为了确保你真的能维护所有柱子的损伤度,只要输出它们的异或和与最大值即可。
(异或和就是所有数字按位异或起来的值)
(异或运算符在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⩽n1\leqslant n1⩽n,m⩽1000m\leqslant1000m⩽1000。这种工作即使像妖精一样玩玩闹闹也能完成吧?
河童级(10/1):s=es=es=e,这可以代替我工作吗?
天狗级(20/4):1⩽n⩽1051\leqslant n\leqslant10^51⩽n⩽105,1⩽m⩽1051\leqslant m\leqslant10^51⩽m⩽105。小打小闹不再可行了呢。
鬼神级(52/2):没有特殊限制。要真正开始思考了。
以上四部分数据不相交。
对于全部的数据:1⩽n⩽1071\leqslant n\leqslant10^71⩽n⩽107,1⩽m⩽3×1051\leqslant m\leqslant3\times 10^51⩽m⩽3×105,1⩽l<r⩽n1\leqslant l<r\leqslant n1⩽l<r⩽n.
所有输入输出数据以及柱子受损伤程度始终在[0,9×1018][0,9\times 10^{18}][0,9×1018]范围内。
提示:
由于种种原因,时间限制可能会比较紧,C++选手请不要使用cin读入数据。
by orangebird
#include <bits/stdc++.h>
using namespace std;
/*
Lycanthropy那题的升级版
那题就是公差为1和-1的情况
这题需要自己算公差
差分套差分
求两遍前缀和
*/
typedef long long LL;
const int N = 10000005, M = 300005;LL n, m, ans, MM;
LL hurt[N];
int s1[N], s2[N], h[N];int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m;for(int i = 1; i <= m; i ++) {LL l, r, s, e;cin >> l >> r >> s >> e;LL d = (e - s) / (r - l); //求公差s1[l + 1] += d;s1[r + 1] -= d;h[l] += s; //首项也要记录一下 h[r + 1] -= e; //不把这个删掉的话,后面不在这个范围内的也会累加上这个末项}for(int i = 1; i <= n; i ++) {s2[i] = s2[i - 1] + s1[i];hurt[i] = hurt[i - 1] + s2[i] + h[i];ans ^= hurt[i];if(MM < hurt[i]) MM = hurt[i];}cout << ans << ' ' << MM;return 0;
}
[Poetize6] IncDec Sequence
题目描述
给定一个长度为 nnn 的数列 a1,a2,⋯,an{a_1,a_2,\cdots,a_n}a1,a2,⋯,an,每次可以选择一个区间[l,r][l,r][l,r],使这个区间内的数都加 111 或者都减 111。
请问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。
输入格式
第一行一个正整数 nnn
接下来 nnn 行,每行一个整数,第 $i+1 $行的整数表示 aia_iai。
输出格式
第一行输出最少操作次数
第二行输出最终能得到多少种结果
样例 #1
样例输入 #1
4
1
1
2
2
样例输出 #1
1
2
提示
对于 100%100\%100% 的数据,n≤100000,0≤ai≤231n\le 100000, 0 \le a_i \le 2^{31}n≤100000,0≤ai≤231。
#include <bits/stdc++.h>
using namespace std;
/*
首先对原序列求差分
会得到一些正负数和0
目标就是把他们全都变成0
当然,第一项随便是几都行
所以先不要去改变第一项
把第一项放到一边去这种区间操作+1、-1
只会改变差分序列的边界
序列的中间部分是不会改变的
所以最贪心的操作就是在序列中找到一个正数一个负数
让正数-1、负数+1
对应的操作就是让原序列的中间部分整体-1
所以就在差分序列中求出正数的总和和负数的总和的绝对值
min(cnt[+], cnt[-]) 就是最贪心的操作次数
做完以后还会剩下一些没法抵消的
那么就利用两个端点
整体+1或-1来抵消
端点的选择,可以是第一项,也可以是最后一项
改变第一项的话,就会多一种答案了
所以有多少个不能抵消的
就又会有多少个不同答案
*/
typedef long long LL;
const int N = 100005;int n;
LL a[N], d[N];
LL pos, neg; //差分序列的正负数分别的绝对值总和
LL cnt, dif;int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;for(int i = 1; i <= n; i ++) {cin >> a[i];d[i] = a[i] - a[i - 1];if(i == 1) continue;if(d[i] > 0) pos += d[i];else neg += d[i];}cnt = min(pos, abs(neg));dif = abs(pos - abs(neg)); //表示需要单独操作的次数cnt += dif;cout << cnt << endl << dif + 1;return 0;
}
[NOIP2012 提高组] 借教室
题目描述
在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。
面对海量租借教室的信息,我们自然希望编程解决这个问题。
我们需要处理接下来 nnn 天的借教室信息,其中第 iii 天学校有 rir_iri 个教室可供租借。共有 mmm 份订单,每份订单用三个正整数描述,分别为 dj,sj,tjd_j,s_j,t_jdj,sj,tj,表示某租借者需要从第 sjs_jsj 天到第 tjt_jtj 天租借教室(包括第 sjs_jsj 天和第 tjt_jtj 天),每天需要租借 djd_jdj 个教室。
我们假定,租借者对教室的大小、地点没有要求。即对于每份订单,我们只需要每天提供 djd_jdj 个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。
借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。这里的无法满足指从第 sjs_jsj 天到第 tjt_jtj 天中有至少一天剩余的教室数量不足 djd_jdj 个。
现在我们需要知道,是否会有订单无法完全满足。如果有,需要通知哪一个申请人修改订单。
输入格式
第一行包含两个正整数 n,mn,mn,m,表示天数和订单的数量。
第二行包含 nnn 个正整数,其中第 iii 个数为 rir_iri,表示第 iii 天可用于租借的教室数量。
接下来有 mmm 行,每行包含三个正整数 dj,sj,tjd_j,s_j,t_jdj,sj,tj,表示租借的数量,租借开始、结束分别在第几天。
每行相邻的两个数之间均用一个空格隔开。天数与订单均用从 111 开始的整数编号。
输出格式
如果所有订单均可满足,则输出只有一行,包含一个整数 000。否则(订单无法完全满足)
输出两行,第一行输出一个负整数 −1-1−1,第二行输出需要修改订单的申请人编号。
样例 #1
样例输入 #1
4 3
2 5 4 3
2 1 3
3 2 4
4 2 4
样例输出 #1
-1
2
提示
【输入输出样例说明】
第 111份订单满足后,444天剩余的教室数分别为 0,3,2,30,3,2,30,3,2,3。第 222 份订单要求第 222天到第 444 天每天提供333个教室,而第 333 天剩余的教室数为222,因此无法满足。分配停止,通知第222 个申请人修改订单。
【数据范围】
对于10%的数据,有1≤n,m≤101≤ n,m≤ 101≤n,m≤10;
对于30%的数据,有1≤n,m≤10001≤ n,m≤10001≤n,m≤1000;
对于 70%的数据,有1≤n,m≤1051 ≤ n,m ≤ 10^51≤n,m≤105;
对于 100%的数据,有1≤n,m≤106,0≤ri,dj≤109,1≤sj≤tj≤n1 ≤ n,m ≤ 10^6,0 ≤ r_i,d_j≤ 10^9,1 ≤ s_j≤ t_j≤ n1≤n,m≤106,0≤ri,dj≤109,1≤sj≤tj≤n。
NOIP 2012 提高组 第二天 第二题
2022.2.20 新增一组 hack 数据
#include <atomic>
#include <bits/stdc++.h>
using namespace std;
/*
明显的区间修改和单点查询
m*n的复杂度明显不行
偷看标签发现了二分。。。
确实是单调的
越是编号靠后的人
越难以成功申请到教室
因此可以用二分来优化
*/
typedef long long LL;
const int N = 1000005;struct Order
{int d, s, e;}ord[1000005]; //订单int n, m;
LL r[N]; //每天可用于租借地教室数量LL b[N]; //教室的差分数组,求前缀和可得教室数组a
LL a[N];bool check(int x) //检验x号订单能否成功
{memset(b, 0, sizeof b);memset(a, 0, sizeof a);for(int i = 1; i <= x; i ++) {int d = ord[i].d, s = ord[i].s, e = ord[i].e;b[s] += d;b[e + 1] -= d;}for(int i = 1; i <= n; i ++) {a[i] = a[i - 1] + b[i];if(r[i] < a[i]) return false;} //求一遍前缀和得到每天需要的教室数量return true;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m; //天数和订单数量for(int i = 1; i <= n; i ++) cin >> r[i];for(int i = 1; i <= m; i ++) {cin >> ord[i].d;cin >> ord[i].s;cin >> ord[i].e;}int l = 1, r = m;while(l <= r){int mid = (l + r) / 2;if(check(mid)) l = mid + 1;else r = mid - 1;}if(l == m + 1) cout << 0;else cout << -1 << '\n' << l;return 0;
}
相关文章:

序列差分练习题--从模板到灵活运用
本篇包含6道序列差分练习题及题解,难度由模板到提高 语文成绩 题目背景 语文考试结束了,成绩还是一如既往地有问题。 题目描述 语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分…...

Xshell 连接 Ubuntu 20.04
1 更改网络配置信息 修改/etc/netplan/01-network-manager-all.yaml文件信息 sudo gedit /etc/netplan/01-network-manager-all.yaml删除原有内容,替换为以下信息: 注意:addresses、gateway4 要根据个人虚拟机的实际情况修改 # Let Networ…...

【网口交换机:交换机KSZ9897学习-笔记-资料汇总-记录】
【网口交换机:交换机KSZ9897学习-笔记-资料汇总-记录】1、概述2、 自己的学习与摸索之路第一阶段:随意在网上查找相关资料第二阶段:针对性在网上资料第三阶段:测试并且使用开发板第四阶段:针对性使用工具进行测试。2、…...

linux信号量及其实例
概述 Linux信号量是用于进程间同步和互斥的一种通信机制。本质是计数器 它们通常用于控制对共享资源的访问,以确保只有一个进程可以同时访问该资源。以下是一个详细的教程和C语言代码示例,展示如何使用信号量进行进程间通信。 创建信号量 要使用信号量…...

Nomogram | 盘点一下绘制列线图的几个R包!~(一)
1写在前面 列线图,又称诺莫图(Nomogram),是一种用于预测模型的可视化工具,它可以将多个影响因素和结局事件的关系展示在同一平面上。🥳 列线图最早是由法国工程师Philbert Maurice dOcagne于1884年发明的&a…...

两个数组的交集(力扣刷题)
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/intersection-of-two-arrays 说…...

SonarQube 10.0 (macOS, Linux, Windows) - 清洁代码 (Clean Code)
请访问原文链接:https://sysin.org/blog/sonarqube-10/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Sonar Clean Code Industry leading solutions IDE | SonarLint Free IDE extension that provides on-the-f…...

怎么统一把文件名不需要部分批量替换掉
同事把文件传给我,我接在电脑上看发现文件名都是乱的,前面都加了一串挺长的数字,总之看起来很乱,顺序也跟着乱了,如何把红色框内部分删除掉呢? 上图就是我收到同事发我文件呢,你说要什么修改呢&…...

Vue3电商项目实战-结算支付 3【05-结算-收货地址-添加、06-结算-收货地址-修改、07-结算-提交订单】
文章目录05-结算-收货地址-添加06-结算-收货地址-修改07-结算-提交订单05-结算-收货地址-添加 目的:实现收货地址的添加。 大致步骤: 独立组件,准备一个对话框完成表单布局完成确认添加操作 落的代码: 1.独立组件,准…...

开心档之开发入门网-C++ 变量作用域
C 变量作用域 目录 C 变量作用域 局部变量 实例 全局变量 实例 实例 初始化局部变量和全局变量 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明…...

蓝易云:linux怎么关闭防火墙详细教程
在Linux下关闭防火墙可以通过以下步骤实现: 1. 检查防火墙状态 首先需要检查当前系统的防火墙状态,可以使用以下命令: sudo systemctl status firewalld 如果防火墙当前正在运行,会显示出如下信息: ● firewalld.s…...

操作系统-用户进程
一、Makefile 这个 Makefile 要比之前的文件夹中的 Makefile 更加复杂,是因为之前的文件夹都是对操作系统特定部分的一个编译指导,所以基本上是实现的功能就是“对应的 C 文件和汇编文件编译成目标文件”这一个功能,最后合成一个整体。但是 …...

小驰私房菜_07_camx EIS使能
#小驰私房菜# #Qcom Cax# 本篇文章分下面几点展开: 1) camxoverridesettings.txt 中如何设置打开eis开关? 2)app打开eis,需要设置哪些request? 3) eisv2.0、eisv3.0分别是什么时候采用? 4)相关日志分析,日志上如何确认eis已经使能? 一、 camxoverridesettings.txt …...

互联网快速发展,孕育着新技术、新模式的全新时代正在到来
除了新时代的红利之外,在马云的回归之下,我更多地看到的是,人们信心的回归。这样一种回归,并不仅仅只是局限于企业家本身,纵然是对于普通民众来讲,同样是一种信心的回归。时下,经济复苏的号角开…...

【VUE】1、安装node.js
1、什么是 node.js 官方:Node.js is an open-source, cross-platform JavaScript runtime environment. 翻译:Node.js 是一个开源、跨平台的 JavaScript 运行时环境。 Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome…...

一文弄懂window.print()打印
一文弄懂window.print 打印前言window.print() 默认效果缺陷一、打印样式二、打印指定区域内容1. 对容器进行打印2. 对容器内的部分内容进行打印3. 监听打印前后事件4. iframe三、强行插入分页四、打印设置五、最佳实践(React)1. 背景:2. 思路…...

卷麻了,00后测试用例写的比我还好,简直无地自容.....
前言 作为一个测试新人,刚开始接触测试,对于怎么写测试用例很头疼,无法接触需求,只能根据站在用户的角度去做测试,但是这样情况会导致不能全方位的测试APP,这种情况就需要一份测试用例了,但是不…...

mysql性能优化之explain分析执行计划
前言 在实际工作中,如果已经定位到某些具体的sql需要进行explain分析进而优化,可以直接使用explainsql来分析其执行计划;如果还不能确定是哪些具体的sql语句需要进行explain分析进而优化,那么我们可以首先要定位哪些sql查询慢&…...

IDEA修改关键字和注释颜色
IDEA修改关键字和注释颜色 目录IDEA修改关键字和注释颜色1.修改关键字的默认颜色2.修改注释的默认颜色2.1 修改单行注释的颜色2.2 修改多行注释的颜色2.3 修改文档注释的颜色很多小白在刚刚使用IDEA的时候还不是很熟练 本文主要给大家提供一些使用的小技巧,希望能帮…...

数据库总结/个人总结
目录数据库数据和信息Data数据数据库数据库管理系统总结常见的数据库管理系统关系型数据库连接查询交叉连接、笛卡尔积内连接左连接右连接嵌套查询Jar在Java项目中使用.jar文件JDBC核心接口单表查询SQL注入简化JDBC视图View创建视图使用视图删除视图事务transaction事务的特性A…...

【Maven】开发自己的starter依赖
【Maven】开发自己的starter依赖 文章目录【Maven】开发自己的starter依赖1. 准备工作1.1 创建一个项目1.2 修改pom文件1.3 修改项目结构2. 动手实现2.1 创建客户端类2.2 创建配置类2.3 配置路径2.4 下载到本地仓库3. 测试1. 准备工作 1.1 创建一个项目 打开idea,…...

JVM与Java体系
JVM体系跟着尚硅谷的康师傅学习 JVM内存与垃圾回收概述 除了大部分的Java开发 人员,除了会在项目中使用到与Java平台相关的框架,与API,对于Java的虚拟机了解甚少。但是也需要我们知道如何处理OOM,SOF异常,除了…...

【C++笔试强训】第十二天
选择题 解析:引用:引用是对象的别名,并没有开辟属于自己的空间,两者同用一块内存,引用值改变也会引起引用对象值的改变; 引用在声明的时候必须要初始化,而指针不用,指针可以为空指针…...

C# | 使用DataGridView展示JSON数组
C# | 使用DataGridView展示JSON数组 文章目录C# | 使用DataGridView展示JSON数组前言实现原理实现过程完整源码前言 你想展示一个复杂的JSON数组数据吗?但是你却不知道该如何展示它,是吗?没问题,因为本文就是为解决这个问题而生的…...

Python入门到高级【第四章】
预计更新第一章. Python 简介 Python 简介和历史Python 特点和优势安装 Python 第二章. 变量和数据类型 变量和标识符基本数据类型:数字、字符串、布尔值等字符串操作列表、元组和字典 第三章. 控制语句和函数 分支结构:if/else 语句循环结构&#…...

【ChatGPT】ChatGPT 能否取代程序员?
Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 前言: ChatGPT 的优势 自然语言的生成 文本自动生成 建立了更人性化的人机交互 ChatGPT 的局限性 算法的解释能力较差 程序的可实现性较差 缺乏优化和质量控制 程序员相较于 …...

英飞凌Tricore问题排查01_Det/Reset/Trap排查宝典
目录 1.概述2. 排查方法总览(流程图)3. 进Det排查方法4. 进Reset/Trap排查4.1 通过ErrorHook/ProtectionHook排查4.2. 通过BTV寄存器排查Trap方法4.3 借助英飞凌寄存器排查4.3.1 借助Reset状态寄存器4.3.2 SMU触发的复位4.3.3 CPU触发的复位1.概述 大家在软件开发过程中,可…...

第六章 共享模型之 无锁
JUC并发编程系列文章 http://t.csdn.cn/UgzQi 文章目录JUC并发编程系列文章前言一、问题的引出如何保证取款方法的线程安全解决方案一、使用synchronized锁住临界区代码解决方案二、无锁(AtomicInteger 原子整数类)二、CAS 与 volatileAtomicInteger . compareAndSet( ) 方法的…...

2023Q2押题,华为OD机试用Python实现 -【机智的外卖员】
最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南华为 od 机试,独家整理 已参加机试人员的实战技巧本篇题解:机智的外卖员 题目…...

【华为OD机试真题】密室逃生游戏(javapython)
密室逃生游戏 题目 小强增在参加《密室逃生》游戏,当前关卡要求找到符合给定 密码 K(升序的不重复小写字母组 成) 的箱子, 并给出箱子编号,箱子编号为 1~N 。 每个箱子中都有一个 字符串 s ,字符串由大写字母、小写字母、数字、标点符号、空格组成, 需要在这些字符串中…...