Codeforces Round 932 (Div. 2)(A,B,C,D)

比赛链接

AB都是思维,更确切地说,A考了字符串字典序,很经典的贪心考点,B考了MEX运算。C出的还是比较好的,dp方法值得学习。D题是个不太好想的容斥,主要是变量有点多,容易搞混。


A. Entertainment in MAC

题意:

恭喜你,你被硕士援助中心录取了!但是,你在课堂上感到非常无聊,厌倦了无所事事,于是你给自己想了一个游戏。

给你一个字符串 s s s 和一个整数 n n n 。你可以对它进行两种运算:

  1. 将反向字符串 s s s 添加到字符串 s s s 的末尾(例如,如果 s = s = s= cpm,那么在执行操作后 s = s = s= cpmmpc )。
  2. 将当前字符串 s s s 倒转(例如,如果 s = s = s= cpm,则在执行操作后 s = s = s= mpc)。

需要确定在进行精确 n n n 操作后,可以得到的词序最小的 † ^{\dagger} 字符串。请注意,您可以按照任意顺序进行不同类型的运算,但必须总共进行 n n n 次运算。

† ^{\dagger} 当且仅当以下条件之一成立时,字符串 a a a 在词法上比字符串 b b b 小:

  • a a a b b b 的前缀,但是 a ≠ b a \ne b a=b
  • a a a b b b 不同的第一个位置上,字符串 a a a 的字母在字母表中出现的时间早于 b b b 中的相应字母。

思路:

发现新构造出来的字符串最前面 ∣ s ∣ |s| s 个字符要么是 s s s,要么是反向的 s s s。正向好说,不用操作就是。而要保证进行偶数次操作后,最前面是反向的 s s s,那么一定需要先用一下操作 2 2 2,再用一下操作 1 1 1

为了字典序最小,我们后面一定是一直使用操作 2 2 2。因此我们只需要比较一下正向 s s s 和反向 s s s 哪个小,如果是正向的,那么就只用操作 2 2 2,否则先用一下操作 1 1 1,之后一直用操作 2 2 2

code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;int T,n;
string s,t;int main(){cin>>T;while(T--){cin>>n>>s;t=string(s.rbegin(),s.rend());if(s<=t)cout<<s<<endl;else cout<<t+s<<endl;}return 0;
} 

B. Informatics in MAC

题意:

在硕士援助中心,Nyam-Nyam 接受了一项信息学方面的家庭作业。

有一个长度为 n n n 的数组 a a a ,你想把它分成 k > 1 k\gt 1 k>1 个子段 † ^{\dagger} ,使每个子段上的 MEX ⁡ ‡ \operatorname{MEX} ^{\ddagger} MEX 都等于相同的整数。

请帮助 Nyam-Nyam 找到合适的除法,或者确定不存在合适的除法。

† ^{\dagger} 将数组划分为 k k k 个子数段的定义是 k k k 对整数 ( l 1 , r 1 ) , ( l 2 , r 2 ) , … , ( l k , r k ) (l_1, r_1), (l_2, r_2), \ldots, (l_k, r_k) (l1,r1),(l2,r2),,(lk,rk) ,使得 l i ≤ r i l_i \le r_i liri 和每个 1 ≤ j ≤ k − 1 1 \le j \le k - 1 1jk1 l j + 1 = r j + 1 l_{j + 1} = r_j + 1 lj+1=rj+1 ,以及 l 1 = 1 l_1 = 1 l1=1 r k = n r_k = n rk=n 。这些对表示子段本身。

数组中的 ‡ MEX ⁡ ^{\ddagger}\operatorname{MEX} MEX 是不属于该数组的最小非负整数。

例如

  • 数组 [ 2 , 2 , 1 ] [2, 2, 1] [2,2,1] MEX ⁡ \operatorname{MEX} MEX 0 0 0 ,因为 0 0 0 不属于该数组。
  • 数组 [ 3 , 1 , 0 , 1 ] [3, 1, 0, 1] [3,1,0,1] 中的 MEX ⁡ \operatorname{MEX} MEX 2 2 2 ,因为 0 0 0 1 1 1 属于数组,而 2 2 2 不属于数组。
  • 数组 [ 0 , 3 , 1 , 2 ] [0, 3, 1, 2] [0,3,1,2] 中的 MEX ⁡ \operatorname{MEX} MEX 4 4 4 ,因为 0 0 0 1 1 1 2 2 2 3 3 3 属于数组,而 4 4 4 不属于数组。

思路:

每段区间都不含某个数,说明这个数在整段区间上肯定从来没出现过。所以我们要选就选在原序列中没出现的数。我们要一段区间上的 M E X MEX MEX 等于某个数 x x x,就需要这段区间上包含 1 ∼ x − 1 1\sim x-1 1x1 的所有数。所以我们要每段区间的 M E X MEX MEX 值都等于某个数 x x x 的话, x x x 只可能是最小的原序列没出现的数。我们只要对这个数验证一下即可。

code:

#include <iostream>
#include <cstdio>
#include <vector>
#include <set>
using namespace std;
const int maxn=1e5+5;int T,n;
int a[maxn];int main(){cin>>T;while(T--){cin>>n;set<int> S;for(int i=1;i<=n;i++){cin>>a[i];S.insert(a[i]);}int x;for(int i=0;;i++)if(S.find(i)==S.end()){x=i;break;}vector<pair<int,int> > ans;for(int l=1,r=1,t;l<=n;){t=0;S.clear();do{S.insert(a[r++]);while(S.find(t)!=S.end())t++;if(r>n && t!=x){//将最后一段不完整的段归入到前一段l=ans.rbegin()->first;ans.pop_back();break;}
//				cout<<l<<" "<<r<<endl;}while(t!=x);ans.push_back(make_pair(l,r-1));l=r;}if(ans.size()>1){cout<<ans.size()<<endl;for(auto x:ans)cout<<x.first<<" "<<x.second<<endl;}else cout<<-1<<endl;}return 0;
}

C. Messenger in MAC

题意:

凯夫特梅鲁姆硕士生援助中心的新信使计划进行一次更新,开发人员希望在更新中优化向用户显示的信息集。目前共有 n n n 条信息。每条信息由两个整数 a i a_i ai b i b_i bi 表示。读取数字为 p 1 , p 2 , … , p k p_1, p_2, \ldots, p_k p1,p2,,pk 1 ≤ p i ≤ n 1 \le p_i \le n 1pin ,所有 p i p_i pi 都是不同的)的信息所花费的时间由公式计算得出:

∑ i = 1 k a p i + ∑ i = 1 k − 1 ∣ b p i − b p i + 1 ∣ \Large \sum_{i=1}^{k} a_{p_i} + \sum_{i=1}^{k - 1} |b_{p_i} - b_{p_{i+1}}| i=1kapi+i=1k1bpibpi+1

请注意,读取由一个编号为 p 1 p_1 p1 的报文组成的报文集所需的时间等于 a p 1 a_{p_1} ap1 。此外,读取一组空信息所需的时间为 0 0 0

用户可以确定他愿意在信使中花费的时间 l l l 。信使必须告知用户信息集的最大可能大小,其阅读时间不超过 l l l 。请注意,信息集的最大大小可以等于 0 0 0

流行信使的开发人员未能实现这一功能,因此他们要求您解决这一问题。

思路1(堆):

上面的描述很神秘,实际上表达的意思很简单。就是可以乱序地不重复地成对选出一些 a , b a,b a,b,使得选出数的序列的 a a a 的和以及相邻两项 b b b 的差的绝对值相等。总和不超过 L L L 的前提下,使得选出的数尽可能多。

为了最小化 ∑ i = 1 k − 1 ∣ b p i − b p i + 1 ∣ \sum_{i=1}^{k - 1} | b_{p_i} - b_{p_{i+1}}| i=1k1bpibpi+1 我们不妨把每对数按 b b b 来进行排序,按顺序选出若干个数后,因为有大小关系,绝对值号可以直接拆掉,前一项与后一项相消,也就是 b p k − b p k − 1 + b p k − 1 − b p k − 2 + ⋯ + b p 2 − b p 1 b_{p_k}-b_{p_{k-1}}+b_{p_{k-1}}-b_{p_{k-2}}+\dots+b_{p_{2}}-b_{p_{1}} bpkbpk1+bpk1bpk2++bp2bp1 那么它就变成了 b p k − b p 1 b_{p_k}-b_{p_{1}} bpkbp1。把 p 1 p_1 p1 看成选取区间的左端点, p k p_k pk 看成右端点的话,则原式就相当于在区间 [ l , r ] [l,r] [l,r] 中选取若干个数,使得 a i a_i ai 之和加上 r − l r-l rl 小于等于 L L L(左右端点必选),问最多能选多少个数。

朴素的想法是先枚举右端点,然后枚举左端点,然后贪心地选区间内最小的前几个数。但是这样最坏是 O ( n 3 l o g n ) O(n^3log\,n) O(n3logn) 的(区间排序占 O ( n l o g n ) O(nlog\,n) O(nlogn))。我们希望有个 O ( n 2 l o g n ) O(n^2log\,n) O(n2logn) 的做法。所以我们考虑能否从上一个区间直接推过来。

一个想法是:枚举右端点 r r r,然后左端点 l l l r r r 1 1 1 推。使用堆来存储区间 [ l , r ] [l,r] [l,r] 中最小的若干个值,使得它们的和 ≤ L − ( r − l ) \le L-(r-l) L(rl)(这意味着我们以 l , r l,r l,r 为左右端点的时候,选取的就是堆中的数,因为总和满足前面的条件,因此在值上是满足条件的)。

不过这个想法有个比较明显的缺陷,就是有可能我们推到某个左端点 l l l 根本没选 a l a_l al,而是直接将它踢出了堆,这样就不符合左右端点必选的条件了。不过这样还是可以得到正确答案的,因为这种不符合条件的情况一定无法更新答案

为什么呢?假设我们推到了某个左端点 l l l 却没有选上 a l a_l al,那么我们此时堆中最靠左的数的位置 l ′ l' l 作为左端点时,堆中数的总和加上 r − l ′ r-l' rl 一定更小,比这个情况更有可能更新答案。前面的情况已经更新过答案了,因此这个情况一定无法更新答案。这就保证了正确性。

code:

#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn=2005;int T,n;
ll L;
pair<int,int> x[maxn];int main(){cin>>T;while(T--){cin>>n>>L;for(int i=1;i<=n;i++){cin>>x[i].second>>x[i].first;}sort(x+1,x+n+1);int ans=0;for(int r=1;r<=n;r++){priority_queue<int> h;ll tot=0;for(int l=r;l>=1;l--){h.push(x[l].second);tot+=x[l].second;while(tot+x[r].first-x[l].first>L && !h.empty()){tot-=h.top();h.pop();}if(tot+x[r].first-x[l].first<=L)ans=max(ans,(int)h.size());}}cout<<ans<<endl;}return 0;
} 

思路2(动态规划):

我们在选数的时候需要知道那些数是第一个选上的数,哪一个是最后一个选上的数,所以设 d p 1 [ i ] [ j ] dp1[i][j] dp1[i][j] 表示前 i i i 个数中选出 j j j 的最小值, d p 2 [ i ] [ j ] dp2[i][j] dp2[i][j] 表示前 i i i 个数中选出 j j j 个,并且最后一个数选 a j a_j aj 的最小值。

d p 1 dp1 dp1 我们就正常选数即可,只需要特判一下当前状态选择的是否是第一个数, d p 2 dp2 dp2 d p 1 dp1 dp1 来推,这样 d p 2 dp2 dp2 得到的就是一种选取方式,即若干个 a a a 的值减去 b l b_l bl 再加上 b r b_r br

而第一维为 i i i d p 1 , d p 2 dp1,dp2 dp1,dp2 之和 i − 1 i-1 i1 的有关,所以我们可以优化掉第一维。这样就变成了 jiangly 大佬的写法了。

code:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <set> 
using namespace std;
typedef long long ll;
const ll inf=1e18;
const int maxn=2005;int T,n;
ll l;
pair<int,int> itv[maxn];int main(){cin>>T;while(T--){cin>>n>>l;for(int i=1;i<=n;i++)cin>>itv[i].second>>itv[i].first;sort(itv+1,itv+n+1);vector<ll> dp1(n+1,inf),dp2(n+1,inf);for(int i=1;i<=n;i++){ll a=itv[i].second;ll b=itv[i].first;for(int j=n;j>=1;j--){dp1[j]=min(dp1[j],dp1[j-1]+a);dp2[j]=min(dp2[j],dp1[j-1]+a+b);}dp1[1]=min(dp1[1],a-b);dp2[1]=min(dp2[1],a);}for(int i=n;i>=1;i--){if(dp2[i]<=l){cout<<i<<endl;break;}if(i==1){cout<<0<<endl;}}}return 0;
}

D. Exam in MAC

题意:

硕士生援助中心公布了入学考试,考试内容如下。

给考生一个大小为 n n n 的集合 s s s 和一个奇怪的整数 c c c 。对于这个集合,需要计算出使 0 ≤ x ≤ y ≤ c 0 \leq x \leq y \leq c 0xyc x + y x + y x+y 包含在集合 s s s 中,并且 y − x y - x yx包含在集合 s s s 中, ( x , y ) (x, y) (x,y) 对的个数。

你的朋友想进入中心工作。请帮助他通过考试!

思路:

容斥原理。很好的题。

x , y x,y x,y 是任取的,我们当然不可能任取,用屁股想都会超时。因此从 x + y , y − x x+y,y-x x+y,yx 下手。假设 x + y = a ∉ s , y − x = b ∉ s x+y=a\not\in s,y-x=b\not\in s x+y=as,yx=bs,则有 x = a − b 2 , y = a + b 2 x=\dfrac{a-b}2,y=\dfrac{a+b}2 x=2ab,y=2a+b。显然 b ≤ a b\le a ba,并且当 a , b a,b a,b 不同时,得到的 x , y x,y x,y 一定不同(也就说有多少对不同的 a , b a,b a,b,就有多少对不同的 x , y x,y x,y)。

题目说 x + y , y − x x+y,y-x x+y,yx 不在集合 s s s 中,也就是 a , b a,b a,b 不在集合 s s s 中。我们只要找到所有不在集合 s s s 中的数,让 a , b a,b a,b 去等于这些数,就能得到一对对 x , y x,y x,y。但是问题在于如何保证得到的 x , y x,y x,y 合法,以及如何计数。

一开始的想法是因为 a − b 2 ≤ a + b 2 ≤ c \dfrac{a-b}2\le \dfrac{a+b}2 \le c 2ab2a+bc,所以枚举 a a a,然后去算 b b b 的个数,不过还是太麻烦了,当 c c c 很大的时候还需要将一整段进行压缩,整段求和,暴力来算会T。

所以尝试反着来求。用总的对数减去 a a a(也就是 x + y x+y x+y) 合法的对数和 b b b(也就是 y − x y-x yx) 合法的对数,最后再加上 a , b a,b a,b 同时合法的对数,剩下的就是不合法的对数。

  1. 总对数显然是 C c + 1 2 = ( c + 1 ) ∗ ( c + 2 ) / 2 C_{c+1}^2=(c+1)*(c+2)/2 Cc+12=(c+1)(c+2)/2。( x , y x,y x,y 可选 0 ∼ c 0\sim c 0c 的数,包括 0 0 0

  2. 我们让 a a a 去等于已有的数,得到的就是 a a a 合法的对数。假设这个数是 t t t,那么 x + y = t x+y=t x+y=t ,又因为 y ≥ x y\ge x yx,所以得到的总的合法对数为 t / 2 + 1 t/2+1 t/2+1

  3. 同理,我们让 b b b 去等于已有的数,得到的就是 b b b 合法的对数。假设这个数是 t t t,那么 y − x = t y-x=t yx=t ,因为 y ≤ t y\le t yt,所以得到的总的合法对数为 c − t + 1 c-t+1 ct+1

  4. a , b a,b a,b 同时合法的话,需要 x = a − b 2 , y = a + b 2 x=\dfrac{a-b}2,y=\dfrac{a+b}2 x=2ab,y=2a+b 算出来的 x , y x,y x,y 为正整数,因此 a , b a,b a,b 需要奇偶性相同。我们统计一下给出的数中有多少个奇数 o o o 和偶数 e e e,总数就是 C e 2 + C o 2 = e ∗ ( e + 1 ) / 2 + o ∗ ( o + 1 ) / 2 C_e^2+C_o^2=e*(e+1)/2+o*(o+1)/2 Ce2+Co2=e(e+1)/2+o(o+1)/2

code:

#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;int T,n,c;int main(){cin>>T;while(T--){cin>>n>>c;ll ans=1ll*(c+1)*(c+2)/2;int o=0,e=0;for(int i=1,t;i<=n;i++){cin>>t;ans-=t/2+1;//x+y=tans-=c-t+1;//y-x=tif(t&1)o++;else e++;}ans+=1ll*o*(o+1)/2;ans+=1ll*e*(e+1)/2;cout<<ans<<endl;}return 0;
}

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

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

相关文章

校园招聘管理系统(源码+文档)

校园招聘管理系统&#xff08;小程序、ios、安卓都可部署&#xff09; 文件包含内容程序简要说明含有功能项目截图客户端热门岗位校园招聘首页个人简历添加个人简历我的界面注册界面查看个人简历界面个人资料界面登录界面消息界面退出登录 管理端登录界面![请添加图片描述](htt…

局域网环境使用webrtc连接freeswitch

let options { mediaConstraints: { audio: true, video: false }, "sessionTimersExpires":120, // "pcConfig":{"iceServers":[{"urls":"stun:stun1.ketianyun.com:3478"}]} }; 网页呼叫的时候&#xff0c;需要一个问题&…

Python保留字与obspy安装

保留字&#xff1a; 被编程语言内部定义并保留使用的标识符。Python有33个保留字 andelifimportraiseglobalaselseinreturnnonlocalassertexceptistryTrue breakfinallylambdawhileFalseclassfornotwithNonecontinuefromoryielddefifpassdel 最近在安装obspy时经常&am…

预处理指令——那些你可能不知道的概念

前言&#xff1a;预处理是我们的c语言源代码成为可执行程序的第一个步骤。而宏和预处理指令都是在这个阶段完成。本节内容就是关于宏和预处理指令相关知识点的解析。 目录 宏 预定义符号 #define定义常量 #define定义符号 #define定义宏 带副作用的宏参数 宏的替换规则…

给虚拟机配置静态IP并使用FileZIlla在虚拟机和Windows之间传输文件(ssh和ftp两种方法)

一、配置操作系统网络 &#x1f338;下面的步骤主要是配置虚拟机的静态IP&#xff0c;方便后续用 FikeZilla 在windows和虚拟机之间传输文件&#xff08;否则用默认的ip分配方案为 DHCP ,每一次开机时的ip都是有可能不同的,这样就会导致每次远程连接都需要查看ip地址.&#xf…

Windows安装electron卡住报错的问题

这里写自定义目录标题 先说配置安装electron卡住报错的问题问题解决过程直接上方案提醒 先说配置 操作系统&#xff1a;Windows 11 Electron 版本&#xff1a;^28.1.0 node 版本&#xff1a;v20.12.0 npm 版本&#xff1a;10.5.0 安装electron卡住报错的问题 之前在 Mac 中开…

Maven 继承父工程时的relativePath标签解析用法

Maven 继承父工程时的relativePath标签解析 relativePath 的作用是为了找到父级工程的pom.xml;因为子工程需要继承父工程的pom.xml文件中的内容。然后relativePath 标签内的值使用相对路径定位到父工程的pom.xml。 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同…

三、Linux Centos7.9系统的iDRAC远程管理、网络设置、SecureCRT远程登录终端、企业级静态ip地址配置

目录 1、iDRAC连接登录服务器远程管理 1.1、网线连接 1.2、启动服务器,这个加载界面点击F10​编辑 1.3、使用TAB贱选择左侧选项-->系统设置-->高级硬件配置​编辑 1.4、选择【iDRAC设置】​编辑 1.5、选择【网络】 1.6、DHCP选择禁用,查看服务器的IP地址并且记住…

mysql执行脚本导入表和数据后中文注释乱码解决

本人在使用不同版本下进行操作时&#xff0c;就会出现中文乱码的问题。例如我本地安装mysql8&#xff0c;服务器安装的是mysql5&#xff0c;然后本地连接服务器的mysql后&#xff0c;执行SQL脚本之后发现中文全部乱码 使用工具查看&#xff0c;注释也都是乱码 解决方案 本地…

C语言键盘输入与屏幕输出——数据的格式化键盘输入

目录 数据的格式化键盘输入 输入数据的格式控制 scanf&#xff08;&#xff09;的格式字符 scanf()的格式修饰符 数据的格式化键盘输入 格式 scanf&#xff08;格式控制字符串&#xff0c;输入地址表&#xff09;&#xff1b; 输入数据的格式控制 格式 scanf&#xff08;…

二. Git基础命令

二. Git基础命令 1. 获取 Git 仓库2. 记录每次更新到仓库2.1 检查当前文件状态2.2 跟踪新文件2.3 暂存已修改的文件2.4 忽略文件2.5 查看已暂存和未暂存的修改2.6 提交更新2.7 跳过使用暂存区域2.8 移除文件2.9 移动文件2.10 版本回退 4. 撤消操作4.1 取消暂存的文件4.2 撤消对…

【opencv】教程代码 —ShapeDescriptors

检测和显示图像的轮廓 在图像中搜索并显示轮廓边缘多边形、轮廓矩形和包围圆 获取包含检测到的轮廓的椭圆和旋转的矩形 图像轮廓检测和轮廓凸包 计算图像中的轮廓的矩&#xff08;包括面积、重心等&#xff09;并进行显示 创建和绘制一个多边形图像然后计算并显示图像上每个点到…

【Golang星辰图】数据之美:探索Go语言数据处理和分析的新境界

数据之源&#xff1a;掌握Go语言数据处理与分析库的精髓 前言&#xff1a; 随着数据科学和机器学习的兴起&#xff0c;对于数据处理和分析变得尤为重要。在Go语言生态系统中&#xff0c;有一些强大的库可供使用&#xff0c;用于处理和分析大规模的数据集合。本文将介绍几款主…

分类预测 | Matlab实现CNN-GRU-Mutilhead-Attention卷积神经网络-门控循环单元融合多头注意力机制多特征分类预测

分类预测 | Matlab实现CNN-GRU-Mutilhead-Attention卷积神经网络-门控循环单元融合多头注意力机制多特征分类预测 目录 分类预测 | Matlab实现CNN-GRU-Mutilhead-Attention卷积神经网络-门控循环单元融合多头注意力机制多特征分类预测分类效果基本介绍模型描述程序设计参考资料…

代码膨胀会破坏开发操作吗,它将如何影响编译时间?

Incredibuild 正潜心研究公司以及客户的未来发展趋势。 过去的一年举步维艰&#xff0c;但聪明的企业总是能够抓住机遇&#xff0c;将大部分业务自动化&#xff0c;保持敏捷度和竞争力&#xff0c;最佳的案例就是游戏工作室。这一年来&#xff0c;用户对新游戏或新版本的期待达…

困难样本挖掘:Hard Sample Mining

Hard Sample Mining Hard Sample Mining&#xff0c;即困难样本挖掘&#xff0c;是目标检测中的一种常用方法。其主要思想是针对训练过程中损失较高的样本&#xff08;即那些难以被正确分类的样本&#xff09;进行挖掘&#xff0c;并将其补充到数据集中重新训练&#xff0c;以…

什么是代理模式

代理模式&#xff08;Proxy Pattern&#xff09;是一种设计模式&#xff0c;它为对象提供一种代理或占位符&#xff0c;通过引入一个代理对象来控制对目标对象的访问。代理对象与目标对象具有相同的接口&#xff0c;客户端可以通过代理对象间接地与目标对象交互。代理模式的主要…

【React】vite + react 项目,配置项目路径别名 @

vite react 项目&#xff0c;配置项目路径别名 1 安装 types/node2 在 vite.config.ts 中添加配置&#xff1a;3 配置路径别名的提示 使用 vite 开发 react 项目时&#xff0c;可以通过一下步骤配置路径别名&#xff1a; 1 安装 types/node npm i -D types/node2 在 vite.con…

LeetCode-560. 和为 K 的子数组【数组 哈希表 前缀和】

LeetCode-560. 和为 K 的子数组【数组 哈希表 前缀和】 题目描述&#xff1a;解题思路一&#xff1a;一边算前缀和一边统计。这里用哈希表统计前缀和出现的次数&#xff0c;那么和为k的子数组的个数就是当前前缀和-k的个数&#xff0c;即preSums[presum - k]。画个图表述就是&a…

无尘布擦拭过程中的问题及其解决方案

无尘布&#xff0c;作为一种广泛应用于电子、半导体、生物医药等领域的清洁材料&#xff0c;其质量和使用方式直接关系到产品生产的洁净度和质量。然而&#xff0c;在无尘布的擦拭过程中&#xff0c;常常会遇到一些问题&#xff0c;如接触不当的溶剂、胶水选择不当、产品收缩以…