当前位置: 首页 > news >正文

AcWing - 蓝桥杯集训每日一题(DAY 1——DAY 5)

文章目录

  • 一、AcWing 3956. 截断数组(中等)
    • 1. 实现思路
    • 2. 实现代码
  • 二、AcWing 3729. 改变数组元素(中等)
    • 1. 实现思路
    • 2. 实现代码
  • 三、AcWing 1460. 我在哪?(简单)
    • 1. 实现思路
    • 2. 实现代码
  • 四、AcWing 3768. 字符串删减(简单)
    • 1. 实现思路
    • 2. 实现代码
  • 五、AcWing 3777. 砖块(简单)
    • 1. 实现思路
    • 2. 实现代码

一、AcWing 3956. 截断数组(中等)

题目描述

给定一个长度为 nnn 的数组 a1,a2,…,ana_{1},a_{2},…,a_{n}a1,a2,,an
现在,要将该数组从中间截断,得到三个非空子数组。
要求,三个子数组内各元素之和都相等。
请问,共有多少种不同的截断方法?

输入格式

第一行包含整数 nnn
第二行包含 nnn 个整数 a1,a2,…,ana_{1},a_{2},…,a_{n}a1,a2,,an

输出格式

输出一个整数,表示截断方法数量。

数据范围

前六个测试点满足: 1≤n≤101≤n≤101n10
所有测试点满足: 1≤n≤105,−10000≤ai≤100001≤n≤10^{5},−10000≤a_{i}≤100001n10510000ai10000

输入样例 1

4
1 2 3 3

输出样例 1

1

输入样例 2

5
1 2 3 4 5

输出样例 2

0

输入样例 3

2
0 0

输出样例 3

0

具体实现

1. 实现思路

  • 我们有一个长度为 n 的数组,将其分成三段,使三段内的元素都相等,求有多少种截断方法。
  • 首先,我们可以先求解一些总和 s,如果 3 不可以整除总和 s 的话,就一定无解。如果想要有解的话,s 一定是 3 的倍数。因此,我们可以先计算出总和 s 和每一段的总和 s/3。
  • 问题就转变为一共有多少种选法,使得每一段的和都是 s/3。
  • 我们可以先确定后面的点,让前面的总和是 2s/3,再选择前面的点,满足第一段是 s/3。
  • 我们再枚举的过程中,可以使用前缀和,计算出从起始点到每一段的前缀和,判断第一段前缀和是 s/3,第二段前缀和是 2s/3 即可。

2. 实现代码

#include <bits/stdc++.h>
using namespace std;
int n;
int a[100005];
long long res=0,cnt=0;
int main()
{cin>>n;for(int i=1;i<=n;i++){int x=0;cin>>x;a[i]=a[i-1]+x;  //前缀和数组}if(a[n]%3!=0 || n<3){cout<<"0"<<endl;}else{for(int j=2;j<n;j++){if(a[j-1]==a[n]/3){cnt++;}if(a[j]==a[n]/3*2){res+=cnt;}}cout<<res;}return 0;
}

二、AcWing 3729. 改变数组元素(中等)

题目描述

给定一个空数组 VVV 和一个整数数组 a1,a2,…,ana_{1},a_{2},…,a_{n}a1,a2,,an
现在要对数组 VVV 进行 nnn 次操作。
iii 次操作的具体流程如下:

  • 从数组 VVV 尾部插入整数 000
  • 将位于数组 VVV 末尾的 aia_{i}ai 个元素都变为 111(已经是 111 的不予理会)。

注意:

  • aia_{i}ai 可能为 0,即不做任何改变。
  • aia_{i}ai 可能大于目前数组 V 所包含的元素个数,此时视为将数组内所有元素变为 111
    请你输出所有操作完成后的数组 VVV

输入格式

第一行包含整数 TTT,表示共有 TTT 组测试数据。
每组数据第一行包含整数 nnn
第二行包含 nnn 个整数 a1,a2,…,ana_{1},a_{2},…,a_{n}a1,a2,,an

输出格式

每组数据输出一行结果,表示所有操作完成后的数组 VVV,数组内元素之间用空格隔开。

数据范围

1≤T≤200001≤T≤200001T20000
1≤n≤2×1051≤n≤2×10^{5}1n2×105
0≤ai≤n0≤a_{i}≤n0ain
保证一个测试点内所有 nnn 的和不超过 2×1052×10^{5}2×105

输入样例

3
6
0 3 0 0 1 3
10
0 0 0 1 0 5 0 0 0 2
3
0 0 0

输出样例

1 1 0 1 1 1
0 1 1 1 1 1 0 0 1 1
0 0 0

具体实现

1. 实现思路

  • 由于我们每次操作都会加入一个数,在操作 i 次之后,新数组的长度就是 i,然后,再将当前数组的最后面的 ai 个数变成 1。
  • 由于第 i 次数组一共有 i 个,将后 ai 个数变为 1,也就是我们将是 i-ai+1 到 i 的区间内的 ai 个数全部变成 1,也就是这个区间内的数据操作一次。
  • 因此,我们可以开一个新数组与原数组长度相等,用以记录区间内数据操作的个数,因为 V 数组当中的 1 不会发生改变,所以,操作多次和操作一次的效果是相同的。
  • 最后,如果新数组当中的元素大于 0,那么 V 数组中对应的元素就是 1,如果新数组中的元素等于 0,那么 V 数组中对应的元素就是 0。

2. 实现代码

#include <bits/stdc++.h>
using namespace std;
const int N=200010;
int n;
int b[N];
int main()
{int T;cin>>T;while(T--){cin>>n;memset(b,0,(n+1)*4);for(int i=1;i<=n;i++){int x;cin>>x;x=min(x,i); //如果x大于i的话就更新成i,因为此时是将数组内的所有元素变为1 int l=i-x+1,r=i; b[l]++;b[r+1]--;}for(int i=1;i<=n;i++){b[i]+=b[i-1];}for(int i=1;i<=n;i++){cout<<!!b[i]<<" ";}cout<<endl;}return 0;
}

三、AcWing 1460. 我在哪?(简单)

题目描述

农夫约翰出门沿着马路散步,但是他现在发现自己可能迷路了!
沿路有一排共 NNN 个农场。
不幸的是农场并没有编号,这使得约翰难以分辨他在这条路上所处的位置。
然而,每个农场都沿路设有一个彩色的邮箱,所以约翰希望能够通过查看最近的几个邮箱的颜色来唯一确定他所在的位置。
每个邮箱的颜色用 A..ZA..ZA..Z 之间的一个字母来指定,所以沿着道路的 NNN 个邮箱的序列可以用一个长为 NNN 的由字母 A..ZA..ZA..Z 组成的字符串来表示。
某些邮箱可能会有相同的颜色。
约翰想要知道最小的 KKK 的值,使得他查看任意连续 KKK 个邮箱序列,他都可以唯一确定这一序列在道路上的位置。
例如,假设沿路的邮箱序列为 ABCDABC
约翰不能令 K=3K=3K=3,因为如果他看到了 ABC,则沿路有两个这一连续颜色序列可能所在的位置。
最小可行的 KKK 的值为 K=4K=4K=4,因为如果他查看任意连续 444 个邮箱,那么可得到的连续颜色序列可以唯一确定他在道路上的位置。

输入格式

输入的第一行包含 NNN,第二行包含一个由 NNN 个字符组成的字符串,每个字符均在 A..ZA..ZA..Z 之内。

输出格式

输出一行,包含一个整数,为可以解决农夫约翰的问题的最小 KKK 值。

数据范围

1≤N≤1001≤N≤1001N100

输入样例

7
ABCDABC

输出样例

4

具体实现

1. 实现思路

  • 我们要找到一个最小的 K,使得字符串当中从 K 分开不存在两个相同的字符串。
  • 我们可以使用暴力解法,也就是 4 个 for 循环,第一重循环枚举每一个 K,第二重循环枚举第一个子串,第三重循环枚举第二个子串,第四重循环判断两个字串是否相同。

2. 实现代码

#include <bits/stdc++.h>
using namespace std;
int n;
string str;
int main()
{cin >> n >> str;for (int k = 1; k <= n; k ++ ){bool flag = false;for (int i = 0; i + k - 1 < n; i ++ ){for (int j = i + 1; j + k - 1 < n; j ++ ){bool same = true;for (int u = 0; u < k; u ++ )if (str[i + u] != str[j + u]){same = false;break;}if (same){flag = true;break;}}if (flag) break;}if (!flag){cout << k << endl;break;}}return 0;
}

四、AcWing 3768. 字符串删减(简单)

题目描述

给定一个由 nnn 个小写字母构成的字符串。
现在,需要删掉其中的一些字母,使得字符串中不存在连续三个或三个以上的 xxx
请问,最少需要删掉多少个字母?
如果字符串本来就不存在连续的三个或三个以上 xxx,则无需删掉任何字母。

输入格式

第一行包含整数 nnn
第二行包含一个长度为 nnn 的由小写字母构成的字符串。

输出格式

输出最少需要删掉的字母个数。

数据范围

3≤n≤1003≤n≤1003n100

输入样例 1

6
xxxiii

输出样例 1

1

输入样例 2

5
xxoxx

输出样例 2

0

输入样例 3

10
xxxxxxxxxx

输出样例 3

8

具体实现

1. 实现思路

  • 我们利用 cnt 存储当前连续出现字符 x 的个数。
  • 若出现了一个字符 x,则 cnt 加一。
  • 若出现了一个其它字符,则 cnt 清零。
  • 若当前 cnt=3,说明遇到了连续三个 x,此时需要删除一次。特别地,此时删除最后一个字符 x 后,可能补位的字符仍为 x,如输入样例 3 所示。此时不能将 cnt 清零,而应该减一,然后继续遍历。

2. 实现代码

#include <bits/stdc++.h>
using namespace std;int main()
{int n;string s;cin>>n>>s;int res=0,cnt=0;for(int i=0;i<n;i++){if(s[i]=='x'){cnt++;if(cnt==3){cnt--;res++;}}else{cnt=0;}}cout<<res<<endl;return 0;
}

五、AcWing 3777. 砖块(简单)

题目描述

nnn 个砖块排成一排,从左到右编号依次为 1∼n1∼n1n
每个砖块要么是黑色的,要么是白色的。
现在你可以进行以下操作若干次(可以是 000 次):
选择两个相邻的砖块,反转它们的颜色。(黑变白,白变黑)
你的目标是通过不超过 3n3n3n 次操作,将所有砖块的颜色变得一致。

输入格式

第一行包含整数 TTT,表示共有 TTT 组测试数据。
每组数据第一行包含一个整数 nnn
第二行包含一个长度为 nnn 的字符串 sss。其中的每个字符都是 WB,如果第 iii 个字符是 W,则表示第 iii 号砖块是白色的,如果第 iii 个字符是 B,则表示第 iii 个砖块是黑色的。

输出格式

每组数据,如果无解则输出一行 −1−11
否则,首先输出一行 kkk,表示需要的操作次数。
如果 k>0k>0k>0,则还需再输出一行 kkk 个整数,p1,p2,…,pkp_{1},p_{2},…,p_{k}p1,p2,,pk。其中 pip_{i}pi 表示第 iii 次操作,选中的砖块为 pip_{i}pipi+1p_{i+1}pi+1 号砖块。
如果方案不唯一,则输出任意合理方案即可。

数据范围

1≤T≤101≤T≤101T10
2≤n≤2002≤n≤2002n200

输入样例

4
8
BWWWWWWB
4
BWBB
5
WWWWW
3
BWB

输出样例

3
6 2 4
-1
0
2
2 1

具体实现

1. 实现思路

  • 并没有要求操作次数最少,因此,只需输出任意一组可成功操作的次数即可。最终的结果只有两种,要么全黑,要么全白, 两种情况可以依次枚举(任一情况都可)。
  • 同一个位置我们最多操作 1 次,因为操作两次的话就变回原样。并且,操作的顺序不影响最后的结果。
  • 其中,第一个砖块只能操作一次,所以,如果第一个砖块跟我们目标颜色相同的话,就不需要进行操作,如果不同的话,就一定会进行操作。第一个砖块是否操作是已经确定的了,第二个砖块也是同样的道理,后续皆同。因此在最后,如果最后一个砖块和目标颜色相同的话,就一定有解,如果不同的话就一定无解,这中间我们只需要操作 n-1 次。

2. 实现代码

#include <bits/stdc++.h>
using namespace std;
int n;
string str;
void update(char &c)
{if(c=='W'){c='B';}else{c='W';}
}
bool check(char c)
{vector<int>res;string s=str;for(int i=0;i<n-1;i++){if(s[i]!=c){update(s[i]);update(s[i+1]);res.push_back(i+1); //字符串从0开始,题目中从1开始}}if(s.back()!=c){return false;}cout<<res.size()<<endl;for(int x=0;x<res.size();x++){cout<<res[x]<<' ';}if(res.size()!=0){cout<<endl;}return true;
}
int main()
{int T;cin>>T;while(T--){cin>>n>>str;if(!check('B')&&!check('W')){cout<<"-1"<<endl;}}return 0;
}

相关文章:

AcWing - 蓝桥杯集训每日一题(DAY 1——DAY 5)

文章目录一、AcWing 3956. 截断数组&#xff08;中等&#xff09;1. 实现思路2. 实现代码二、AcWing 3729. 改变数组元素&#xff08;中等&#xff09;1. 实现思路2. 实现代码三、AcWing 1460. 我在哪&#xff1f;&#xff08;简单&#xff09;1. 实现思路2. 实现代码四、AcWin…...

RHCSA-文件的其他命令(3.7)

目录 文件的其他命令&#xff1a; 文本内容统计wc 移动和复制&#xff08;cp&#xff09; 移动 查找文件的路径 压缩和解压缩 .tar&#xff08;归档命令&#xff09; shell-命令解释器 linux中的特殊字符 查看系统上的别名&#xff1a;alias 历史命令&#xff08;his…...

多线程update导致的mysql死锁问题处理方法

最近想起之前处理过的一个mysql 死锁问题&#xff0c;是在高并发下update批量更新导致的&#xff0c;这里探讨一下发生的原因&#xff0c;以及解决办法&#xff1b; 发生死锁的sql语句如下&#xff0c;其中where条件后的字段是有复合索引的。 update t_push_message_device_h…...

SpringBoot 如何保证接口安全?

为什么要保证接口安全对于互联网来说&#xff0c;只要你系统的接口暴露在外网&#xff0c;就避免不了接口安全问题。 如果你的接口在外网裸奔&#xff0c;只要让黑客知道接口的地址和参数就可以调用&#xff0c;那简直就是灾难。举个例子&#xff1a;你的网站用户注册的时候&am…...

英伟达驱动爆雷?CPU占用率过高怎么办?

又有一新驱动导致CPU占用率过高&#xff1f; 上周英伟达发布531.18显卡驱动&#xff0c;为大家带来了视频超分辨率技术&#xff0c;并为新发布的热门游戏《原子之心》提供支持。 但在安装新驱动后没过不久就有玩家反映&#xff0c;在游戏结束后会出现CPU占用率突然飙升到10%以…...

链表经典面试题【典中典】

&#x1f4af;&#x1f4af;&#x1f4af;链表经典面试题❗❗❗炒鸡经典&#xff0c;本篇带有图文解析&#xff0c;建议动手刷几遍。&#x1f7e5;1.反转链表&#x1f7e7;2.合并两个有序链表&#x1f7e8;3.链表分割&#x1f7e9;4.链表的回文结构&#x1f7e6;5.相交链表&…...

Java泛型深入

一. 泛型的概述和优势 泛型概述 泛型&#xff1a;是JDK5中引入的特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。泛型的格式&#xff1a;<数据类型>&#xff0c;注意&#xff1a;泛型只能支持引用数据类型。集合体系的全部接口和实现类都是…...

体验Linux USB 驱动

目录 一、USB OTG 二、I.MX6ULL USB 接口简介 硬件原理图 1、USB HUB 原理图 2 、USB OTG 原理图 三、使能驱动 1、打开 HID 驱动 2、 使能 USB 键盘和鼠标驱动 3 、使能 Linux 内核中的 SCSI 协议 4、使能 U 盘驱动 四、测试u盘 五、 Linux 内核自带 USB OTG USB 是…...

servlet 中的ServletConfig与servletContext

ServletConfig对象&#xff1a;servlet配置对象&#xff0c;主要把servlet的初始化参数封装到这个对象中。 一个网站中可能会存在多个servletConfig对象&#xff0c;一个servletConfig对象就封装了一个servlet的配置信息。 可以在web.xml中通过<init-param></init-p…...

Hadoop3.1.3单机(伪分布式配置)

参考&#xff1a;林子雨老师网站博客 Hadoop安装搭建伪分布式教程&#xff08;全面&#xff09;吐血整理 环境 Vmare12 Ubuntu16.04 创建Hadoop用户 若安装Ubuntu不是用的“hadoop”用户&#xff0c;则需要增加一个名为"hadoop"的用户 直接快捷键ctrlaltt或者点…...

HBase---浅谈HBase原理

浅谈HBase原理 文章目录浅谈HBase原理HBase定义HBase逻辑结构HBase物理存储结构TimeStampType数据模型NaneSpaceRegionRowColumnTineStampCellHBase架构MasterMaster 架构Meta 表格介绍Region ServerRegionServer 架构MemStoreWALBlockCacheZookeeperHDFSHBase写数据流程HBase读…...

学习笔记四:dockerfile

Dockerfile概述dockerfile语法详解FROMMAINTAINERRUN&#xff1a;指定在当前镜像构建过程中要运行的命令EXPOSE指令CMDENTERYPOINTCOPYADDVOLUMEWORKDIRENVUSERONBUILDLABELHEALTHCHECKARG概述 Dockerfile 是一个用来构建镜像的文本文件&#xff0c;文本内容包含了一条条构建镜…...

微服务里的小问题

1.微服务为什么设置不同的namespace 为了实现三种服务三种情况下的隔离。 2.为什么要用nginx为naocos集群结点做负载均衡&#xff1f; 2.1 正向代理 就像我们访问外网需要一个代理。 2.2 反向代理 我们不需要访问真实的ip&#xff0c;只需要访问 这个服务的代理服务器即可&a…...

数据库之基本功:Where 中常用运算符

1. 运算符及优先级 ( )优先级最高 SQL> show user; USER is "SCOTT" SQL> select ename, job, sal, comm from emp where jobSALESMAN OR jobPRESIDENT and sal> 1500;ENAME JOB SAL COMM …...

浅谈 Nodejs原型链污染

一直在做php的题目&#xff0c;对其它语言做的很少。刚好在西湖论剑2022复现时&#xff0c;遇到了一道原型链污染的题目&#xff0c;借此机会开始简单学习一下 Nodejs的洞 p&#x1f402;讲解的十分清楚&#xff0c;因此下面举例子就直接用p&#x1f402;的例子进行解释了 目…...

Linux系统安装Docker

目录 Linux系统安装Docker 1、如果之前安装过旧版本的Docker&#xff0c;可以使用下面命令卸载 2、安装docker 3、启动docker 4、配置镜像加速 Linux系统安装Docker 前提&#xff1a;Docker CE 支持 64 位版本 CentOS 7&#xff0c;并且要求内核版本不低于 3.10&#xff0…...

MCP2515国产替代DP2515带有SPI 接口的独立CAN 控制器

DP2515是一款独立控制器局域网络&#xff08;Controller AreaNetwork&#xff0c; CAN&#xff09;协议控制器&#xff0c;完全支持CAN V2.0B 技术规范。该器件能发送和接收标准和扩展数据帧以及远程帧。DP2515自带的两个验收屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的…...

【Kubernetes】第二十篇 - k8s 污点和容忍度

一&#xff0c;前言 上一篇&#xff0c;介绍了 k8s ConfigMap 管理服务环境变量&#xff1b; 本篇&#xff0c;介绍 k8s 污点和容忍度&#xff1b; 二&#xff0c;污点与容忍度介绍 通过污点和容忍度配置可以干预 Pod 部署到特定的节点&#xff1b; 比如&#xff1a; 不想让…...

60% 程序员大呼:我要远程办公!

近几年数字化的普及&#xff0c;白领们从挤地铁、打卡、开会、写日报转变成“早上9点视频会议”&#xff0c;企业的办公场所也从写字楼、会议室、工位变成了手机、电脑中的线上会议室&#xff0c;远程办公已经成为一种流行的办公形式。《财富》杂志发现&#xff0c;75%的员工表…...

jmeter+ant+jenkins接口自动化测试框架

大致思路&#xff1a;Jmeter可以做接口测试&#xff0c;也能做压力测试&#xff0c;而且是开源软件&#xff1b;Ant是基与java的构建工具&#xff0c;完成脚本执行并收集结果生成报告&#xff0c;可以跨平台&#xff0c;Jenkins是持续集成工具。将这三者结合起来可以搭建一套We…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...