操作系统
计算机由硬件和软件所组成。 操作系统是软件的一类,协助用户调度硬件工作,充当用户和计算机之间的桥梁。 当计算机拥有了操作系统,就相当于拥有了灵魂,操作系统可以:1.调度CPU进行工作2.调度内存进行工作3.调度硬盘进行数据存储4.调度网卡进行网络通讯5.调度音响发出声音6.调度打印机打印内容 常见的操作系统有:PC端:Windows、Linux、MacOS;移动端:Android、IOS、鸿蒙系统。
虚拟机快照
VMware虚拟机(Workstation和Funsion)支持为虚拟机制作快照。通过快照将当前虚拟机的状态保存下来,在以后可以通过快照恢复虚拟机到保存的状态。
棋盘
问题描述小蓝拥有 $n \times n$ 大小的棋盘,一开始棋盘上全都是白子。小蓝进行了 $m$ 次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)。请输出所有操作做完后棋盘上每个棋子的颜色。 输入格式输入的第一行包含两个整数 $n, m$,用一个空格分隔,表示棋盘大小与操作数。接下来 $m$ 行每行包含四个整数 $x_1, y_1, x_2, y_2$,相邻整数之间使用一个空格分隔,表示将在 $x_1$ 至 $x_2$ 行和 $y_1$ 至 $y_2$ 列中的棋子颜色取反。 输出格式输出 $n$ 行,每行 $n$ 个 0 或 1 表示该位置棋子的颜色。如果是白色则输出 0,否则输出 1。 样例输入Plaintext3 31 1 2 22 2 3 31 1 3 3 样例输出Plaintext001010100 评测用例规模与约定对于 30% 的评测用例, $n, m \le 500$;对于所有评测用例, $1 \le n, m \le 2000$,$1 \le x_1 \le x_2 \le n$,$1 \le y_1 \le ...
油漆
输入格式第一行两个整数 $n, m$,分别表示油漆的罐数和专家进行的操作数。接下来 $m$ 行,每行三个整数 $l_i, r_i, k_i$,表示在第 $i$ 次操作中向编号在 $l_i$ 到 $r_i$ 之间(包括两端)的罐子中加入颜料。加入的颜料是黄色($k_i=1$),蓝色($k_i=2$)或红色($k_i=3$)中的一种。 输出格式输出一行一个整数,表示在所有操作之后绿色油漆的罐数。 说明/提示判断一罐油漆最后是不是绿色,必须同时满足以下三个条件: 必有黄色 ($Yellow > 0$) 必须有蓝色 ($Blue > 0$) 绝对不能有红色 ($Red == 0$) 开辟三个数组统计每个位置上各种颜色颜料的数量通过差分数组来模拟在区间上加入颜料的操作#include<iostream>#include<vector>using namespace std;int main(){ int m,n,cnt=0; cin>>n>>m; vector<int>yellow(n+...
重新排序
题目:重新排序【问题描述】给定一个数组 $A$ 和一些查询 $L_i, R_i$,求数组中第 $L_i$ 至第 $R_i$ 个元素之和。小蓝觉得这个问题很无聊,于是他想重新排列一下数组,使得最终每个查询结果的和尽可能地大。小蓝想知道相比原数组,所有查询结果的总和最多可以增加多少?【输入格式】输入第一行包含一个整数 $n$。第二行包含 $n$ 个整数 $A_1, A_2, \cdots, A_n$。相邻两个整数之间用一个空格分隔。第三行包含一个整数 $m$ 表示查询的数目。接下来 $m$ 行,每行包含两个整数 $L_i, R_i$。相邻两个整数之间用一个空格分隔。【输出格式】输出一行包含一个整数表示答案。【样例输入】Plaintext51 2 3 4 521 32 5【样例输出】Plaintext4【样例说明】原来的和为 $6 + 14 = 20$,重新排列为 $(1, 4, 5, 2, 3)$ 后和为 $10 + 14 = 24$,增加了 4。【评测用例规模与约定】对于所有评测用例,$1 \le n, m \le 10^5, 1 \le A_i \le 10^6, 1 \le L...
差分
快速处理区间加减(前缀和的逆运算)for(int i=n-1;i>=0;i--){ if(i==0) d[i]=a[i]; else d[i]=a[i]-a[i-1];} 1 1 1 1 1 1 1 1前缀和得到 差分得到1 2 3 4 1 0 0 0差分得到 前缀和得到1 1 1 1 恢复为原数组 1 1 1 1 恢复为原数组 和前缀和互为逆运算:前缀和数组做差分: s_i = a_0 + a_1 + \dots + a_{i-1} + a_i ($i$ 位置的前缀和是 $0$ 到 $i$ 的总和) s_{i-1} = a_0 + a_1 + \dots + a_{i-1} ($i-1$ 位置的前缀和是 $0$ 到 $i-1$ 的总和) 相减得...
C++STL库
向量 vector#include <vector>连续的顺序的储存结构(和数组一样的类别),但是有长度可变的特性。 常用方法构造vector<类型> arr(长度, [初值])#include<vector>vector<int> arr(100,0); //构造初始长为100的int一维数组,初始值全为0vector<vector<int>>arr(100,vector<int>()); //构造行数为100,列数不定的二维数组vector<vector<int>>arr(100,vector<int>(666,-1)); //构造行数为100,列数为666的二维数组,初始值为-1 尾接 & 尾删 .push_back(元素):在 vector 尾接一个元素 .pop_back():删除 vector 尾部的一个元素获取长度.size()获取当前 vector 的长度清空.clear()清空 vector判空.empty()如果是空返回 true 反...
K倍区间
k倍区间题目描述给定一个长度为 $N$ 的数列, $A_1, A_2, \cdots A_N$。如果其中一段连续的子序列 $A_i, A_{i+1}, \cdots A_j (i \le j)$ 之和是 $K$ 的倍数,我们就称这个区间 $[i, j]$ 是 K 倍区间。你能求出数列中总共有多少个 $K$ 倍区间吗? 输入描述第一行包含两个整数 $N$ 和 $K$ $(1 \le N, K \le 10^5)$。以下 $N$ 行每行包含一个整数 $A_i$ $(1 \le A_i \le 10^5)$。 输出描述输出一个整数,代表 K 倍区间的数目。 输入输出样例示例输入 5 212345 输出 6 前缀和:计算数组的前缀和 $S$。 同余定理:如果区间 $[i, j]$ 的和是 $K$ 的倍数,即 $(S_j - S_{i-1}) \% K == 0$,这意味着 $S_j \% K == S_{i-1} \% K$。 转化:只需要计算前缀和模 $K$ 的余数。如果有 $c$ 个前缀和的余数相同(比如都是 1),那么从这 $c$ 个位置中任选 2 个($C_c^2$),它们之...
拔河
问题描述小明是学校里的一名老师,他带的班级共有 $n$ 名同学,第 $i$ 名同学力量值为 $a_i$。在闲暇之余,小明决定在班级里组织一场拔河比赛。为了保证比赛双方实力尽可能相近,需要在这 $n$ 名同学中挑选出两个队伍,队伍内的同学编号连续:${a_{l_1}, a_{l_1+1}, \dots, a_{r_1}}$ 和 ${a_{l_2}, a_{l_2+1}, \dots, a_{r_2}}$,其中 $l_1 \le r_1 < l_2 \le r_2$。两个队伍的人数不必相同,但是需要让队伍内的同学们的力量值之和尽可能相近。请计算出力量值之和差距最小的挑选队伍的方式。 输入格式输入共两行。第一行为一个正整数 $n$。第二行为 $n$ 个正整数 $a_i$。 输出格式输出共一行,一个非负整数,表示两个队伍力量值之和的最小差距。 样例输入510 9 8 12 14 样例输出1 样例说明其中一种最优选择方式:队伍 1:${a_1, a_2, a_3}$,队伍 2:${a_4, a_5}$,力量值和分别为 $10+9+8=27$,$12+14=26$,差距为 $|27-2...
区间翻转区间异或和
题目描述符卡有一个长度为 $n$ 的整数数组 $a$,符卡认为一个区间 $[l, r]$ 是灵异区间当且仅当 $\bigoplus_{i=l}^r a_i = 0$,或者说这个区间内所有数字异或起来刚好等于 $0$。符卡有特殊的魔法,可以把任意一个灵异区间翻转。具体来说,如果 $[l, r]$ 区间是灵异区间,那么符卡就可以对这个区间使用魔法,整个数组就会变成 $a_1, a_2, \dots, a_{l-1}, a_r, a_{r-1}, \dots, a_l, a_{r+1}, a_{r+2}, \dots, a_n$。现在符卡可以使用任意次数的魔法,符卡希望最后得到的数组的灵异区间数量能够尽可能多,你能告诉她最后最多有多少个灵异区间吗? 输入格式第一行一个正整数 $n$,表示数组长度。第二行 $n$ 个非负整数 $a_1, a_2, \dots, a_n$ 表示整个数组。 输出格式输出一行一个整数,表示符卡使用任意次魔法后灵异区间最多有多少个。 输入输出样例输入 #131 1 1输出 #12输入 #243 1 2 3输出 #22 对于如何找到灵异区间我们前面说到过,对整个数...
