自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 问答 (2)
  • 收藏
  • 关注

原创 第十四届蓝桥杯省赛C++C组——子矩阵(蓝桥杯篇章完结撒花)

本来想写的速成日志也没写多少,cb国二,最后一题树形DP调了一小时发现h数组没置 -1,最后无果,如果没马虎可能有国一水平了,正儿八经准备用了两个月,因为要考研,每天只学2 - 3小时的算法,一共刷了300多道题吧,由于之前选过ACM(实验课因为周六去,懒得去还给我挂了)和算法分析课,所以还是有点基础的,如果算上一年前刷的题总共加起来也就400多道题吧。本想搞个速成日志的,不过我发现,只有那些长时间刷题打ACM的大佬,刷题刷到瓶颈写写日志博客才有用,像我这种速成的,刷题都来不及更别说写博客了。。

2023-04-30 10:49:17 530

原创 第十一届蓝桥杯C/C++大学 B 组(国赛B题)——扩散

小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)。很容易可以看出,这是扩散了5秒后的图像,找规律,以横着(竖着也行)的中线为分界线,线上扩散到的点分别为。就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色。具体的,如果一个格子里面是黑色,它。请问,经过 2020 分钟后,画布上有多少个格子是黑色的。,是不是找到了规律,鉴于会向xy轴的负方向扩散,只有这几个格子上有黑色,其它位置都是白色的。(如果原来就是黑色,则还是黑色)。

2023-04-05 14:48:12 397

原创 C++全局变量莫名其妙被修改?是人性的扭曲还是道德的沦丧?原来是我蒟蒻

sum[35]被挤出来了,挤给ans了,具体怎么成为1517643316的我也不知道,不过跟sum数组的最后一个数与越界数相加的值听接近的。首先这个情况跟long long没关系,因为我改成int后结果并没有发生变化。代码很长,不过不用都看,跟标题无关,都被我注释掉了。发生的,ans从0变成了1517643316。显然这个ans是在第35次循环时,求前缀和的时候。具体原因我也搞不清楚,可能跟地址分配有关?

2023-03-29 14:58:33 700

原创 动态规划之线性DP类型题——最长递增子序列

dp[i]都表示以i为结尾时的结果,即动态规划的特点,所以一重循环遍历所有点,为这一点求最优值。二重循环的遍历都是为一重循环中的点i求最优值,最后的dp数组中的值都是以某一点为结尾的最优值,这也决定了最后的结果存在于dp数组中,但有的题目中会对二重循环遍历的点进行限制。在二重循环中,当满足题目中的符合最小的最优结构的条件时,对二重循环的值进行记录,否则不做处理,或做其他处理,在二重循环结束时将该最优值赋值给dp[i]。

2023-03-19 11:18:04 147

原创 火柴棒等式——回溯搜索

火柴棒等式题解——回溯算法复习

2023-03-07 09:46:09 124

原创 (13)设计模式之状态模式与职责链模式、策略模式的对比

状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。本质:根据状态来分离和选择行为。实现了状态逻辑和动态实现的分离。就举个例子来说明该模式的作用:当快到期末考试周了,你(实际上是我)还有一堆科门没复习完,你要整天的复习,但是你的学习状态会根据每天的时间段的不同而变化,要求根据不同的时间段输出对应时间段的状态。什么嘛,这简单到掉牙了啊,啊sir,有没有搞错啊。你看,写完了吧确实可以,但是如果当我们给每天定制了一个任务,规定完成不了任务就要一直学。又或者今天晚上6点要和女朋友

2022-06-13 21:09:42 175

原创 (12)设计模式之组合模式

组合模式(部分-整体模式):将对象组合成树形结构以表示 ‘ 部分-整体 ’ 的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。以淘宝首页为例,假设服装节点下包含男装和女装,而男装作为节点又包含了夹克和衬衣,女装包含了裙子和套装,怎么使用代码体现呢?这种类似于树的结构,可以使用组合模式来实现。先来看一下以该例子写的组合模式的UML类图其中clothes作为抽象类存在,定义了节点的删除增加和展示的方法。composite继承了Component组件类,用来表示非叶子节点。leaf同样继承

2022-06-12 20:39:30 88

原创 (11)设计模式之抽象工厂模式+使用简单工厂改进(反射+XML)

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。本质:选择产品,族的实现。为了方便理解,我们先来举个例子,在之前讲设计模式的六大原则的依赖倒转原则的时候提到了类似的情况。例如,在我们做项目的时候,对不同数据库的相同操作,如对Access数据库和Sqlserver数据库都进行查询或插入的操作,虽然操作一样,但是对于不同的数据库的操作,代码就不一样。可以从依赖倒转原则知道,高层模块不应该依赖底层模块。两个都应该依赖对象。抽象不应该依赖细节。细节应该依赖抽象。说白了就是要

2022-06-12 17:13:12 399

原创 (10)设计模式之观察者模式

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。本质:触发联动。观察者模式UML类图其中Subject是抽象的主题类,也叫做抽象的通知者类。Observer是抽象的观察者类。Concrete分别是具体的实现。比如这样一个情景,公司里老板不在,小王小张小李都在摸鱼,可是老板突然回来了,前台首先发现了老板回来了,那么他需要通知公司的员工停止摸鱼,继续工作。这时前台做的就是具体的通知者类。但是如果前

2022-06-05 16:48:12 491

原创 (9)设计模式之外观模式

外观模式:为子系统中的一组接口提供一个一致的页面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。本质:封装交互,简化调用。外观模式在我们生活中比较典型的例子就是基金的买入和卖出。与基金进行对比的就是股票的买入和卖出。在炒股时,有可能一个人买多份股票,卖出的时候也可能一块卖出多份股票,每个人和每份股票之间都有联系,这在设计模式中就可以称之为耦合性过高。但基金就不一样了,买入基金相当于买入了几十支好的股票,不会因为某个股票大跌而影响收益,同时也降低了客户与股票之间的耦合度,客户不必直接与股票

2022-06-05 11:52:55 78

原创 (8)设计模式之建造者模式

建造者模式建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。本质:分离整体,构建算法和部件构造。伙伴们聚在一起要画一个小人,这个小人有头、胳膊、身体和腿组成,小明喜欢先头,而张三喜欢先画身子,而每个人画出来的小人又不相同,如果用代码实现有什么好的办法吗?先看建造者模式的UML图其实这里一共有三个角色,分别是指挥者、建造者和产品。指挥者是指挥建造者建造产品的,建造者类作为抽象类存在,有许多具体的建造者类,这些具体的建造者类中包含了建造产品所需要的部件(一般都是

2022-05-30 22:30:01 103

原创 (7)设计模式之模板方法模式

模板方法模式模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这个模式就显得特别简单了。就举个例子吧,在我们考试的时候,除了我们给出的答案可能不相同外,试卷其他地方其实是完全相同的,那么我们就要思考如何把试卷相同的地方进行复用。就把试卷相同的部分看作相同逻辑的代码,把我们的答案看成代码之中的不同。我们首先就会想到继承,但是如何很好的进行继承呢?我们要完成某一细节层次一直的一个过程或一系列步骤,但其个别步骤在

2022-05-27 21:43:00 69

原创 (6)设计模式之原型模式

最近实在是太忙了…原型模式原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式就是从一个对象再创建另一个可定制的对象,而且不需要知道任何创建的细节。在Java中,内置了Cloneable接口,其中唯一一个方法就时clone(),所以只需要实现这个接口就可以完成原型模式了。为什么要使用原型模式呢?一般在初始化的信息不发生变化的情况下,克隆时最好的办法。这既隐藏了对象的创建细节,又对性能是大大的提高。但是要注意的是,在实现克隆方法的时候,如果字段是之类型的,则对该字段

2022-05-27 18:08:44 51

原创 (5)设计模式之工厂方法模式 及 与反射和配置文件的结合

工厂方法模式工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。了解过简单工厂模式的小伙伴都知道,简单工厂模式的一个致命缺点就是违背了开放封闭原则,不了解的可以看一下我之前对简单工厂模式的介绍。以之前讲过的计算器类为例,简单工厂模式每增加一个运算方法就需要对简单工厂类进行修改,违背了开放封闭原则。先来对比分析一下两个模式的UML图:简单工厂模式:工厂方法模式:package caculator;//运算器父类public abstr

2022-05-15 10:28:00 480

原创 (4)设计模式之代理模式

最近忙于算法和选修课的的结课考试,web的课程设计,计组的期中考试(还要算期末的平时分…),最近比较少写博客,今天抽空写一篇代理模式,代理模式在设计模式里面算比较简单的一个模式,也算是复习一下设计模式。代理模式代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。本质:客户端和真实解决之间加了一个间接层继续举例子,假如你想去追求她(他),她却不认识你,所以不太好意思自己送礼物,但是你的朋友认识她,于是你让你的朋友代替你送,试试写出代码。先上UML图:只看代码就能很好的理解代

2022-05-09 22:33:16 92

原创 (3)设计模式之装饰模式

装饰模式装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。本质:动态组合。动态是手段,组合是目的继续用例子来阐述该模式大家伙小时候都玩过(或者见别人玩过)一些换装游戏吧,今天就以穿衣服为例来举例。游戏开局,你的衣柜的衣服有:T恤,西装,领带,垮裤,球鞋,皮鞋,你的任务是给你的角色搭配两套衣服,并进行展示。看起来也没什么难得,我直接用简单工厂模式或者策略模式,弄一个抽象的穿衣工厂,然后给每一个衣服都弄一个具体的穿衣类,继承自抽象的穿衣

2022-05-01 22:34:46 257

原创 浅谈最长上升子序列和最长公共子序列(含n²优化)

听大佬们解释,最长 上升 / 下降 子序列和最长公共子序列属线性DP范畴,由于本人还没有系统的对DP进行研究,所以这里就暂时先不阐述线性DP了。最长 上升 / 下降 子序列和最长公共子序列这两类问题是非常典型的DP类型的题目,每一个算法学习书上面都少不了这两类问题,相关的题目也有很多,如:导弹拦截最长公共子序列类似的题目还有很多,就不一 一举例了。O(n²)解决最长上升子序列以时间复杂度O(n²)解决最长上升子序列问题是最简单也是最常见的一种解法,...

2022-05-01 14:50:13 380

原创 (2)设计模式之 策略模式 及 策略模式与简单工厂模式的结合

策略模式策略模式:它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。我们继续以例子来阐述该模式假如商场搞促销,有多种促销方式,促销方式包括:满300送80,打8折,满500送150等等,现在要求写出一个商场收银软件的的逻辑代码其实这个要求用前面说过的简单工厂模式也一样可以实现,直白的说,简单工厂模式和策略模式的差别很小,而策略模式和简单工厂模式结合起来与简单工厂模式自身比较的话,差距一般人看不出来…如果用简单工厂模式来写,很简单,跟写计算器差不

2022-04-26 22:30:04 1024

原创 设计模式的六大原则

一、单一职责原则单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。我们在编程的时候,很自然的就会给一个类增加各种各样的功能,比如一个Fun类中,可能包含了各种各样的代码,像一些运算的算法、数据库访问的SQL语句什么的,但如果这样做就意味着,无论任何需求的改变,都需要对Fun类进行更改,维护麻烦,复用不可能,也缺乏灵活性。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到

2022-04-24 22:16:29 920

原创 机器分配(分组背包)

题目描述总公司拥有高效设备M台,准备分给下属的N个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。其中M≤15,N≤10。分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数M。输入格式第一行有两个数,第一个数是分公司数N,第二个数是设备台数M。接下来是一个N*M的矩阵,表明了第 I个公司分配 J台机器的盈利。输出格式第1行为最大盈利值第2到第n为第i分公司分x台P.S.要求答案的字典序最小输入输出样例输

2022-04-24 13:19:17 300

原创 (1)设计模式之简单工厂模式

简单工厂模式写一个计算器程序,要求输入两个数和运算符号,得到结果。如果看到要求直接写代码,可能会把所有代码都写到一个类里面,对于初学编程的小白来说,只要实现功能就可以,不会去想完成要求的功能之后,这段代码将来会怎么用,怎么维护,怎么增加删除和修改代码。而如果以后做软件开发,实际的以后用到的代码都要有可维护,可复用,可扩展,灵活性好的特征,这也就需要学习设计模式。如果需要新增一个取余运算,只写一个类的代码,显然需要在繁琐的代码里面找到需要修改的地方,然后再进行修改,这样的代码的可维护性、可复用性、可扩

2022-04-20 22:20:34 246 1

原创 Cow Frisbee Team S(变相的01背包)

题目描述老唐最近迷上了飞盘,约翰想和他一起玩,于是打算从他家的 NN 头奶牛中选出一支队伍。每只奶牛的能力为整数,第 i 头奶牛的能力为R_i 。飞盘队的队员数量不能少于 1、大于N。一支队伍的总能力就是所有队员能力的总和。约翰比较迷信,他的幸运数字是 F ,所以他要求队伍的总能力必须是 F 的倍数。请帮他算一下,符合这个要求的队伍组合有多少?由于这个数字很大,只要输出答案对 108取模的值。输入格式第一行:两个用空格分开的整数:N和 F。第二行到 N+1 行:第i+1 行有一个整数R_i,表

2022-04-18 22:21:48 268

原创 魔术棋子(记忆化搜索/三维DP)

题目描述在一个M*N的魔术棋盘中,每个格子中均有一个整数,当棋子走进这个格子中,则此棋子上的数会被乘以此格子中的数。一个棋子从左上角走到右下角,只能向右或向下行动,请问此棋子走到右下角后,模(mod)K可以为几?如以下2*3棋盘:3 4 45 6 6棋子初始数为1,开始从左上角进入棋盘,走到右下角,上图中,最后棋子上的数可能为288,432或540。所以当K = 5时,可求得最后的结果为:0,2,3。输入格式第一行为三个数,分别为M,N,K (1 ≤ M,N,K ≤

2022-04-18 21:42:33 299

原创 四大背包总结

背包我目前所了解到的四类——01背包、完全背包、多重背包、分组背包(其它的我还没见到过)01背包:有N种物品和一个容量为V的背包,每种物品只有一个。第i种物品的费用是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。完全背包:有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。多重背包:有N种物品和一个容量为V的背包。第i种物品

2022-04-01 21:27:16 827

原创 小菜的算法学习笔记3.26

今天发现了一道非常棒的题,先上链接https://www.luogu.com.cn/problem/P1077这个题棒就棒在不仅可以用搜索(必须得是记忆化搜索,单纯的搜索会超时)来做,还可以用动态规划来做,还可以用01背包解决,还可以用前缀和优化和数学知识解决,由于我还涉世(suan fa)未深,所以只对记忆化搜索、动态规划和01背包进行了研究。昨天做这道题的时候我最先想到的是动态规划,花费了将近一小时研究,虽然和答案很像了,但是还是没AC…先说说动态规划的方法吧,dp[i][j]表示前i种花摆j盆

2022-03-26 21:08:37 309

原创 菜j的算法学习笔记3.23

今儿来聊一聊回溯回溯虽然很简单吧…好像都这么认为…但是在一些题目里面灵活运用好像还挺重要的,今儿就来看道题这道题是洛谷的P2196 [NOIP1996 提高组] 挖地雷https://www.luogu.com.cn/problem/P2196标签是动态规划和深搜,但是我做的时候是按照深搜来的,动态规划没去想…不知道动态规划好不好做,但是我们今天聊的是,回溯思路挺简单,难的就是代码实现(毕竟自己还挺菜,所以我感觉代码实现对我来说比较困难),题目中说的不太清楚,实际上每个通道都是单向的,也就是单向图

2022-03-23 21:02:49 68

原创 菜即的算法学习笔记3.21

筛法函数筛法函数,我是在寻找约数和的时候发现的什么是筛法函数?筛法函数的作用?就比如求前n个数的每一个数的约数和(约数不含这个数本身)例如:6的约数和为 1+2+3=6,4的约数和为 1+2=3筛法函数可以用在,寻找前n个数的约数和这是常规的筛法函数求前n个数的质数:bool s[10005]={1,1};//0和1啥也不是,定为1int a[10005],ps;//a数组存最后的质数,ps为这个数组的下标//全局数组初值全为0inline void sf(){//筛法函数 f

2022-03-21 21:42:54 52

原创 5.23总结

二分法总结什么是二分法?算法:二分法查找适用于数据量较大时,但是数据需要先排好顺序。主要思想是:(设查找的数组区间为array[low, high])(1)确定该区间的中间位置K(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:a.array[k]>T 由数组的有序性可知array[k,k+1,……,high]>T;故新的区间为array[low,……,K-1]b.array[k]<T 类似上面查找区间为array

2021-05-23 17:24:21 101

原创 5.16总结

一、背包问题总结**背包问题,首先要搞清楚它的本质是什么?它的原理是什么?背包问题指这样一类问题,题意往往可以抽象成:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。——百度百科先用最简单的一个问题来描述背包问题:有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?每个物品都有它自己的属性:体积和价值解题思路:用动态规划的思路,阶段就是“物品的件数”,状态就是“背包剩下的容量”,那么f [i,v]

2021-05-16 21:16:48 61

原创 5.10 Codeforces总结

Codeforces Global Round 14A. Phoenix and Gold题意:有一对黄金,放在称上称量,一个个的往上放,要求每放一次称中的总数不能等于x,问是否存在这样的放置排序思路:在输入的时候就挨个计算和值,如果出现等于X的情况,则交换这两个数,一开始还不太放心如果这两个数相等怎么办,但是题中已经说了各个数值并不相同,所以这样用是不用担心的,到最后如果总和等于x,输出NO,如果不等于,就输出YES,并把输入拍好的顺序输出就可以了。AC代码:#include <iost

2021-05-10 18:48:40 108

原创 4.24周总结

4.24周总结4.21Codeforces Round #717 (Div.2)这个A题没做出来的原因竟然是不清楚最小字典序数组是什么意思,在做完题之后才知道数字的字典序只是从第一个数字到最后一个数字按照先后顺序排列形成的一个数的最小值!!! 而且也并没有规定数组的每一个数必须是个位数!!!害比赛后的敲出的AC代码:#include <bits/stdc++.h>using namespace std;int T;int n,k;int a[105];int main(){

2021-04-24 21:06:19 54

原创 Codeforces&&DP总结

Codeforces&&DP总结一.Codeforce:4.16Codeforces Round #715 (Div. 2)这次时第一次扣分得比赛!!!!太难受了A. Average Height这次A题非常之简单,只要把输入的数字的奇数和偶数分开然后输出就得到答案(奇数在前偶数在后或者偶数在前奇数在后),没有一点难度AC代码:#include <iostream> using namespace std;int a[2005],b[2005];int ma

2021-04-17 21:54:44 567

原创 Codeforces总结

2021年3月29日晚23:20,在看到舍友敲完codeforces div2的比赛的一题上床后,我的心里久久不能安下心,23:35我也打开了codeforces,找到了那场比赛,在看完题之后,发现A题目并不是太难,于是决定参加比赛,提交A题,此时23:50,当我奋斗了半个多小时后,已经是0:28,我赶紧下床打开了笔记本电脑准备提交,可当我提交的时候,提示我未报名不能参与提交,我的内心是崩溃的…不过也懂得了CF的一个规则,未报名不能提交…在此期间有一个地方卡住我10几分钟for(int s=n;s!=0

2021-04-10 11:43:15 412

原创 动态规划学习总结

动态规划学习总结首先想要学好动态规划最重要的就是了解什么是动态规划,动态规划是用来求解以时间划分阶段的动态过程的优化问题,就是把一个问题分为若干个阶段,即分为若干个小问题,然后逐个求解的过程在Vjudge的课程作业中我找到了两个不同的类型的动态规划题型,感觉比较具有代表性(作业地址https://vjudge.net/contest/430905)类型1,其实就是求最大连续增长序列的最大值,包含题目:C,U(其实U就是简化版的C)思想:这种题型就是求最大连续增长序列和的最大值的问题,比如一组数1,3

2021-04-10 11:41:44 573

原创 周总结

周总结Vjudge题目总结题目网址:https://vjudge.net/contest/426531M.这个题读懂题意更重要错误题意1.错把66为底箱子当成都是666的箱子错误题意2.错把箱子为11 22 33…的高度看成与底边边长相等真●题意:箱子的高度其实可以直接忽略,因为一个箱子里面的高度全都相等,这个题意就是用来挖坑的,坏的很,读懂题意的话,就可以直接转化为平面问题——切木板问题,一个66的木板,切所需数量nn的木板,最少用多少个66的木板,题意读懂,整个题思路的困难就迎刃而解

2021-03-27 11:44:11 95

原创 第三周学习总结

第三周学习总结一、本周第一次接触了动态存储,感觉让我眼前一亮1.动态存储:C++运算符new delete其实与C语言中的malloc()函数和free()函数相似,但是new和delete的功能比其更强大2.new:在之前定义一个数组,不知道数组的大小,又怕浪费过多的数组空间,很多人喜欢这样定义:int n;cin>>n;int p[n];//错误....可能运行不会出问题,但是这样定义是错误的,这样的话,如果作为题提交是比不可能AC的,但是如果学习了动态存储,就可以实

2021-03-20 16:46:50 70

原创 周学习总结

学到的新知识:1.了解了STL(Standard Template Library,标准模板库)2.cin的输入速度不如scanf,但是加上sync_with_stdio(false);会使cin的输入速度有效提高3.头文件不再担心记不住,万能头文件#include <bits/stdc++.h>4.新的string数据类型,更方便字符串的输入输出和变换;string数据类型遇到空格就结束输入,使用getline(输入工具,输入对象),换行符为结束标志;empty()判断是否为空,是返回

2021-03-12 23:28:50 98

空空如也

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

TA关注的人

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