【秋招突围】2024届秋招笔试-小红书笔试题-第二套-三语言题解(Java/Cpp/Python)

news2024/10/5 17:16:40

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系计划跟新各公司春秋招的笔试题

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📧 清隆这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注CSDN同名公主号领取,会在飞书进行同步的跟新。

文章目录

    • 📖 写在前面
      • 夏天要来了 秋招还会远吗?
    • 🍊 01.LYA 的魔法宝石
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🌲 02.卢小姐的布料选购计划
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🎧 03.LYA 的珍珠项链
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🎀 写在最后
    • 🛖 这里介绍一下咱们的笔试打卡小屋
      • 🥰 打卡奖励
      • 🕰 每日学习安排
      • 📖 打卡小屋涉及题型
        • 基础算法
        • 基础数据结构
        • 搜索
        • 动态规划 & 贪心 & 数论

📖 写在前面

夏天要来了 秋招还会远吗?

前不久春招也算是圆满结束咯,大家有拿到心仪的 offer吗?
接下来互联网的秋招也快来啦,小伙伴们有开始准备了吗?
本次给大家带来24届秋招 阿里系 的笔试题目三语言解析(Java/Python/Cpp)

文末有清隆学长的笔试陪伴打卡小屋活动介绍:
✨丰富的打卡奖励等你来领哦,大厂笔试题汇总笔试面试经验贴算法笔试模版
💽 有兴趣的小伙伴们也可以了解一下,不要错过啦~

🍊 01.LYA 的魔法宝石

问题描述

LYA 是一位热爱收藏魔法宝石的女孩。她希望收集 n n n 颗宝石,并且要求这些宝石的魔法值两两不相等。此外,所有宝石的魔法值的最大公约数必须为 k k k

为了尽可能节省购买成本,LYA 希望选择魔法值之和最小的宝石组合。请你帮助 LYA 计算并输出宝石魔法值之和的最小值。

输入格式

输入包含两个正整数 n n n k k k,分别表示宝石的数量和魔法值的最大公约数。

输出格式

输出一个正整数,表示满足条件的宝石魔法值之和的最小值。

样例输入

3 2

样例输出

12

数据范围

1 ≤ n , k ≤ 1 0 5 1 \leq n, k \leq 10^5 1n,k105

题解

本题可以通过构造法来解决。为了让宝石的魔法值之和最小,我们可以将魔法值构造为 k k k 的倍数,并且按照从小到大的顺序选择。

具体步骤如下:

  1. 初始化结果变量 r e s res res 0 0 0,表示宝石魔法值之和。
  2. 1 1 1 n n n 遍历每个宝石:
    • 计算当前宝石的魔法值 t e m p = i × k temp = i \times k temp=i×k
    • t e m p temp temp 累加到结果变量 r e s res res 中。
  3. 输出结果变量 r e s res res 的值。

时间复杂度: O ( n ) O(n) O(n),其中 n n n 为宝石的数量。
空间复杂度: O ( 1 ) O(1) O(1)

参考代码

  • Python
n, k = map(int, input().split())
res = 0
for i in range(1, n + 1):
    temp = i * k
    res += temp
print(res)
  • Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = in.nextInt();
        long res = 0;
        for (int i = 1; i <= n; i++) {
            long temp = i * k;
            res += temp;
        }
        System.out.println(res);
    }
}
  • Cpp
#include <iostream>
using namespace std;

int main() {
    int n, k;
    cin >> n >> k;
    long long res = 0;
    for (int i = 1; i <= n; i++) {
        long long temp = i * k;
        res += temp;
    }
    cout << res << endl;
    return 0;
}

🌲 02.卢小姐的布料选购计划

问题描述

卢小姐是一位服装设计师,她计划从一家面料商那里购买一段布料用于设计新款连衣裙。商家提供了一卷总长为 n n n 米的布料,但其中只有某些区间的布料质地符合要求。

商家允许卢小姐从这卷布料中选择一段长度为 k k k 米的连续区间购买。卢小姐希望在选定的区间内,符合要求的布料段总长度尽可能长。请你帮助卢小姐计算,最优方案下可以购得多少米符合要求的布料。

输入格式

第一行输入三个正整数 n , m , k n,m,k n,m,k,分别代表布卷的总长度、布卷上符合要求的布料段数量以及卢小姐计划购买的布料长度。

接下来的 m m m 行,每行输入两个正整数 l i , r i l_i,r_i li,ri,表示第 i i i 段符合要求的布料的起始位置和终止位置(单位:米)。

输出格式

输出一个整数,表示最优方案下可以购得的符合要求的布料总长度。

样例输入

10 3 6
1 3
4 5
7 9

样例输出

4

数据范围

  • 1 ≤ k ≤ n ≤ 1 0 9 1 \leq k \leq n \leq 10^9 1kn109
  • 1 ≤ m ≤ 1 0 5 1 \leq m \leq 10^5 1m105
  • 0 ≤ l i < r i ≤ n 0 \leq l_i < r_i \leq n 0li<rin
  • 符合要求的布料段之间互不重叠。

题解

本题可以使用双指针滑动窗口的方法求解。我们可以枚举购买布料的左端点,并维护一个右端点,使得当前窗口内的布料长度不超过 k k k。在枚举过程中,我们统计窗口内符合要求的布料段长度之和,并更新答案。

具体步骤如下:

  1. 将所有符合要求的布料段按照起始位置从小到大排序。
  2. 初始化左右指针 l e f t left left r i g h t right right,表示当前枚举的区间范围。
  3. 遍历布料段,将右指针 r i g h t right right 不断右移,直到当前区间长度超过 k k k 或遍历完所有布料段。
  4. 统计当前区间内符合要求的布料段长度之和 c o v e r cover cover,更新答案。
  5. 如果右指针 r i g h t right right 已经到达最后一个布料段,直接更新答案;否则,计算当前区间右端点与下一个布料段左端点之间的空白部分长度 r e m a i n remain remain,更新答案为 m a x ( a n s , c o v e r + r e m a i n ) max(ans,cover+remain) max(ans,cover+remain)
  6. 将左指针 l e f t left left 右移一个布料段,同时将 c o v e r cover cover 减去对应的布料段长度,继续枚举下一个区间。

时间复杂度为 O ( m log ⁡ m ) O(m \log m) O(mlogm),其中排序的时间复杂度为 O ( m log ⁡ m ) O(m \log m) O(mlogm),双指针遍历的时间复杂度为 O ( m ) O(m) O(m)。空间复杂度为 O ( m ) O(m) O(m)

参考代码

  • Python
class Solution:
    def maxCoverLength(self, n: int, m: int, k: int, segments: List[List[int]]) -> int:
        segments.sort()
        ans = cover = 0
        left = right = 0
        
        while right < m:
            while right < m and segments[right][1] - segments[left][0] <= k:
                cover += segments[right][1] - segments[right][0]
                right += 1
            
            if right == m:
                ans = max(ans, cover)
            else:
                remain = max(0, segments[left][0] + k - segments[right][0])
                ans = max(ans, cover + remain)
            
            cover -= segments[left][1] - segments[left][0]
            left += 1
        
        return ans
  • Java
class Solution {
    public int maxCoverLength(int n, int m, int k, int[][] segments) {
        Arrays.sort(segments, (a, b) -> a[0] - b[0]);
        int ans = 0, cover = 0;
        int left = 0, right = 0;
        
        while (right < m) {
            while (right < m && segments[right][1] - segments[left][0] <= k) {
                cover += segments[right][1] - segments[right][0];
                right++;
            }
            
            if (right == m) {
                ans = Math.max(ans, cover);
            } else {
                int remain = Math.max(0, segments[left][0] + k - segments[right][0]);
                ans = Math.max(ans, cover + remain);
            }
            
            cover -= segments[left][1] - segments[left][0];
            left++;
        }
        
        return ans;
    }
}
  • Cpp
class Solution {
public:
    int maxCoverLength(int n, int m, int k, vector<vector<int>>& segments) {
        sort(segments.begin(), segments.end());
        int ans = 0, cover = 0;
        int left = 0, right = 0;
        
        while (right < m) {
            while (right < m && segments[right][1] - segments[left][0] <= k) {
                cover += segments[right][1] - segments[right][0];
                right++;
            }
            
            if (right == m) {
                ans = max(ans, cover);
            } else {
                int remain = max(0, segments[left][0] + k - segments[right][0]);
                ans = max(ans, cover + remain);
            }
            
            cover -= segments[left][1] - segments[left][0];
            left++;
        }
        
        return ans;
    }
};

🎧 03.LYA 的珍珠项链

问题描述

LYA 有一条由 n n n 颗不同颜色珍珠串成的项链。她想通过改变其中某一颗珍珠的颜色来提升项链的美观度。根据专家的建议,项链的美观度等于任意连续的珍珠子串中,各颜色出现次数的最大值。

现在给定项链上每颗珍珠的颜色,以及 LYA 可以将某颗珍珠改变成的目标颜色,请你计算改变后项链的最大美观度是多少?

输入格式

第一行包含一个正整数 t t t,表示项链的条数。

接下来对于每条项链,第一行包含两个正整数 n n n c c c,分别表示项链的长度和目标颜色。第二行包含 n n n 个正整数 a 1 , a 2 , ⋯   , a n a_1, a_2, \cdots, a_n a1,a2,,an,表示初始时项链上每颗珍珠的颜色。

输出格式

对于每条项链,输出一行一个整数,表示改变后项链的最大美观度。

样例输入

3
5 10
5 -1 -5 -3 2
2 -3
-5 -2
6 10
4 -2 -11 -1 4 -1

样例输出

15
-2
15

数据范围

  • 1 ≤ t ≤ 1 0 5 1 \leq t \leq 10^5 1t105
  • 1 ≤ n ≤ 2 × 1 0 5 1 \leq n \leq 2 \times 10^5 1n2×105
  • − 1 0 9 ≤ c , a i ≤ 1 0 9 -10^9 \leq c, a_i \leq 10^9 109c,ai109
  • 所有项链的总长度不超过 2 × 1 0 5 2 \times 10^5 2×105

题解

本题可以使用动态规划求解。设 d p [ i ] [ 0 ] dp[i][0] dp[i][0] 表示不改变第 i i i 颗珍珠颜色的最大美观度, d p [ i ] [ 1 ] dp[i][1] dp[i][1] 表示将第 i i i 颗珍珠改变为目标颜色的最大美观度。则有以下状态转移方程:

d p [ i ] [ 0 ] = max ⁡ ( d p [ i − 1 ] [ 0 ] + a i , a i ) d p [ i ] [ 1 ] = max ⁡ ( d p [ i − 1 ] [ 0 ] + c , c , d p [ i − 1 ] [ 1 ] + a i , a i ) \begin{aligned} dp[i][0] &= \max(dp[i-1][0] + a_i, a_i) \\ dp[i][1] &= \max(dp[i-1][0] + c, c, dp[i-1][1] + a_i, a_i) \end{aligned} dp[i][0]dp[i][1]=max(dp[i1][0]+ai,ai)=max(dp[i1][0]+c,c,dp[i1][1]+ai,ai)

最终答案为 max ⁡ ( d p [ n − 1 ] [ 0 ] , d p [ n − 1 ] [ 1 ] ) \max(dp[n-1][0], dp[n-1][1]) max(dp[n1][0],dp[n1][1])

时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( n ) O(n) O(n)

参考代码

  • Python
t = int(input())
for _ in range(t):
    n, c = map(int, input().split())
    a = list(map(int, input().split()))
    
    dp = [[0] * 2 for _ in range(n)]
    dp[0][0] = a[0]
    dp[0][1] = c
    res = max(dp[0])
    
    for i in range(1, n):
        dp[i][0] = max(dp[i-1][0] + a[i], a[i])
        dp[i][1] = max(dp[i-1][0] + c, c, dp[i-1][1] + a[i], a[i])
        res = max(res, dp[i][0], dp[i][1])
    
    print(res)
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        while (t-- > 0) {
            int n = sc.nextInt(), c = sc.nextInt();
            int[] a = new int[n];
            for (int i = 0; i < n; i++) {
                a[i] = sc.nextInt();
            }
            System.out.println(maxBeauty(a, c));
        }
    }
    
    private static long maxBeauty(int[] a, int c) {
        int n = a.length;
        long[][] dp = new long[n][2];
        dp[0][0] = a[0];
        dp[0][1] = c;
        long res = Math.max(dp[0][0], dp[0][1]);
        
        for (int i = 1; i < n; i++) {
            dp[i][0] = Math.max(dp[i-1][0] + a[i], a[i]);
            dp[i][1] = Math.max(Math.max(dp[i-1][0] + c, c), 
                               Math.max(dp[i-1][1] + a[i], a[i]));
            res = Math.max(res, Math.max(dp[i][0], dp[i][1]));
        }
        
        return res;
    }
}
  • Cpp
#include <iostream>
#include <vector>
using namespace std;

long maxBeauty(vector<int>& a, int c) {
    int n = a.size();
    vector<vector<long>> dp(n, vector<long>(2));
    dp[0][0] = a[0];
    dp[0][1] = c;
    long res = max(dp[0][0], dp[0][1]);
    
    for (int i = 1; i < n; i++) {
        dp[i][0] = max(dp[i-1][0] + a[i], (long)a[i]);
        dp[i][1] = max(max(dp[i-1][0] + c, (long)c), 
                       max(dp[i-1][1] + a[i], (long)a[i]));
        res = max(res, max(dp[i][0], dp[i][1]));
    }
    
    return res;
}

int main() {
    int t;
    cin >> t;
    while (t--) {
        int n, c;
        cin >> n >> c;
        vector<int> a(n);
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }
        cout << maxBeauty(a, c) << endl;
    }
    return 0;
}

🎀 写在最后

🛖 这里介绍一下咱们的笔试打卡小屋

在这里插入图片描述

✨ 打卡小屋旨在陪伴大家,养成每日学习的好习惯。在这里,你可以:

  • 🤝 与备战笔试的小伙伴相识,找到志同道合的学习小组
  • 📝 通过写题解,巩固做题思路,养成良好的记录习惯
  • 💡 系统掌握常考算法和数据结构,了解互联网笔试难度
  • 🎁 坚持打卡,获得丰厚奖励,激励自己持之以恒

🥰 打卡奖励

打卡时长奖励内容
7天任选一家最新互联网笔试真题 x 1 (价值29.9r)
14天任选一家最新互联网笔试真题 x 3 + 笔试面试经验贴
21天任选一家最新互联网笔试真题 x 5 + 清隆三语言算法模版
28天最新互联网大厂笔试真题汇总(价值199r) + 华为OD机试训练营 (价值89r)

7天打卡即可值回票价,心动不如行动!

🕰 每日学习安排

小屋将在每日上午发放打卡题目,包括:

  • 一道算法模版题,帮助大家掌握常用算法套路
  • 根据算法模版,精选一道对应的大厂笔试真题,巩固算法应用

让我们一起直击笔试重点,攻克常考题型!

📖 打卡小屋涉及题型

小屋从零基础出发,涵盖笔试常考知识点:

基础算法
  • 自定义排序
  • 二分
  • 前缀和
  • 差分
  • 双指针
基础数据结构
  • 栈 & 单调栈
  • 队列 & 单调队列
  • 并查集
  • 优先队列(堆)
搜索
  • DFS & BFS 基础应用
  • 树的遍历
  • 基础图论
动态规划 & 贪心 & 数论
  • 快速幂
  • 组合数
  • 质数 & 因数
  • 位运算
  • 基础动态规划
  • 常见贪心

在这里插入图片描述

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

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

相关文章

意大利罗马3日自由行攻略

欢迎关注「苏南下」 在这里分享我的旅行和影像创作心得 今天来和大家聊聊我个人很喜欢的一座城市—意大利罗马。 作为意大利的首都&#xff0c;罗马自公元前753年建成至今&#xff0c;有超过2700年的历史&#xff0c;被誉为“永恒之城”。走在罗马街头&#xff0c;几乎看不到一…

使用 Python 进行测试(3)pytest setup

总结 我们前进到更真实的项目&#xff1a; less_basic_project ├── my_awesome_package │ ├── calculation_engine.py │ ├── __init__.py │ ├── permissions.py ├── pyproject.toml └── tests├── conftest.py├── test_calculation_engine.p…

283. 移动零 (Swift版本)

题目描述 最容易想到的解法 从后向前遍历, 发现0就通过交换相邻元素将0移动到最后 class Solution {func moveZeroes(_ nums: inout [Int]) {for index in (0..<nums.count).reversed() {if nums[index] 0 {moveZeroes(&nums, index)}}}func moveZeroes(_ nums: inout …

Mybatis plus join 一对多语法

一对多案例&#xff08;set集合&#xff09; 1. 实体类 题目 package co.yixiang.exam.entity;import co.yixiang.domain.BaseDomain; import co.yixiang.exam.config.CustomStringListDeserializer; import com.baomidou.mybatisplus.annotation.TableField; import com.fa…

youlai-boot项目的学习—本地数据库安装与配置

数据库脚本 在项目代码的路径下&#xff0c;有两个版本的mysql数据库脚本&#xff0c;使用对应的脚本就安装对应的数据库版本&#xff0c;本文件选择了5 数据库安装 这里在iterm2下使用homebrew安装mysql5 brew install mysql5.7注&#xff1a;记得配置端终下的科学上网&a…

PHP7 数组的实现

前提 PHP版本&#xff1a;php7.0.29使用到的文件 php-src/Zend/zend_types.hphp-src/Zend/zend_hash.hphp-src/Zend/zend_hash.cphp-src/Zend/zend_string.h 本文 是《PHP7底层设计和源码实现》第5章 数组的实现&#xff0c;学习笔记 功能分析 整体结构 bucket 里面增加h字段…

android studio CreateProcess error=2, 系统找不到指定的文件

【问题记录篇】 在AndroidStudio编译开发jni相关工程代码的时候&#xff0c;编译遇到的这个报错&#xff1a; CreateProcess error2, 系统找不到指定的文件。排查处理步骤: 先查看Build Output的具体日志输出 2.了解到问题出在了NDK配置上&#xff0c;此时需要根据自己的gra…

RTOS实时操作系统

常见的RTOS有&#xff1a; VxWorks&#xff1a;广泛应用于工业、医疗、通信和航空航天领域。FreeRTOS&#xff1a;一个开源的RTOS&#xff0c;广泛用于嵌入式设备。uc/OS&#xff1a;一个适用于教育和小型商业项目的RTOS。QNX&#xff1a;主要应用于汽车和工业自动化领域。Win…

第 2 章:Spring Framework 中的 IoC 容器

控制反转&#xff08;Inversion of Control&#xff0c;IoC&#xff09;与 面向切面编程&#xff08;Aspect Oriented Programming&#xff0c;AOP&#xff09;是 Spring Framework 中最重要的两个概念&#xff0c;本章会着重介绍前者&#xff0c;内容包括 IoC 容器以及容器中 …

Android-茫茫9个月求职路,终于拿满意offer

线程和进程的区别&#xff1f;为什么要有线程&#xff0c;而不是仅仅用进程&#xff1f;算法判断单链表成环与否&#xff1f;如何实现线程同步&#xff1f;hashmap数据结构&#xff1f;arraylist 与 linkedlist 异同&#xff1f;object类的equal 和hashcode 方法重写&#xff0…

免费分享:2017-2021全球10m土地利用数据(esri)(附下载方法)

美国环境系统研究所公司&#xff08;Environmental Systems Research Institute, Inc. 简称ESRI公司&#xff09;&#xff0c;以其先进的ArcGIS解决方案&#xff0c;为全球各行业提供多层次、可扩展、功能强大且开放性强的GIS技术。哨兵2号&#xff08;Sentinel-2&#xff09;是…

国产MCU芯片(2):东软MCU概览及触控MCU

前言: 国产芯片替代的一个主战场之一就是mcu,可以说很多国内芯片设计公司都打算或者已经在设计甚至有了一款或多款的量产产品了,这也是国际大背景决定的。过去的家电市场、过去的汽车电子市场,的确国产芯片的身影不是很常见,如今不同了,很多fabless投身这个行业,一种是…

【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)

&#x1f525;引言 本篇将深入解析单链表:探索底层逻辑&#xff0c;理解底层是如何实现并了解该接口实现的优缺点&#xff0c;以便于我们在编写程序灵活地使用该数据结构。 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &…

3. ceph-mimic版本部署

ceph-mimic版本部署 一、ceph-mimic版本部署1、环境规划2、系统基础环境准备2.1 关闭防火墙、SELinux2.2 确保所有主机时间同步2.3 所有主机ssh免密2.4 添加所有主机解析 3、配置ceph软件仓库4、安装ceph-deploy工具5、ceph集群初始化6、所有ceph集群节点安装相关软件7、客户端…

【C++】多态|原理|override|final|抽象类|多继承虚函数表|对象模型|虚表打印|(万字详解版)

目录 ​编辑 一.多态的概念 二.多态的构建 虚函数 重写 虚函数重写的例外 协变 隐藏 析构函数的重写 三.重载、重写(覆盖)、隐藏(重定义)的对比 四.C11新增的 override 和 final override final 五.抽象类 六.多态的原理 虚函数表 总结&#xff1a; 引用…

CMake多行注释以及通过Message打印不同级别日志

1 CMake注释 1.1 单行注释 CMake中单行注释时以 # 开头。 # 指定CMake最低版本cmake_minimum_required(VERSION 3.20)# 这是注释project(myproject)1.2 多行注释 多行注释时&#xff0c;以 #[[ 开头&#xff0c;以 ]] 结尾&#xff0c;中间都可以写注释内容。3.0之前的版本…

MySQL面试重点-1

1. 数据库基础知识&#xff1a; DDL、DML、DQL、DCL的概念与区别&#xff1f; DDL&#xff08;数据定义语言&#xff09;&#xff1a;创建&#xff08;CREATE&#xff09;数据库中的各种对象&#xff1a;表、视图、索引等DML&#xff08;数据操纵语言&#xff09;&#xff1a…

点积和叉积

文章目录 1、向量的点积2、向量的叉积3、矩阵的点积4、矩阵的叉积 1、向量的点积 数量积又称标量积&#xff08;Scalar product&#xff09;、点积&#xff08;Dot product&#xff09;&#xff0c;在欧几里得空间&#xff08;Euclidean space&#xff09;中称为内积&#xff…

为何云原生是未来?企业IT架构的颠覆与重构(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是云原生 2、云原生的背景和起源 背景 起源 关…

酷开会员丨酷开系统K歌模式,父亲节的家庭欢聚时光

K歌以其独特的魅力&#xff0c;为家庭娱乐带来了无限乐趣。想象一下&#xff0c;父亲节这天&#xff0c;打开电视进入K歌频道&#xff0c;与家人一起嗨唱&#xff0c;客厅里充满了欢声笑语&#xff0c;酷开系统的K歌应用也就成为了连接亲情的桥梁&#xff0c;让爸爸们都能在这个…