自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ProLights的博客

Someday, you can program the lights.

  • 博客(400)
  • 收藏
  • 关注

原创 SPOJ - LCS2 Longest Common Substring II 后缀自动机

题意:给出n(n<=10)个字符串,求它们的最长公共子串。后缀自动机先用第一个字符串建立后缀自动机,然后用剩余的n-1个字符串在自动机上跑,每次把以节点i结尾的最长公共子串保存在minl[i]中,0<=i<= sam.tot。数组遍历一遍minl数组,找最大的minl[i]就是这n个串的最长公共子串了。复杂度 O(10length)

2017-03-04 19:01:38 1028

原创 SPOJ - LCS Longest Common Substring 后缀自动机

题意:求两个字符串的最长公共子串。后缀自动机看了很久 WJMZBMR 讲后缀自动机的ppt才大致把后缀自动机搞懂^_^,此外附上两个比较好的讲后缀自动机的博客 后缀自动机 模版,后缀自动机讲解这题直接用一个字符串建立后缀自动机,然后用另一个串在自动机上跑即可,操作和AC自动机有点类似,只是AC自动机匹配失败的时候用的fail指针,而这里用pre树跳转。复杂度 O(n)

2017-03-04 18:54:55 846

原创 Codeforces Round #402 (Div. 2) D. String Game 二分+优先队列+字符串匹配

题意:给出文本串和目标串,然后给出一个文本串删除字符的序列,从a1~an,要求删除s[a1 ~ ak]时剩下的字符串依然可以匹配,求尽可能大的k。二分+优先队列+字符串匹配从左往右是删除字符的顺序,倒着做,从右往做是添加字符的顺序,故check mid~n这个序列能否满足目标串的匹配,要求mid尽可能小,故二分这个剩余序列长度即可,每次check是用优先队列priority_queue<int, vector<int>, greater<int>> pq;,然后依次进行匹配。复杂度 O(nlognl

2017-02-26 21:41:34 1052

原创 Codeforces Round #402 (Div. 2) C. Dishonest Sellers 贪心、排序

题意:给个物品有2个权值ai和bi,要求至少选k个ai,然后求最小的权值和。贪心、排序v[i].diat = v[i].a - v[i].b; 故这个表示ai和bi的差值,差值越小越应当被选取(可以是负数),所以对v[i].diat进行排序,然后选上前k个的ai,然后对于剩下的n-k个物品,如果diat值为负数则选ai,否则选bi。复杂度 O(nlogn)

2017-02-26 21:32:24 1031

原创 Codeforces Round #401 (Div. 2) D. Cloud of Hashtags 贪心、字符串处理

题意:给出n个字符串,要求删除尽可能短的后缀,是这n个字符串的字典序是非递减的。 贪心、字符串处理可知,可以且需要从倒数第二个字符串开始考虑删除后缀,使s[i] <= s[i+1],因为只能从后往前处理,然后删除后缀的时候满足删除尽可能短的后缀即可。复杂度 O(n*length)

2017-02-25 00:01:30 652

原创 Codeforces Round #401 (Div. 2) C. Alyona and Spreadsheet last数组、预处理、优化

题意:给出n*m个树,询问第i行到第j行是否至少有一列是非递减序列。预处理、last数组、优化用 vector<int> f[maxn],其中f[i]表示第i列的数据,然后O(n*m)的标出非递减状态结束时的点。然后用lastj[j]表示上一次处理时访问到的非递减状态结束时的点的下一个点。所以对于每个0 < i < n 预处理出ans[i]表示i为起点的存在的最长的非递减序列的长度,对于每个1 <= j <= m,扫到本次非递减状态结束的点然后刷新last[j]。克制当 last[j] > i

2017-02-24 23:53:16 604

原创 CSU - 1632 Repeated Substrings 后缀数组、distinct substring

题意:给出一个字符串,找出出现2次及以上的子串的种数。后缀数组跑出sa数组和height数组,然后从i = 2 ~ n遍历,每次 ans += max(0, heigt[i] - lastheight);这里减掉的是已经计算过的子串种数,可参考比此题稍难的 HDU - 3948 The Number of Palindromes 后缀数组+ST表、distinct substring复杂度 O(nlogn)

2017-02-22 23:57:59 669

原创 HDU - 3948 The Number of Palindromes 后缀数组+ST表、distinct substring

题意:给出一个字符串,求出其回文子串的种数。后缀数组+ST表把s变成 s + '#' + s',其中s'表示s的反向串。所以当回文子串的长度为奇数时 [i+1, _rank[n - sa[i] - 1]] 的height最小值表示以s[sa[i]]为中心的回文子串的最大半径(算上中心); 长度为偶数时 [i+1, _rank[n - sa[i]]] 的height最小值表示以s[sa[i]]为半径起点的回文子串的最大半径;找这个最大半径,可以用ST表O(nlogn)的预处理出,然后每次O(1

2017-02-22 23:11:54 899

原创 HDU - 2890 Longest Repeated subsequence 后缀数组+二分+贪心、不可重叠子串、离散化

题意:给出一个序列,要求找出出现过至少m次的最长(连续)子序列,求其最长长度和具体字典序最小的序列,且不能有重叠。后缀数组+二分+贪心先离散化,然后跑出后缀数组sa和height数组,然后二分答案,检查的时候,维护height[i] > mid 的sa[i]值及个数,日光个数大于等于m,则把这段区间的sa[i],排序,然后从小的开始贪,相邻的2个,如果间隔小于mid,则去掉大的比去掉小的sa[i]更好,然后讨论下一个,最后判断剩余的sa[i]的两两间隔不小于mid的sa[i]的个数大于等于m,则这就

2017-02-19 00:01:41 882

原创 POJ - 3882 Stammering Aliens 后缀数组、二分、二叉堆、ST表

题意:给出一个字符串,要求找出至少出现m次的最长子串长度。后缀数组、二分、二叉堆、ST表所求的就是相邻的m个后缀的LCP,即这m-1个height[i]的最小值,所以可以二分答案,或者用ST表(O(nlogn)预处理,O(1)查询)来维护,或者用二叉堆也可以,这三种方法的运行速度依次降低。

2017-02-17 21:27:08 721

原创 UVA - 11475 Extend to Palindrome manacher+贪心

题意:给出一个字符串,在末尾添加尽可能少的字符串,使这个新字符串为回文串,输出新字符串。manacher+贪心先用manacher O(n)的跑出原字符串的以每个i为中心的回文子串,然后应该自己得出的一个manacher的结论if(len[i + j] >= (j - i)/2 + 1) 则字符串s[i......j]为回文子串。也就是从原串的右边开始,向左跑,找到以sz-1为右端点的最大回文子串,标记为ans开始,则输出原串后,从ans-1开始到0按照顺序每个字符依次输出。复杂度 O(n)

2017-02-16 18:39:15 798

原创 HDU - 4763 Theme Section KMP

题意:给出一个字符串,找出一个尽可能长的子串,要求其在字符串的开头结尾中间都出现且不能有重叠。KMP先对主串跑出next数组,然后对于ptr = n,从nxt[n]开始,判断s.substr(nxt[ptr], n - 2*nxt[ptr])里是否出现了 s.substr(0, nxt[ptr]);如果没有则ptr = nxt[ptr]直到ptr == 0;这里每个nxt[ptr]必有 s.substr(0, nxt[ptr]) == s.substr(n - nxt[ptr], nxt[ptr]),

2017-02-16 18:25:05 639

原创 HDU - 2457 DNA repair AC自动机+dp

题意:给出n个模式串,给出一个主串,要求在主创上改动尽可能少的字符,使任一模式串不在主串中出现。AC自动机+dp按照一般的 AC自动机+dp转移 的模式(套路)来做,与1月底做的一个经典例题题差不多 URAL - 1158 Censored! AC自动机+dphttp://blog.csdn.net/prolightsfxjh/article/details/54729646定义dpij表示主串上si字符自动机上的j节点时的最少方案。如果自动机上j节点的下一个节点ac.ch[j][k]; 0 <

2017-02-16 17:51:17 690

原创 POJ - 3415 Common Substrings 后缀数组+单调栈+前缀和

题意:给出两个字符串,求出它们的相同的长度至少为k的子串的个数。后缀数组+单调栈+前缀和把a、b这两个字符串用'#'连起来,然后求出它们的后缀数组,然后后缀ai和后缀bi的的满足要求的子串的个数是 max(0, LCP(suffixai, suffixbj) - k + 1);根据后缀数组的性质,也就是后缀i后缀j的LCP 等于这段height的最小值。因此对于每个ai考虑ai之前的所有bi, sum{max(0, LCP(suffixai, suffixbj) - k + 1)} rank[ai]

2017-02-16 17:33:21 859

原创 Codeforces Round #397 (Div. 1 + Div. 2 combined) D. Artsem and Saunders 映射+构造

题意:给出一个函数f(x) 属于[1,x],然后要求确定一个数m,使x属于[1,n],g[x]属于[1,m], x输入[1,m] h[x]属于[1,n], 当存在m时,求m最小时的gx和hx。映射+构造先把fx离散化化,然后通过离散化的结果,和h(g(x)) = f(x) for all , 求出gi 和 hi,最后用g(h(x)) = x for all 来检查gi和hi,如果可以则输出,否则-1.其中可以证明 fi 离散化成任意[1,m]都不影响结果,只要保证不同的数离散化成不同的数,相同的数

2017-02-14 19:43:57 908

原创 URAL - 2080 Wallet 树状数组+last数组

题意:给出一个数字序列,询问当前数字在本次与下次出现的区间里的 区间数字种数。树状数组+last数组具体见 UESTC 1342 郭大侠与甲铁城 树状数组+离线操作http://blog.csdn.net/prolightsfxjh/article/details/51287461

2017-02-07 20:06:31 627

原创 Codeforces Round #394 (Div. 2) D. Dasha and Very Difficult Problem 贪心

题意:数组a、b,由bi - ai 得到ci,要求每个ci都不相同,给定a和p(p为c的压缩之后的保持大小顺序不变的序列),求b。贪心可以令 ci = pi + k,因为p为c的压缩之后的保持大小顺序不变的序列。然后bi = ai + ci = ai + pi + k;然后可以求出bi,这是用maxv = max{bi},minv = min{bi},然后如果 minv~maxv的宽度大于lr的宽度,则ans = -1;否则,把区间minv~maxv 移到 lr里,如果偏小就每个bi都加(l -

2017-02-01 13:33:14 700

原创 Codeforces Round #394 (Div. 2) C. Dasha and Password 贪心+预处理+枚举

题意:长度为n的密码必须包含至少一个字母一个数字一个非字母非数字的字符,给出n个长度为m的字符串,每个串取一个字符,要求移动最少的步数使所成的密码为合法的密码。贪心+预处理+枚举先贪心的预处理出每个字符串 v[i]的v[i].c表示移动到字母的最少步数,v[i].d表示移动到数字的最少步数,v[i].f表示移动到其它字符的最少步数。先把.c.d.f都初始化为INF,然后扫一遍字符串,如果不存在相应的请求则值依然是INF。因为n <= 50 所以显然是n^3的枚举,即枚举每一个.c.d.f要求它们来自

2017-02-01 12:19:59 864

原创 Gym - 101147H H. Commandos DAG

题意:即普通的DAG加了一维。DAG上的dp三维的有向无环图上dp,dp[k][i][j] = max(dp[k][i][j], dp[k][i+1][j] + mp[k][i][j]);dp[k][i][j] = max(dp[k][i][j], dp[k][i][j+1] + mp[k][i][j]);dp[k][i][j] = max(dp[k][i][j], dp[k-1][i][j] + mp[k][i][j]);复杂度 O(n^3)

2017-01-31 20:12:42 752

原创 Gym - 100507H H. Pair: normal and paranormal 栈

题意:给一个字符串,要求把大写字母和小写字母一一配对,要求不交叉。用栈来模拟,不要写挂了就没问题,^_^复杂度 O(n)

2017-01-31 19:59:26 470

原创 Gym - 100507G G. The Debut Album 数位dp+内存优化

题意:最多连续a个1,最多连续b个2,构造出长度为n的字符串的个数。数位dp+内存优化dpij0表示在访问字符串的第i为连续j个1时的方案数,dpij1表示在访问字符串的第i为连续j个2时的方案数,sum[i][0]、sum[i][1]表示上访问完第i位时的总方案数。对位1、2分别对于1~a, 1~b, 当j等于1时上一位必定是2故 dp[i][j][0] = sum[i-1][1],其它时候当dpi[j-1][0] 存在时 dpij0 = d[i-1][j-1][0];然后5e4*300*2 *

2017-01-31 19:50:26 467

原创 HDU - 5384 Danganronpa AC自动机、简单题

题意:给出n个主串、m个模式串,求每个主串Ai中这m个模式串出现的次数和。 AC自动机、简单题把n个模版串丢到一个队列里,然后读取m个模式串建立AC自动机,然后每个主串,按主串在AC自动机上遍历即可。注意此时的危险节点只能是模式串的结尾。复杂度 O(n*length)

2017-01-28 23:30:48 615

原创 HDU - 3695 Computer Virus on Planet Pandora AC自动机+优化

题意:给出n个模式串,然后给出一个主串(不过给出的形式是[number]char[number]char),求在主串中模式串或者模式串的逆串能匹配的个数。AC自动机+优化用n个模式串建立AC自动机,然后按照主串正反读2遍就好了,然后就是注意优化,即避免重复访问,碰到危险节点计算以后就标记为-1,这样下次如果再遍历到自动机的这里就直接break然后去遍历主串的下一个字符就好。此外,常用的AC自动机的写法是用map<char, int> mp;来储存字母表的,这里要改成s[i] - 'A'直接上,比较前者是

2017-01-28 22:14:45 1067

原创 HDU - 2222 Keywords Search AC自动机

题意:给出n个字符串为这些字符串在主串s中出现的个数。AC自动机裸的AC自动机,注意下给定模式串可能有一些相同的串,然后按照主串在自动机上遍历即可。复杂度 O(n)

2017-01-26 21:17:16 448

原创 UESTC 8 God Only Knows! AC自动机

题意:给一个字符串s,然后给出n个字符串stri,问s的不包含任意stri串的子串的个数。AC自动机做了一晚上,终于用自己的方法过了,开心 Y ^ _ ^ Y。先用给出的n个串stri来建立AC自动机,其中在朴素AC自动机的基础上添加一个depth[MAX_SIZE]成员用来记录每个节点的深度。然后根据主串s在自动机上跑,碰到危险节点(即danger节点, 给定串stri的结尾节点是危险节点或者该节点的后缀节点是危险节点的节点)时,维护lastdanger 表示主串s已经出现过的stri中最靠近i

2017-01-25 23:46:07 918

原创 URAL - 1158 Censored! AC自动机+dp

题意:给出n个不同的字符,用这n个字符构成长度为m的字符串,要求每个串的子串都不出现给定的p个串中的任一个,求满足要求的字符串的个数。AC自动机+dp因为构成的最终串是由一个字符一个字符添加到字符串尾部构成的,那么如果一个串的后缀如果恰好是某个给定串的前缀时,这个串就可能最终成为非法串。用k个给定串建立AC自动机,然后从根节点开始递推,dpij表示递推到第j个字符当前在自动机上的i号节点时的方案数,如果下一个节点是k,且不是危险节点,则把dpij加到dp[k][i+1]里,跑一遍,然后答案就是所有

2017-01-25 15:02:15 1039

原创 UVALive - 7544 Banking II 朴素dp、类似于背包的dp

题意:给出一个数字字符串,然后给出一个由小写字母构成的字符串,每个小写字母x 表示 有且必须选择一段连续的长度为 x - 'a' + 1的数字字符,然后要求这些小写字母按顺序选取数字字符串的子串,求选取的数字的和的最大值朴素dp、类似于背包的dp定义dpij 表示当前在考略第i个小写字母,将要选取的数字字符串子串是 [j - ( k[i] - 'a' + 1), j],时已经选中的数字的和的最大值,每次初始为 dpij = dpi-1j,然后进行转移即可复杂度 O(n^2)

2017-01-21 19:54:29 668

原创 UVALive - 4294 Shuffle 映射+取反+最大区间覆盖

题意:歌曲种数为s,记录的数量为n,然后给出这个n个记录,每s个歌会随机播放一遍,然后开始重新随机播放这s首歌,为未来可能在几个点进行一次新的循环。映射+取反+最大区间覆盖扫一遍数组,每次如果i - last[v[i]] < s,则点x必须是在这个区间里划分,然后新的循环会在kx之后出现,所以把i和last[v[i]]映射到 [0, s) 里,然后如果 (i % s) > (last[v[i]] % s) 则答案在区间[(last[v[i]] % s), (i % s))里,取反以后是答案不可能在

2017-01-21 19:39:19 675

原创 URAL - 2105 Alice and Bob are on Bikes 整体处理、相遇问题

题意:ab从同一个位置开始相向的沿着一个圈跑,ab各自会停下来一段时间,问0~t这个过程中他们总共相遇多少次。整体处理写了很久模拟发现可以一次性处理,中间过程可以相互抵消掉很多东西,写了模拟就懂,Y ^_^ Y。只要找出 a总运动路程长度,b总运动路程长度,ans = (a + b) / l;复杂度 O(n)

2017-01-19 16:35:07 756

原创 URAL - 2102 Michael and Cryptography 分解质因数+优化

题意:每一个数都可以表示为 ai^bi + ai+1^bi+1 + ...... an^bn,判断 sigma bi 是否等于 20分解质因数+优化用O(sqrt(n))的分解质因数的方法,然后优化,sum记录次方的值,1、当sum >= 20 时直接break,不用管后面的;2、当if(sum == 19) 如果当前 i^2 > now 如果 i <= now 则接下来有且只有一个质因数,直接break; 如果 i > now 也直接f = fal

2017-01-19 16:26:52 861

原创 HackerRank - pairs-again Satisfactory Pairs 数论、方程、优化、标记方法、预处理

题意:给出一个n,找出(a, b) a<b的个数,且 ax + by == n。数论、方程、优化、标记方法、预处理终于用自己的方法优化到过了 (┬_┬),感人。最初的想法是O(nlin(n)) ~ O(nln(n)sqrt(n))的,然后超时了,所以把那个sqrt(n)预处理了,变成远小于sqrt(n)了,但还是超时,所以后来发现,a <= n / 2,这个时候只超出了标准时限一点点了,⊙﹏⊙‖∣然后才发现如果用 int f[maxn] 代替 bool f[maxn],就不用对每个i进行mem

2017-01-17 20:23:50 977

原创 AtCoder - 2159 Connectivity 并查集+二分、快速的求出2个集合的交集

题意:分别有一个road网络和一个railway网络,求每个点在2个网络中都连通的点的个数。并查集+二分先用并查集维护出2个网络的连通关系,然后把这些树转移到 map<int, vector<int>> mp里,//bitset 超时每次对于每个i,如果没有计算过ans,则比较mp1[_find(i)]和mp2[_find2(2)]这2个vector里相同的元素的个数,并且这些相同的数它们的ans都是一样的,比如把这些相同元素维护到一个map<int, bool> m里,则所有的m.first的a

2017-01-17 19:27:48 964

原创 UVALive - 4882 Parenthesis 表达式处理、字符串处理、栈

题意:给一个有括号小写字母加号组成的字符串,去掉多余的括号后输出。表表达式处理、字符串处理、栈用栈,O(n)预处理出每个左括号i 对应的右括号mp[i]的位置,然后扫一遍mp,对于每个括号判断左括号的左边是否是 字母或者右括号,右括号的右边是否是 字母或者左括号,如果是就不能去掉,否则去掉的括号把flag[i]标记为true即可,然后还有2个问题,去掉的括号在接下来的判断中该位置应当忽略,1、比如(((x+y)))x => (x+y)x故上面所说的左边或者右边是指忽略掉以去除括号的情况下的

2017-01-16 19:15:58 1202

原创 8VC Venture Cup 2017 - Elimination Round D. PolandBall and Polygon 树状数组+几何

题意:给出一个凸n边形,然后给一个k,存在gcd(n, k) == 1,然后从顶点x = 1开始,在x 与 y = x + k;//(while(y > n) y -= n;) 间画一条线,然后 x = y,继续 y = x + k 画线,没每画一条线图形中存在的中平面块数。树状数组+几何用ans表示画线前的平面块数,画一条xy线,则多出的平面块数为 线xy穿过的线的个数+1,观察可以发现,xy穿过的线段的个数等价于 顺时针方向 x与y之间点的权值和,(每个点的权值为点所在的线段的条数),然后考虑

2017-01-16 18:33:41 909

原创 Codeforces Round #389 (Div. 2) D. Santa Claus and a Palindrome 回文串+贪心+数据结构、字符串

题意:给出k个长度为n的字符串且每个字符串有一个权值,选一些字符串构成一个回文串,使这个回文串的总权值尽可能大,就权值的最大值。回文串+贪心+数据结构、字符串把字符串和权值储存在map<string, vector<int> > mp里,用map<string, bool> flag来标记字符串是否为回文串。选尽可能多的字符串对x + y > 0,x与y互为回文,且xy都优先选大的,其中分成本身是回文串的和不是回文串2类讨论,如果本身是回文串,且个数大于2,而且x + y > 0,则也ans +=

2017-01-15 00:45:36 941

原创 Gym - 101102J J. Divisible Numbers 位运算+优化+前缀和

题意:给出n个数,然后每次询问l r s,表示在lr区间内有多少个x,是x能被集合s里的至少一个元素整除,s表示一个{1~10}的子集位运算+优化+前缀和可以预处理出前缀和 sum[i][j]表示1~j中能被集合i满足的数的个数,且i为奇数时比有元素1,lr区间内所有的数必定可以被1整除,所以只剩下512中情况故 int sum[512][maxn];读入的时候每次判断v可以被哪些数整除,然后得到集合s,s说表示的集合中所有的元素皆可以整除v,然后用这个s和0~512位于返回非0值则有公共元素,

2017-01-14 21:53:10 931

原创 Gym - 101102F F. Exchange 贪心、简单题

题意:可以对字符串进行一个操作,把2个字母互换(这2个字母是不同的),一旦互换必须把所有x换成y,所有y换成x,最多可以进行一次这样的操作,求字典序最小的字符串。 贪心、简单题用cnt[i]表示字母出现的次数,用flag[i]表示之前j字母是否出现过,对于每个字母x,则在1~x-1里找之前没有出现过但在整个字符串出现过的字母进行互换,找出后退出循环,之后进行互换复杂度 O(26*n)

2017-01-14 21:36:06 328

原创 Gym - 101102C C. Bored Judge 线段树+贪心+反向推

题意:给出一系列分数变化情况,x p 表示队伍x获得了p分,求出最终winner在ans事件之后就一直是第一名,求出ans,(如果winner一直是winner,则ans = 1)。线段树+贪心+反向推先计算出每个队伍最终的分数,求出winner的最终分数和队伍编号,然后把每个队伍的分数输入到线段树,用线段数来维护1~n的最大值,存储在team[1]里,然后反向的遍历事件, Modify(ord[i], -p[i]);如果if(team[1] == maxi){ans = i - 1;}一旦不满足就

2017-01-14 21:28:21 1124

原创 Gym - 101102B B. The Little Match Girl 贪心、数论、分步

题意:给一串由火柴构成的数字,可以移动火柴改变数字,使得整个数尽可能大,但不能增加或减少数位。贪心、数论、分步每个数字的火柴数分别是a[0] = 6, a[1] = 2, a[2] = 5, a[3] = 5, a[4] = 4, a[5] = 5, a[6] = 6, a[7] = 3, a[8] = 7, a[9] = 6;统计出总火柴数,优先构造出6,此时要判断if(cnt - 6 * i >= (c - i) * 2 && cnt - 6 * i <= (c - i) * 7 && c)即剩

2017-01-14 21:16:44 1235

原创 Gym - 101102A A. Coins 背包问题、数学

题意:在a中选一个子集b中选一个子集,使它们的和为w且abs(sumai - sumbi) <= k,问方案数。背包问题、数学w = sumai +sumbi,da[j]表示a构出和为j时的方案数,db[j]为构出和为j时的方案数。故枚举可能的sumai,然后对应w - sumai,则ans = sigma(da[sumai] * db[w - sumai])然后求da,db的方法是01背包,复杂度 O(n*w)

2017-01-14 20:56:34 1007

空空如也

空空如也

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

TA关注的人

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