自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 个人博客 arc3102.cn

个人博客arc3102.cn

2021-05-16 17:03:46 209

原创 Java 对象的内存布局(对象头)

文章目录引语对象的内存布局学习工具对象头Mark Wordklass pointer(class pointer)实例数据对齐填充引语在学习 synchronize 时,遇到了关于对象头的知识,特地写篇文章记录一下对象的内存布局对象在堆内存中的存储布局可以分为三部分:对象头(Header)实例数据(Instance Data)对齐填充(Padding)学习工具我们可以通过 jol 的 jar 包,查看对象内存布局maven 依赖如下:<dependency> &

2021-05-17 21:45:23 576

原创 零拷贝与Java NIO

文章目录引语传统 IO 的数据传输流程sendFileLinux 2.1版本Linux 2.4 版本JAVA 中使用 sendFilemmapJAVA 中使用 mmap引用引语在 java 的传统 IO 中,我们从一个输入流 InputStream 中读取数据,写入另一个输出流 OutStream 中,这种数据传输时基于数据拷贝的,这个过程中涉及到了多次拷贝以及用户态和内核态的切换;这些拷贝和上下文切换操作会导致极大的 CPU 开销,为了提升性能,减少该过程的拷贝以及上下文切换的次数,就出现了零拷贝技术

2021-05-16 17:00:33 416 1

原创 CPU Cache 知识详解之写策略以及缓存一致性(MESI)(下)

文章目录引语读策略简单介绍写策略写命中(Hit)write-through(直写/写穿透)write-back(写回)写不命中(Miss)write-allocate(写分配)no-write-allocate(非写分配)缓存一致性MESI例子读取数据写入数据后记引语在上篇和中篇里,我们讲述了 CPU Cache 相关的基础知识以及映射方式和行替换策略,本文中我们将对 Cache 的写策略和 CPU 的缓存一致性进行介绍上篇:CPU Cache 知识详解之基础概念与映射方式(上)中篇:CPU Cac

2021-05-11 18:57:46 1842 1

原创 CPU Cache 知识详解之Cache_Miss与替换策略(中)

文章目录引语Cache Miss(缓存未命中)Compulsory Miss(Cold Miss)强制性未命中Conflict Miss 冲突性未命中Capacity Miss 容量性未命中其他的 Miss 种类Coherence MissCommunication Miss行替换策略(算法)最不常使用(Least-Frequently-Used, LFU)最近最少使用(LeastRecently-Used, LRU)随机替换引语本文是 CPU Cache 相关知识的中篇,上篇中介绍 CPU Cache

2021-05-10 19:28:09 6701 3

原创 CPU Cache 知识详解之基础概念与映射方式(上)

文章目录引语CPU CacheCache LineCache Set内存地址内存地址的组成部分各部分中的位数计算CPU Cache 的映射方式直接映射组选择行匹配字抽取图解组相联组选择行匹配字抽取图解全相联组选择行匹配字抽取图解引语笔者是在学习可见性和 java 的 volatile 中得知该知识点,学习 CPU Cache 和在写此文的过程中,发现其相关内容较多,于是打算分为上中下三篇进行讲述。上文主要介绍 CPU Cache 相关的基础概念以及内存地址到 Cache 的三种映射方式,中篇讲述 Ca

2021-05-09 16:33:16 1723

原创 java的四种引用

文章目录强引用软引用弱引用虚引用强引用java默认的引用方式就是强引用,只要栈帧没有被弹出并且引用还指向着对象,对象就不会被 GC 清除,通过把引用置为 null ,可以使得 GC 清除对象软引用在出现内存不足的情况下会被 GC 回收,这里注意不是出现 GC 就会回收,而是出现内存不足才会回收//JVM 参数设置 -XX:+PrintGCDetails -Xms10m -Xmx10mpublic static void main(String[] args) { SoftReference&l

2021-05-05 19:49:54 95

原创 类加载的各个步骤概括

文章目录类加载加载工作内容加载.class文件的方式链接验证工作内容准备工作内容解析(了解)工作内容初始化工作内容类加载类加载是将类加载到内存中的操作,此处还不涉及对象实例的创建(但是该过程会生成 Class 实例)类加载分为三个步骤:加载,链接,初始化加载工作内容通过一个类的全限定名获取类的二进制字节流(通过全类名读取一个 class 文件)将静态的存储结构转换为方法区中运行时的数据结构在堆区生成类的 Class 对象,作为方法区各数据的访问入口(对象存放在堆区,但是类的元数据在方法区,

2021-05-02 17:38:09 363

原创 用户态和内核态

用户态和内核态从外部资源的角度上讲:操作系统为了保护自己严格控制用户程序的资源访问,不需要外部资源的程序运行状态是用户态,需要操作系统操作外部资源的就是内核态;从运行程序上讲:用户态就是 CPU 运行用户程序,内核态就是 CPU 运行操作系统程序;CPU 有三类寄存器,如图:通过改变模式状态寄存器在用户态和内核态之间切换外部资源内存,硬盘,网卡… 硬件都是外部资源内核态切换系统调用中断异常系统调用读写文件:open / read / write申请内存:C语言中使用 ma

2021-05-02 11:18:56 198

原创 GC性能指标和各垃圾回收器

评估 GC 性能指标吞吐量: 运行用户代码的时间占总运行时间的比例暂停时间: 执行垃圾回收时,程序的工作线程被暂停的时间内存占用: Java堆区占的内存大小吞吐量吞吐量 = 运行用户代码的时间 / (运行用户代码的时间 + 垃圾回收的时间)在高吞吐量优先时,可以忍受较高的暂停时间内存空间大,GC 频率低,暂停时间长,吞吐量高暂停时间就是 GC 执行时间,暂停时间优先时(响应时间优先),单次 stw 越短越好内存空间小,GC 频率高,暂停时间短,吞吐量低目标在最大吞吐量优先下,降低

2021-05-01 22:53:01 282

原创 聚簇索引、二级索引和覆盖索引

聚簇索引首先聚簇索引不是索引类型,而是数据存储方式(虽然是烂大街的话,但是确实如此)InnoDB 的聚簇索引是把数据放到 B+Tree 叶子页,即数据和索引放在一起;聚簇表示数据行和相邻的键值紧凑的存储在一起,《高性能 MySQL》原话,读不懂,个人理解是数据在物理位置上的存储和它们在索引的逻辑存储一致,举个例子,索引为 id,通过索引找到了 id = 13 的数据,它的数据的下一个存储位置,就是 id = 14 的存储位置;书中还说到 InnoDB 只聚集同一页中的记录。包含相邻键值的页面可能相距

2021-04-23 22:18:50 371 1

原创 进程间通讯(待补充)

IPC 概念(后续补充)IPC 持续性管道pipe管道需要一个父进程先使用 pipe 函数获得两个文件描述符 fd[0] 和 fd[1],fd[0] 用于读入,fd[1] 用于写入,然后 fork 一个子进程,然后通过fd 数组进行数据传输;我们平时写的 shell 命令是典型的管道,如 who | sort | lp[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZPc278Yc-1619186943047)(D:\Desktop\note\linux与操作系统\

2021-04-23 22:13:48 81

原创 Redis 缓存的数据一致性问题

Redis 缓存的数据一致性问题系统加入缓存后,在一些极端情况下,就会出现缓存和数据库的数据不一致,导致读取到脏数据首先需要确定一点的是不可能做到绝对的一致性,原因是 redis 和数据库本身就是两个系统,他们之间没法实现事务,无法保证原子性,在高并发的情况下,不管是先更新数据库,还是缓存,总会有一个时刻 redis 和 数据库的数据时不一致的,如果业务要求高一致性就不要上 redis更新策略当数据发生变化时,对数据库和缓存的操作如下更新操作对数据库的更新操作:直接更新数据对缓存的操作:

2021-04-23 22:08:18 258

原创 5种IO模型和IO多路复用详解

I/O模型概述同步I/O阻塞式I/O非阻塞式I/OI/O复用信号驱动I/O异步I/OPOSIX的异步 I/O 函数输入操作流程输入操作一般分为两个流程等待数据准备好对于在套接字上的操作,就是等待数据在网络中到达内核缓冲区从内核向进程中复制数据就是把数据从内核缓冲区中复制到应用进程缓冲区同步I/O和异步I/O的区别同步 I/O 操作导致请求进程阻塞异步 I/O 操作不导致请求进程阻塞阻塞式 I/O 、非阻塞式 I/O 、I/O 复用、信号驱动

2021-04-23 22:06:18 461

原创 轻量级锁(CAS)和重量级锁

JVM线程:OS线程 == 1:1<jdk1.2 重量级锁(个人见解,尤其在重量级锁方面)重量级锁和轻量级锁的概念重量级锁:交给 OS 管理锁的争抢,释放 CPU 资源轻量级锁:JVM 自己管理锁的争抢(无锁,自旋锁),CPU资源不释放不上锁时的多线程并发问题在不上锁的情况下,多个线程可能会出现以下的并发问题轻量级锁的实现方式:CAS查看现在的值是不是原先读到本地线程的值,是就修改,不是重新读取到本地,继续循环;因为需要一直循环直到修改成功,所以使用 while 循环,所以轻

2021-04-23 21:57:30 1961

原创 Spring装配bean

Spring装配bean在Spring框架中,Spring容器负责创建项目中bean并通过DI(依赖注入)的方式来进行装配。Spring提供了三种装配方式在java中进行显式装配在XML中进行显式装配通过Spring的组件扫描和自动装配技术进行隐式装配为了解释bean的装配,我们假设一个场景:CD(compact disc)和CD播放器(CDPlayer),CD需要放入CD播放器中才可以进行播放。为了描述当前这个场景,我们先定义一个CD接口,定义接口的目的是达到播放器和CD唱片的解耦,这

2021-03-03 19:49:29 186 5

原创 2020-IT节程序设计竞赛-题解

2020-BNUZ-IT节程序设计竞赛-题解A.营救小玉和老爹B.静静想题目C.年轻人,要来一把昆特牌吗?D.我劝,这支蜡烛,耗子尾汁!E.棋魂F.英雄联盟排队机制G.arc看演唱会H.加油,打工人!I.迪迦的陨石雨J.新生赛的场外求助K.测试接待员A.营救小玉和老爹题解由式子min(ceil((1+T/100)ti), 100100ti),我们可以知道如果在第i条道路清除结束后就通过,那么在该道路耗时就是ti,由此我们对清理计划进行预处理一下首先我们对每条路清理计划按照开始时

2020-12-07 16:21:19 2477 6

原创 jQuery实现幻灯片播放效果

jQuery实现一个类似幻灯片播放的效果主要功能:幻灯片播放与暂停点击前后按钮切换图片点击按钮查看图片缩略图点击对应的缩略图可以切换当前图片缩略图可以进行翻页效果:具体实现代码中已经详细解释<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-wid

2020-10-29 08:47:33 673

原创 Codeforces-1323D Present【思维】【异或】【二分】

题目Codeforces-1323D题意给一个长度为n的数组,计算以下公式的答案(a1+a2)⊕(a1+a3)⊕…⊕(a1+an) ⊕(a2+a3)⊕…⊕(a2+an) … ⊕(an−1+an)题解以下第k位从0开始计起,如二进制01的1处于第0位;考虑答案的每一位,假设答案第 k 位上为1,则有奇数个a[i]+a[j] (i>j)在第 k 位上为1;在计算第k位上是否为1时,k+1位以上的值对结果是没有影响的,所以我们先把数组a的每个数(k+1)位以上值消除后存入

2020-09-16 15:15:32 171

原创 HDU-6863 Isomorphic Strings【2020 Multi-University Training Contest 8】【KMP】【暴力】

题目HDU-6863题意给出一个长度为n的字符串,对于n的每个因子,如果存在一个因子k,将字符串分隔成k个子串,每个子串长度都为n/k,并且每个子串都属于一个cyclical isomorphic,那么就输出Yes,如果所有分隔情况都不能使每个子串为一个cyclical isomorphic则输出No;cyclical isomorphic:如果两个串可以通过移动前缀到串的尾部,使得两个串相同,则这两个串为cyclical isomorphic,例如,a串:“abcd”,b串:“cdab”,将a

2020-08-16 17:35:14 206

原创 RMQ问题 st表详解【模板】【板题】POJ-3264 Balanced Lineup

RMQ问题RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。来自百度百科简单说就是给出n个数的数组,每次询问给出L和R,问在 a[L…R] 这个区间里的最值ST表就是用来解决该问题ST(Sparse Table)算法可以在O(nlogn)时间内进行预处理,然后在O(1)时间内查询每个问题;但是ST只能解决

2020-08-15 20:38:59 179

原创 codeforces-1395D Boboniu Chats with Du【前缀和】【枚举】

题目codeforces-1395D题意给出n个数的数组a,从1开始遍历数组当a[i]<=m时,直接拿走a[i],当a[i]>m时,拿走a[i],i后面的d个数不能拿,即a[i+1],a[i+2]…a[i+d]不能拿走;重新排列数组,使得拿走的数总和最大题解先把>m和<=m的数分开来,最大的数肯定放在最后面(因为后面没有数了,不会对其他数造成影响),然后计算最多可以拿多少个>m的,即k = min(big_cnt,(n-1)/(d+1)),枚举取>m的数的

2020-08-14 00:42:28 167

原创 POJ-3281 Dining【网络流】【最大流】【dinic】

题目POJ-3281题意n只牛,f种食物,d种食物,每只牛都有喜欢的食物和饮料,每头牛都有各自喜欢的食物和饮料,每种食物或饮料只能分配给一头牛。问最多能有多少头牛可以同时得到喜欢的食物和饮料。(每头牛只吃一份食物和饮料)题解建一个像下面的图求最大流(边权都为1)主要讲下为什么要把每只牛拆开成两部分如果不拆的话会建立如下的图,这样子求出的最大流为2,因为一只牛吃了两份食物饮料,把牛拆开来限制了一只牛只能吃一份食物饮料代码/* * @author: arc * @date: 2020-

2020-08-12 16:29:54 206

原创 HDU-6825 Set1【2020 Multi-University Training Contest 5】【组合数学】

题目HDU-6825题意值为1-n的n个数的集合(n为奇数),每次进行一次操作:删除集合中最小的数,同时随机删除集合中的另一个数,进行(n-1)/2次这样的操作,最终剩下一个数,现在问集合1-n每个数最终被留下的概率题解我们定义操作中选择最小的数删除为操作1,随机删除的为操作2;我们考虑每个i最终留下的方案,首先当i前面的数大于等于后边的数时才有可能会被留下来,即i-1>=n-i;因为如果前边的数小于后边的数时,当i前边的数被操作1删除时,集合中的数量还大于1,而i是最小的数,会在下一次操

2020-08-09 17:52:48 165

原创 HDU-6816 Boring Game【2020 Multi-University Training Contest 5】【规律】

题目HDU-6816题意n张纸叠在一起,对折k次,如下图左侧将每层的两面依次编上号,输出展开后从左上到右下的编号顺序(下图右侧)下图为2张纸,对折2遍题解我们折叠的纸逐次展开,以样例为例展开第一次展开第二次通过观察我们很容易发现规律,对当前纸张展开,只要前一半数对称地放到后一半的数列前边就可以了,我们用vector模拟k边展开最后输出结果即可代码/* * @author: arc * @date: 2020-08-07 20:18:47 */#include<cst

2020-08-07 21:40:37 158

原创 HDU-6832 A Very Easy Graph Problem【2020 Multi-University Training Contest 6】【最小生成树】【并查集】【dfs】

题目HDU-6832题意一个无向图,给出n个点,依次给出m条边e[i],边的权值为2^i,每个点带权值1或者0,求下面式子的值:                                

2020-08-06 23:32:59 175

原创 codeforces-1333C Eugene and an array【前缀和】【思维】

题目codeforces-1333C题意给出一个为 n 的数组 a问这个数组中有多少子数组是好数组子数组:一个数字前面删除若干个元素(包括0和全部),后面删除若干个元素(包括0和全部),后的数组为原数组的子数组好数组:如果一个数组的每个子数组的元素和都不为0,则该数组为好数组题解如果存在一个子数组 b 和为0,则如果另一个数组为好数组则不能包含数组 b;思路:遍历数组,我们只计算a[i]为右边界的子数组存在多少个好数组,当遍历完所有元素即可计算出所有的好数组数量;1、当索引到i时,我们查

2020-08-03 03:46:51 212

原创 使用vscode中遇到的问题及其解决方法

解决vscode使用coderunner无法运行文件名带空格的文件用coderunner运行以前的cpp文件时,发现文件名中带空格的文件无法运行;ps:虽然命名带空格不是好习惯hhh解决方法:在setting.json中加入下面的代码 "code-runner.executorMap":{ "cpp": "cd $dir && g++ \"$fileName\" -o 编译成功 && .\\编译成功" }...

2020-08-02 20:22:59 1066

原创 HDU-6795 Little W and Contest 【2020 Multi-University Training Contest 3】【并查集】

题目HDU-6795题意n个人,每个人的能力值为1或者2,现在进行组队,组队规则如下:1、三个能力值为2可以组一队;2、两个能力值为2和一个能力值为1的可以组一队;3、三人必须相互不认识才能组队;起初所有人都不认识对方,接下来小W给其中两个人介绍,使他们相互认识(a认识b,b认识c,c也就认识a),小W会进行n-1次介绍;问一开始这n个人可以组多少不同的队伍,以及小W每次介绍后,这n个人又可以组多少不同的队伍;题解首先对于这种交友问题明显是要使用并查集,大致思路就是我们先计算出一开始的组

2020-08-02 17:58:34 194

原创 HDU-6813 Last Problem【2020 Multi-University Training Contest 4】【构造】【dfs】

题目HDU-6813题意张三要在一个无限的空白的二维平面中写下一个n,写下n的前提是上下左右相邻的格子存在n-1,n-2,n-3,n-4四个数字,n<=4则只要四周的格子存在大于0小于n的所有数字即可,(即当n=4时四周要存在1,2,3;当n=1时没有要求)求写下n的步骤题解当需要写下一个n时,要满足以下要求: n-1 n-2 n n-3 n-4题目的n<=100,而且对不要求最优化步骤数,我们直接从n开始dfs即可代码/*

2020-08-02 15:24:43 161

原创 HDU-6797 Tokitsukaze and Rescue【2020 Multi-University Training Contest 3】【最短路】【暴力】【dij】【dfs】

题目HDU-6797题意给出n个点,n*(n-1)/2条边的无向图,让你去掉任意k条边,使得点1到点n的最短路最大n<=50k<=5题解假设现在我们已经有一条最短路,那么删除最短路上的边才会使得最短路长度变大,删除其他边时对最短路没有影响的;我们先求出当前图形的最短路径,枚举该路径上的边,选择一条边去除后,继续对当前图形进行dij,枚举过程通过递归实现(dfs)直到删除够k条边就通过dis[n]更新ans值ps:注意一下path的初始化,debug了半天代码/* * @

2020-08-02 00:11:00 180

原创 HDU-6805 Deliver the Cake【2020 Multi-University Training Contest 4】【最短路】【dij】

题目HDU-6805题意n个点,m条路的无向图,给出每条路的耗时w,求张三从起点面包店s到家终点t的最短路,另外张三手里(左手或者右手)提着东西,每个点有一个值规定在该点张三需要用那只手提东西;L表示用左手提;R表示用右手提;M表示用左右手都可以;换手时需要额外花时间x;题解把M的点拆分成两个点L和R,根据每条边连接的点将换手的权值加入到边权中;例如:点a到点b有条边,权值val,a为M,b为M我们统一将拆分出来的R的点放置在点的索引+n的位置,即点a+n为R的点,而a为L的点,同理b

2020-08-01 01:04:20 243 1

原创 Codeforces 1199D-Welfare State【思维】

题目链接题意给一个大小n的数组,有q次操作,操作有两种:1 p x,将第p个数变成x;2 x,将数组中小于x的数变成x,大于x的数不变思路用last[i]数组记录一下第i个数的最后一次1操作是总操作的第几次操作;lastX数组记录第i个数最后一次1操作改变的的数(或者原本的数)lastAllToX数组记录第i次操作后面(包括i)的2操作最大的xlastAllToX数组的构建就是先...

2020-07-27 20:42:15 188

原创 Codeforces 1199E-Matching vs Independent Set【思维】

题目链接题意给一个有3*n个点和m条边的一个无向图;找出一个大小为n的边集,要求集合内没有两条边有共同的点,称为Matching;输出Matching和n条边编号或者找出一个大小为n的点集,要求集合内没有两个点有边相连,称为IndSet;输出IndSet和n个点编号如果没有就输出Impossible思路这题虽然放在E题但是其实就是个大水题,...

2020-07-27 20:42:07 129

原创 Codeforces 1199F-Rectangle Painting 1【dp】【记忆化搜索】

题目链接题意给出一个nn的矩阵,全由"#“和”.“组成,”#“代表黑色,”."代表白色,你可以选择一块hw区域,把这块区域的全部格子涂成白色,花费是max(h, w);问把整个矩形全涂成白色,最少要花费多少。思路这题很明显是dp,dp[x1][y1][x2][y2]代表把[x1, x2] [y1, y2]这个区域涂成白色花费最少多少;我们先考虑这个区域全为黑色的情况,那我们直接选择这整个...

2020-07-27 20:41:46 140

原创 HDU-6774 String Distance【2020 Multi-University Training Contest 2】【DP】【LCS】

题目HDU-6774题意a,b两个字符串,a长度10^5,b长度20,两种操作:1、选择任意字符串,在任意位置增加一个字符;2、选择任意字符串,在任意位置删除一个字符;q次询问,每次给出l和r,问对于a[l…r]和b两个字符串,最少需要多少次操作可以使两个字符串相同题解首先确定不需要增加操作,考虑修改后两个字符串,对于每个位上的字符:1、如果两个字符串都在这个位置上做了增加操作,那么这个增加操作为多余的,直接不操作即可;2、如果其中一个字符串在该位置上做了增加操作,那么原先可以直接在另

2020-07-27 20:38:09 137

原创 HDU-6763 Total Eclipse 【2020 Multi-University Training Contest 2】【并查集】【贪心】

题目HDU-6763题意给出一个n个点,m条边的无向图,图不一定连通,每个点有一个权值val,可以选择一个连通的子图,对子图的每个点的val减一;问最少多少次这样操作可以将所有点减为零题解从无构建出原图,先将点按照权值从大到小排序,依次向图中加入点,点加入时,连通块加一,然后判断该点是否与当前图的连通块存在边,连通则连通块减一,用并查集判断连通块代码#include<cstdio>#include<cstdlib>#include<cstring>#i

2020-07-26 20:20:44 107

原创 HDU-6759 Leading Robots【2020 Multi-University Training Contest 1】【单调栈】

求有#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<string>#include<iostream>#include<sstream>#include<set>#include<map>#include<queue>

2020-07-26 18:02:54 142

原创 Codeforces 1234D-Distinct Characters Queries【线段树】

题意给一个字符串,m次操作操作1,把下标为 pos 的字符改成c操作2,查询 l 到 r 的区间不同的字符数思路26颗线段树完事代码#include <bits/stdc++.h>#define maxn 101000using namespace std;char str[maxn];struct node{ int l, r, sum;}tree[26...

2019-10-08 22:25:26 217

原创 Codeforces 1185C2-Exam in BerSU (hard version)【思维】【桶排】

题目链接翻之前的cf,发现这题没补,看了下这么简单,不知道为什么没有写出来题意给出一个大小n的数组,和一个m,对应数组中每个数 i ,要在【0,i】的区间内删除若干个数(但是不能删除i),使得剩下的数的总和小于等于m,对于每一个i,求最少要删除多少个数;思路因为数组中的数的值最大就是100;所以我们可以遍历数组,遍历完将 a[i] 放cnt数组中;在遍历a数组中时我们只要在cnt数组中从...

2019-09-13 16:43:43 220

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除