自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何在CentOS安装Firefox并结合内网穿透工具实现公网访问本地火狐浏览器

使用上面的Cpolar https公网地址,在任意设备的浏览器进行访问,即可成功看到我们火狐浏览器界面,这样一个公网地址且可以远程访问就创建好了,使用了cpolar的公网域名,无需自己购买云服务器,即可发布到公网进行远程访问!上面在本地成功部署了FireFox 火狐浏览器,并局域网访问成功,下面我们在Linux安装Cpolar内网穿透工具,通过cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤。

2024-04-16 17:16:54 1794 49

原创 背包问题详解(01背包,完全背包,多重背包,分组背包)

有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0

2024-04-09 12:16:57 1219 12

原创 如何使用VNC+Cpolar实现Windows电脑公网远程控制Ubuntu系统桌面

SVN 是 subversion 的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,使得多个人可以共同开发同一个项目,实现共享资源,实现最终集中式的管理。Subversion作为一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。SVN与CVS一样,也是一个跨平台的软件,支持大多数常见的操作系统。本篇教程主要介绍SVN服务器在Windows平台上的安装和配置过程。与如何结合cpolar内网穿透工具,实现随时随地公网远程访问内网本地服务。

2024-04-03 16:00:03 1112 46

原创 【实现报告】学生信息管理系统(链表实现)

定义了一个名为student的结构体,用于存储单个学生的信息。char no[8];:存储8位学号。:存储学生姓名,最多19个字符加上一个字符串结束符\0。:存储学生的成绩,类型为double以支持小数。:定义了一个新的类型名ElemType,其实就是student结构体。这样做可以增加代码的可读性和可维护性,也方便以后对元素类型的修改。定义了链表节点的结构体,每个节点包括::数据域,用于存储一个ElemType类型的数据,在这里即为student结构体实例。

2024-03-30 15:56:16 1409 43

原创 【实现报告】学生信息管理系统(顺序表)

1、掌握线性表的定义;2、掌握线性表的基本操作,如建立、查找、插入和删除等。定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能:(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 根据姓名进行查找,返回此学生的学号和成绩;(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);(5) 给定一个学生信息,插入到表中指定的位置;(6) 删除指定位置的学生记录;(7) 统计表中学生个数。

2024-03-29 08:00:00 1125 28

原创 蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)

小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。首先,需要明确问题的要求:给定n种不同的花和每种花的最大数量限制,求出在摆放m盆花时,能够形成的不同摆花方案数。这个问题的关键在于每种花可以选择摆放的数量从0到其最大限制,且摆放的花必须按照花的种类顺序排列。首先,需要明确问题的要求:给定n种不同的花和每种花的最大数量限制,求出在摆放m盆花时,能够形成的不同摆花方案数。其他情况(即当j>0时),在没有考虑任何花的情况下是不可能摆放任何花的,这些状态默认为0,反映了不可能发生的情况。

2024-03-25 21:04:08 1451 38

原创 DP动态规划入门(数字三角形、破损的楼梯、安全序列)

动态规划(Dynamic Programming,简称DP)是运筹学的一个分支,它是一种通过将复杂问题分解成多个重叠的子问题,并通过子问题的解来构建整个问题的解的算法。动态规划的关键在于找到子问题之间的重叠关系,并存储这些子问题的解以避免重复计算。通过这种方式,动态规划能够在多项式时间内解决一些看似复杂的问题,如背包问题、最短路径问题等。在实际应用中,动态规划被广泛用于优化和控制问题,以及计算机视觉、生物信息学等领域。

2024-03-22 08:30:00 2332 55

原创 蓝桥杯练习题总结(二)dfs题、飞机降落、全球变暖

具体来说,如果一块陆地像素(用“#”表示)与海洋像素(用“.”表示)相邻(即上下左右四个相邻像素中有海洋),这块陆地就会被淹没,变成海洋。这可以通过遍历整个照片来完成,每当我们遇到一个“#”(陆地)字符,我们就从这个点开始进行深度优先搜索(DFS),以找出这块陆地连接的所有部分,即一个完整的岛屿。如果岛屿的任何一部分位于边缘(即,与地图边缘的海洋相邻)或者有至少一个部分的上下左右四个方向中有一个是海洋,则这个岛屿将不会被完全淹没。具体来说,我们确定总队伍数量后,对于每一个人(或元素),枚举他所属的队伍。

2024-03-21 08:30:00 1552 65

原创 蓝桥练习题总结(一)字母图形、完美的代价、01串、序列求和

回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。// 更新字符串的末尾索引t,并将匹配的字符移动到其正确的位置。这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。// 如果i和k相遇,说明中间的字符没有匹配的字符。第一行是一个整数N,表示接下来的字符串的长度(N

2024-03-20 08:30:00 1033 54

原创 堆排序(向下调整法,向上调整法详解)

普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。

2024-03-18 13:09:44 1576 84

原创 DFS(深度优先遍历、N皇后问题、2N皇后问题)

尽管在很多情况下回溯法和DFS是紧密相关的,但它们并不总是等价的。回溯法更侧重于问题的求解策略,而DFS更侧重于图的遍历策略。然而,在实际应用中,这两个概念经常交织在一起。

2024-03-15 08:15:00 1206 51

原创 如何在Windows系统部署Jellyfin Server并实现公网访问内网影音文件

随着移动智能设备的普及,各种各样的使用需求也被开发出来,从最早的移动听音乐、看图片(MP3时代),到之后的移动视频需求(MP4时代)到现在的移动流媒体需求(智能手机看视频)。但当我们习惯这些需求后,忽然发现自己不知不觉间成了待割的韭菜(3台设备就要加钱)。作为一颗倔强的韭菜,自然不会甘愿被割,因此打算自建一个私人影音媒体平台。现在,笔者就向大家展示,使用cpolar内网穿透+ Jellyfin,自建私人影音平台的全过程。

2024-03-08 16:11:33 1459 83

原创 位运算(位运算的技巧、二进制中1的个数、区间或、异或森林)

作用:二进制数向左边移动,右边补0.左移操作符相当于对原数进行乘以2的幂次方的操作对于整数5(二进制表示为00000101),执行左移三位操作,相当于执行 5 * (

2024-03-06 09:48:55 1236 21

原创 贪心算法练习题(最小化战斗力差距、谈判、纪念品分组、分糖果)

贪心的基本原理:每一步都选择局部最优解,而尽量不考虑对后续的影响,最终达到全局最优解。贪心的局限性:贪心算法不能保证获得全局最优解,但在某些问题上具有高效性。贪心的特征:贪心选择性质、最优子结构性质(根据我的观察,很多贪心的题目会出现“不同的操作产生的贡献相同”的特征,在此特征下我们每次选择代价最小的)。贪心的类型多且杂,难以划分,需要不断练习和积累。

2024-03-05 08:15:44 1008 35

原创 差分题练习(区间更新)

对于一个数组a[],差分数组diff[]的定义是:对差分数组做前缀和可以还原为原数组:在修改完成后,需要做前缀和恢复为原数组,所以上面这段代码的含义是:diff[l]+=x表示将区间[l, n]都加上x但是[r+1,n]我们并不想加x,所以再将[r+1,n]减去x即可。但是注意,差分数组不能实现“边修改边查询(区间和),只能实现"多次修改完成后多次查询"。如果要实现“边修改边查询”需要使用树状数组、线段树等数据结构。

2024-03-03 17:41:47 456 20

原创 前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)

prefix表示前缀和,前缀和由一个用户输入的数组生成。对于一个数组a[](下标从1开始),我们定义一个前缀和数组prefix[],满足:prefix有一个重要的特性,可以用于快速生成prefix:prefix可以O(1)的求数组a[]的一段区间的和:但是注意,prefix是一种预处理算法,只适用于a数组为静态数组的情况,即a数组中的元素在区间和查询过程中不会进行修改。如果需要实现“先区间修改,再区间查询”可以使用差分数组,如果需要“一边修改,一边查询”需要使用树状数组或线段树等数据结构。

2024-03-03 12:59:48 766 14

原创 进制算法题(进制转换、Alice和Bob的爱恨情仇)

同理可得,在一个偶数堆中则是取偶数次。故可知对于 (1,2,…,)(a1​,a2​,…,an​) 会有所对应的 (1,2,…,)(b1​,b2​,…,bn​) ,其中 bi​ == ( ai​ % 22 ) ,当 bi​ 为 1 时代表取奇数, bi​ 为 0 时代表取偶数。由此可得出 ans= (1,2,…)(b1​,b2​,…,bn​) % 2,其中 ans 为 1 时代表总取数为奇数,即 Alice 赢,ans 为 0 时代表总取数为偶数,即 Bob 赢。

2024-03-02 08:45:00 1065 30

原创 模拟算法题练习(二)(DNA序列修正、无尽的石头)

问题描述在生物学中,DNA序列的相似性常被用来研究物种间的亲缘关系。现在我们有两条 DNA序列,每条序列由 A、C、G、T 四种字符组成,长度相同。但是现在我们记录的 DNA序列存在错误,为了严格满足 DNA 序列的碱基互补配对即 A-T和C-G,我们需要依据第一条 DNA 序列对第二条 DNA 序列进行以下操作:1.选择第二条 DNA 序列的任意两个位置,交换他们的字符,2.选择第二条 DNA 序列任意一个位置,将其字符替换为 A、C、G、T 中的任何一个。

2024-03-01 12:13:15 812 15

原创 递归算法题练习(数的计算、带备忘录的递归、计算函数值)

概念:递归是指函数直接或间接调用自身的过程。解释递归的两个关键要素:基本情况(递归终止条件):递归函数中的一个条件,当满足该条件时,递归终止,避免无限递归。可以理解为直接解决极小规模问题的方法。递归表达式(递归调用):递归函数中的语句,用于解决规模更小的子问题再将子问题的答案合并成为当前问题的答案。

2024-03-01 11:58:55 1121 39

原创 如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】

Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身Linux。MariaDB是MySQL关系数据库管理系统的一个复刻,由社区开发,有商业支持,旨在继续保持在 GNU GPL 下开源。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

2024-02-29 19:26:01 1811 69

原创 模拟算法题练习(一)(扫雷,灌溉,回文日期)

模拟算法通过模拟实际情况来解决问题,一般容易理解但是实现起来比较复杂,有很多需要注意的细节,或者是一些所谓很“麻模“的东西。模拟题一般不涉及太难的算法,一般就是由较多的简单但是不好处理的部分组成的,考察选手的细心程度和整体思维逻辑。一般为了使得模拟题写的逻辑清晰一些,经常会写比较多的小函数来帮助解题,例如int和string的相互转换、回文串的判断日期的转换、各种特殊条件的判断等等。

2024-02-29 19:21:23 1176 14

原创 枚举(蓝桥练习)(反倍数、特别数的和、找到最多的数、小蓝的漆房、小蓝和小桥的挑战)

枚举算法是一种基本的算法思想,它通过穷举所有可能的情况来解决问题。它的基本思想是将问题的解空间中的每个可能的解都枚举出来,并进行验证和比较,找到满足问题条件的最优解或者所有解。枚举算法适用于问题规模较小、解空间可穷举的情况。它的优点是简单直观,不需要复杂的数学推导,易于实现。但是,由于需要穷举所有可能的情况,对于问题规模较大的情况,枚举算法的时间复杂度可能会非常高,效率较低。

2024-02-28 18:07:32 1092 22

原创 【C++修行之道】(引用、函数提高)

总的来说,引用和指针在语法和用法上有明显的区别。而指针则提供了更低级别的操作和更大的灵活性,但也需要更多的注意来避免潜在的问题。结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了。C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置。在现阶段函数的占位参数存在意义不大,但是后面的课程中会用到该技术。在C++中,函数的形参列表中的形参是可以有默认值的。作用:引用是可以作为函数的返回值存在的。函数的返回值不可以作为函数重载的条件。

2024-02-08 19:25:41 1485 33

原创 EasyX图形库学习(三、用easyX控制图形界面中的小球、图片-加载、输出)

在使用图像之前,需要定义一个变量(对象),然后把图片加载进变量才能进行使用。平时定义变量都是使用的基础数据类型,比如:int temp;在使用图像的时候需要使用easyx提供给我们的类型:IMAGE,如:IMAGE img;输出图片(贴图)x 绘制位置的x坐标y 绘制位置的y坐标w 绘制的宽度h 绘制的高度srcImg 要绘制的IMAGEsrcx 绘制内容在 IMAGE 对象中的左上角 x 坐标srcy 绘制内容在 IMAGE 对象中的左上角 y 坐标dwRop 三元光栅操作码。

2024-02-05 19:24:57 1570 82

原创 EasyX图形库学习(二、文字输出)

int nHeight, //指定高度(逻辑单位)int nWidth, //字符的平均宽度LPCTSTR lpszFace //字体名称。

2024-02-03 20:39:16 1264 47

原创 EasyX图形库学习(一、窗口创建函数initgraph、背景颜色设置setbkcolor、图形绘制函数)

函数/数据类型描述清除屏幕内容。initgraph初始化绘图窗口。closegraph关闭图形窗口。获取当前缩放因子。设置当前缩放因子。恢复绘图窗口为默认值。setorigin设置坐标原点。setcliprgn设置当前绘图设备的裁剪区。清除裁剪区的屏幕内容。

2024-02-02 16:39:51 2006 34

原创 【c语言】简单贪吃蛇的实现

通常,贪吃蛇的实现会用一个链表来表示蛇的身体,其中每个节点(SnakeNode)代表蛇身体的一部分,而 pSnake 指向这个链表的第一个节点,即蛇头。再设置当前游戏的状态,蛇移动的速度,默认的方向,初始成绩,蛇的状态,每个食物的分数。:蛇的每个节点的x坐标必须是2个倍数,否则可能会出现蛇的一个节点有一半儿出现在墙体中,另外一般在墙外的现象,坐标不好对齐。初始化状态,假设蛇的长度是5,蛇身的每个节点是●,在固定的一个坐标处,比如(24, 5)处开始出现蛇,连续5个节点。

2024-01-31 17:30:17 2921 23

原创 Win32 API介绍​(COORD、GetStdHandle、GetConsoleCursorInfo 、SetConsoleCursorInfo)、<locale.h>本地化、类项

Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口。​。

2024-01-29 12:37:46 1337 47

原创 【C++修行之道】STL(初识list、stack)

stack是一种后进先出 (LIFO) 的数据结构,使用前需要包含头文件。stack提供了一组函数来操作和访问元素,但它的功能相对较简单。stack的定义和结构如下 (仅作了解即可):、T:表示存储在stack中的元素的类型Container: 表示底层容器的类型,默认为deque。也可以使用其他容器类型,如vector或list、stack的内部实现使用了底层容器来存储元素,并且只能通过特定的函数来访问和操作元素。

2024-01-27 14:07:33 1876 53

原创 基于静态顺序表实现通讯录

contact.h:通讯录的各种声明,包括库函数、自定义函数以及自定义结构体的声明。实现通讯录建立一个菜单是很重要的,并且菜单要包含通讯录所有的功能,以便于用户的操作。test.c:通讯录的总体逻辑,测试通讯录的相关功能。contact.c:通讯录的实现模块。有问题可以评论或者私信呢秒回哦。问题:头文件包含嵌套。

2024-01-25 22:01:24 652 40

原创 【C++修行之道】STL(初识pair、vector)

在C++中,vector是一个动态数组容器可以存储一系列相同类型的元素.它是标准库中定义的模板类。vector为可变长数组(动态数组),定义的vector数组可以随时添加数值和删除元素。vector的定义和结构非常简单,它由以下几个重要的部分组成:模板类声明:vector是一个模板类,因此在使用之前需要包含头文件。声明一个vector对象的通用语法如下:这里的T是要存储在vector中的元素类型。

2024-01-23 10:58:06 2099 57

原创 【C++修行之道】竞赛常用库函数(sort,min和max函数,min_element和max_element、nth_element)

语法参数(1)start表示要排序数组的起始地址;(2)end表示数组结束地址的下一位;(3)cmp用于规定排序的方法,可不填,默认升序。功能sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。一般是直接对数组进行排序,例如对数组a[10]排序,sort(a,a+10)。而sort函数的强大之处在可与cmp函数结合使用,即自定义排序:如果你想按照特定的顺序排序,可以传递一个自定义的比较函数或lambda表达式给sort()。

2024-01-22 14:15:06 1953 35

原创 编译和链接(翻译环境:预编译+编译+汇编+链接​、运行环境)

C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。​__FILE__ //进行编译的源文件​__LINE__ //文件当前的行号​__DATE__ //文件被编译的日期​__TIME__ //文件被编译的时间​__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义​举个例子:int main()//gcc是支持ANSI C的return 0;今天就先到这了!!!看到这里了还不给博主扣个:有问题可以评论或者私信呢秒回哦。

2024-01-20 10:58:51 1712 73

原创 如何无公网ip使用Potplayer访问群晖NAS中储存的本地资源【内网穿透】

如果您按照以上步骤配置完毕,就可以实现在公网条件下使用其他设备(笔记本或外地的pc主机等)随时使用固定的地址访问家中webdav中的影视资源,音乐资源等。其次,本教程基于群晖生态(群晖系统稳定性好,webdav配置十分简单,适合小白),需要安装配置黑群晖或已拥有正版群晖nas。​ 国内流媒体平台的内容让人一言难尽,就算是购买了国外的优秀作品,也总是在关键剧情上删删减减,就算是充了会员,效果如何?要注意的是,以上步骤使用的是随机临时端口地址,所生成的公网地址为。到这里我们就完成了webdav的配置,怎么样?

2024-01-19 09:35:13 702 58

原创 预处理详解(#和##运算符、命名约定、#undef​​、命令行定义​、条件编译、头文件的包含​)

许多C 的编译器提供了一种能力,允许在命令行中定义符号。用于启动编译过程。​例如:当我们根据同一个源文件要编译出一个程序的不同版本的时候,这个特性有点用处。(假定某个程序中声明了一个某个长度的数组,如果机器内存有限,我们需要一个很小的数组,但是另外一个机器内存大些,我们需要一个数组能够大些。for(i = 0;编译指令://linux 环境演示​。

2024-01-18 10:13:01 1105 52

原创 C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)

计算机科学里的宏是一种抽象的,根据一系列预定义的规则进行文本替换。宏是一种将一系列命令组织在一起,作为一个单独命令来完成特定任务的方式。在编译语言中,宏展开是在编译时进行的,编译器会自动将宏替换为一系列指令。宏展开器是用于执行宏展开的工具。除了编译语言中的宏,宏这个概念也被广泛应用于其他环境中,比如键盘宏和宏语言。键盘宏是将一系列小命令或动作转化为一系列指令,以简化日常工作。

2024-01-17 15:34:38 2077 26

原创 如何部署Wagtail CMS并结合cpolar内网穿透实现远程访问管理界面

Wagtail是一个用Python编写的开源CMS,建立在Django Web框架上。Wagtail是一个基于Django的开源内容管理系统,拥有强大的社区和商业支持。它专注于用户体验,并为设计人员和开发人员提供精确控制。它能快速实现页面的表达,对于我这种对新实现的功能想要找到地方进行展示,但前端能力又不太行的同学基于django 一直会对django的稳定版本进行支持Wagtail由开发人员为开发人员构建。

2024-01-15 19:47:59 1530 71

原创 『年度总结』逐梦编程之始:我的2023学习回顾与展望

回首2023年,我感到无比庆幸和自豪。有幸有大家的支持与陪伴,我才能无畏前行,度过每一个难关。大家,新年快乐!!!(还望大家能参加文末投票)

2024-01-04 08:33:03 3445 126

原创 【数据结构】手撕排序(排序的概念及意义、直接插入和希尔排序的实现及分析)

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。:数据元素全部放在内存中的排序。:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

2024-01-03 07:17:41 1623 35

原创 二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历【LeetCode刷题日志】

它首先调用 TreeSize 函数(虽然这里没有给出 TreeSize 的实现,但我们可以假设它的功能是计算树的节点数)来计算树的节点数,然后动态分配一个足够大的整数数组来存储结果。最后,它设置 returnSize 为树的节点数,并返回结果数组。它首先使用TreeSize函数计算树的节点数,然后动态分配一个足够大的整数数组来存储结果。最后,它设置returnSize为树的节点数,并返回结果数组。这是一个辅助函数,用于递归地执行前序遍历。否则,返回左子树的节点数、右子树的节点数和1(表示当前节点)的总和。

2024-01-02 08:13:19 1057 53

空空如也

空空如也

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

TA关注的人

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