- 博客(289)
- 资源 (4)
- 问答 (3)
- 收藏
- 关注
原创 [多校 NOIP 联合模拟 11.30 T4] ZZH 的旅行(李超树合并) | 错题本
文章目录题目分析代码题目给一棵第 iii 条边边权为 did_idi 的有根树,111 为根。对于每个点 xxx,对于满足如下条件的序列 {s1,⋯ ,sk}\{s_1,\cdots,s_k\}{s1,⋯,sk}:si−1s_i - 1si−1 是 sis_isi 的祖先,且 si−1≠sis_{i - 1} \neq s_isi−1=si。s1=xs_1 = xs1=x 中。求 ∑i=2k(asi−1−dist(si−1,si))bsi\sum_{i = 2}^k (a_
2020-11-30 20:33:31 541
原创 EGE 库入门——手把手教你从零完成 Flappy Bird 的编写
文章目录运行效果图什么是 EGE安装 EGE下载找到你的 MinGW复制文件测试开始吧获取素材下载 Apktool下载一个 FlappyBird.apk开始解析运行效果图太大了传不了就把偶数帧删了。什么是 EGE为什么我一天写的东西都只能在一个黑漆漆的窗口里运行?为什么控制台只能设置 16 种颜色?为什么我只能打印一些简单的字符或文字?最初想要制作一个小游戏的 OIer 或许都会这么想。事实上,以常规 OI 编译器(例如,Windows 下的 MinGW)是无法完成所谓的图形化界面的,因
2020-11-27 12:46:18 3838 5
原创 [BalkanOI 2011] timeismoney | 最小乘积生成树(分治 + 计算几何) | 错题本
文章目录题目分析代码题目[BalkanOI 2011] timeismoney | 最小乘积生成树分析将各种生成树对应边的 aaa 值之和作为 xxx 坐标,bbb 值之和作为 yyy 坐标,那么我们需要求一个 x×yx \times yx×y 最小的点。如图,如果某点 CCC 在直线 ABABAB 上方,xc×ycx_c \times y_cxc×yc 必然不是最小的(因为它对应的反比例函数图像在 AAA 或 BBB 的上方),因此 CCC 不可能是最优的,我们找下凸包即可。由于我们不知
2020-11-27 12:45:47 380
原创 Prufer 序列
文章目录Prufer 序列树 - Prufer 序列实现Prufer 序列 - 树实现Prufer 序列一棵有标号无根树可以与它的 Prufer 序列唯一对应,通过生成 /// 还原方法可以了解为什么一一对应。树 - Prufer 序列将编号最小的叶子节点删除,然后将它的父节点的编号记录在序列尾部,重复执行直到树只有一个节点,如此得到的序列即为它的 Prufer 序列。实现显然的实现方法是使用一个优先队列,时间复杂度 O(nlogn)O(n\log n)O(nlogn)。但还有线性做法:用一
2020-11-27 12:45:40 246
原创 [洛谷 P5633] 最小度限制生成树(WQS 二分) | 错题本
文章目录题目分析代码题目[洛谷 P5633] 最小度限制生成树分析给 sss 的邻接边弄一个 Δ\DeltaΔ 值加在边权上,然后做最小生成树,易知 Δ\DeltaΔ 越大,sss 的度越小,因此可以 WQS 二分。实现把 sss 的邻接边和非邻接边分别排好序,做的时候归并即可。代码#include <bits/stdc++.h>int Read() { int x = 0; bool f = false; char c = getchar(); while (c <
2020-11-27 12:45:33 327
原创 [APIO 2013] 道路费用(暴力 + 最小生成树 + 优化)| 错题本
文章目录题目分析代码题目[APIO 2013] 道路费用分析首先考虑暴力:2K2^K2K 枚举哪些边在最终的最小生成树里面,把和这些边冲突的边不要,做一遍最小生成树即可。选的边的权值肯定是与最小冲突边以及最小生成树形成的环中最大的,就能确定最终获利了。时间复杂度 O(2KMlogM)O(2^KM\log M)O(2KMlogM)。事实上我们可以事先处理出冲突边,因为 边权互不相同,所以 最小 冲突边仅有 KKK 条。因此我们先把 KKK 条边连入并查集,做一遍最小生成树,得到的边一定是存在于暴力
2020-11-26 12:52:13 199
原创 [APIO 2013] 机器人(斯坦纳树) | 错题本
文章目录题目分析代码题目[APIO 2013] 机器人分析先记搜出每个格子往上下左右推一下能滑到哪里。然后类似于斯坦纳树,定义 dp[l][r][x][y]dp[l][r][x][y]dp[l][r][x][y] 表示把 l∼rl \sim rl∼r 的所有机器人搞到 (x,y)(x, y)(x,y) 合并的最小代价,区间 DP 外加四联通的转移,一种转移情况是 dp[l][m][x][y]+dp[m+1][r][x][y]dp[l][m][x][y] + dp[m + 1][r][x][y]dp[
2020-11-26 11:33:40 190
原创 [UVA 10559] 方块消除(区间 DP) | 错题本
文章目录题目分析代码题目[UVA 10559] 方块消除分析不能直接设计 dp[l][r]dp[l][r]dp[l][r] 因为你消除了其中一部分,左右又会并过来一部分,因而你不知道实际消掉了些什么,因此加一维 dp[l][r][x]dp[l][r][x]dp[l][r][x] 表示 rrr 右边还有 xxx 个和 rrr 一样颜色的,消掉这些东西获得的分数,转移的时候枚举区间中和 rrr 一样颜色的,把区间变成两截即可。代码#include <bits/stdc++.h>int
2020-11-26 11:23:52 312
原创 [SDOI 2008] Sue的小球(提前算贡献的 DP) | 错题本
文章目录题目分析代码题目[SDOI 2008] Sue的小球分析将之后的损失提前统计在 DP 的值中,就可以避免不知道时间无法计算损失的情况。然后区间 DP,dp[l][r][0/1]dp[l][r][0/1]dp[l][r][0/1] 表示收集完 [l,r][l, r][l,r] 的彩蛋(提前计算了对以后损失)最终停在 l/rl / rl/r(因为不可能吃完了还继续乱走)的最高分数,转移的时后从 dp[l+1][r]dp[l + 1][r]dp[l+1][r] 或者 dp[l][r−1]dp[l]
2020-11-26 10:56:33 139
原创 [USACO 20OPEN] Exercise G(素数 DP) | 错题本
文章目录题目分析代码题目[USACO 20OPEN] Exercise G分析问题就是求 KKK 的和,使得存在 {ai}\{a_i\}{ai} 满足 lcm ai=K,∑ai=N\text{lcm}\ a_i = K, \sum a_i = Nlcm ai=K,∑ai=N,将所有 aia_iai 分解质因数后 KKK 就是它们质因数对应最高次数的乘积。考虑枚举 KKK 各个质因数的以及它们的幂,其之和不会超过 NNN,通过算贡献的方法进行背包即可。代码#includ
2020-11-26 10:48:12 169
原创 [USACO 20JAN] Farmer John Solves 3SUM G(巧妙的前缀和思想) | 错题本
文章目录题目分析代码题目[USACO 20JAN] Farmer John Solves 3SUM G分析考虑初始化出所有答案,由于一个面(二维)内答案可能很多,这种情况下可以考虑算二维的单点,然后二维前缀和即可。本题可以计算 i∈(l,r)i \in (l, r)i∈(l,r) 满足 ai+al+ar=0a_i + a_l + a_r = 0ai+al+ar=0 的 iii 数量存入 Sum[l][r],然后对 Sum 求一遍二维前缀和,可以得到 j∈[1,l],k∈[1,r],i∈(j,k
2020-11-26 10:15:35 407
原创 [USACO 20OPEN] Favorite Colors G(启发式合并) | 错题本
文章目录题目分析代码题目[USACO 20OPEN] Favorite Colors G分析按拓扑序枚举各个点,只需要合并把他们的邻接点(即仰慕它的奶牛)合并在一起即可,采用启发式合并。代码#include <bits/stdc++.h>int Read() { int x = 0; char c = getchar(); while (c < '0' || c > '9') c = getchar(); while (c >= '0' &&a
2020-11-26 10:05:26 304
原创 [SCOI 2016] 背单词(Trie 树 + 贪心) | 错题本
文章目录题目题意分析题目[SCOI 2016] 背单词题意什么阴间题目描述。给出 nnn 个字符串,你需要将他们排成适当的序列使序列中各个串的权值和最小。序列中的一个字符串 si (1≤i≤n)s_i\ (1 \le i \le n)si (1≤i≤n) 权值定义如下:若存在 sj (j>i)s_j\ (j > i)sj (j>i) 是 sis_isi 的后缀,权值为 n2n^2n2;否则,若任意 sj (j<
2020-11-26 09:39:29 179
原创 [SHOI 2015] 聚变反应炉(树形背包 + 树形 DP) | 错题本
文章目录题目分析代码题目[SHOI 2015] 聚变反应炉分析对于树上一个点操作后对相邻节点产生影响的题目,DP 状态的定义需要考虑父节点的影响。定义 DP 状态 dp[u][0/1]dp[u][0/1]dp[u][0/1] 表示 uuu 的父亲节点 不给 uuu 传输能量 /// 给 uuu 传输能量 时激发 uuu 的子树(包括 uuu)的最少代价。这样定义状态能知道父亲给自己传输的能量,再枚举子节点传输给自己的能量就可以转移了,然后涉及到“使子节点传输给自己的能量达到某一状态值的最小代价”,
2020-11-26 08:59:59 227
原创 [HEOI 2015] 兔子与樱花(贪心) | 错题本
文章目录题目分析代码题目[HEOI 2015] 兔子与樱花分析从叶子往根做,考虑选取 uuu 子节点 vvv 中 w(v)=son(v)+cvw(v) = son(v) + c_vw(v)=son(v)+cv 小的优先删除,因为假如此时不删 w(v)w(v)w(v) 最小而删 w(v)w(v)w(v) 更大的 vvv,必然会使 uuu 更容达到到 mmm 的限制,于是删除的节点数不会多于删最小的。代码#include <bits/stdc++.h>int Read() { i
2020-11-26 08:43:13 248
原创 [JLOI 2014] 聪明的燕姿(搜索剪枝) | 错题本
文章目录题目分析代码题目[JLOI 2014] 聪明的燕姿分析根据约数和定理 Dfs 即可,问题在于处理 SSS 的因数可能很大。对于小于 S\sqrt SS 的素数 ppp,可以筛出来然后暴力枚举 ttt,使得 ∑i=0tpi∣S\sum_{i = 0}^{t} p^i \big| S∑i=0tpi∣∣S ,对于大于 S\sqrt SS 的素数 ppp 显然至多只有一个 ppp 能满足 1+p∣S1 + p \big| S1+p∣∣S,细节:注意枚举范围,并且要不重复地枚举,我们要求剩
2020-11-17 19:40:32 171
原创 [JOISC 2016 Day 2] 三明治(细节搜索) | 错题本
文章目录题目分析代码题目[JOISC 2016 Day 2] 三明治分析先读懂题目:大三明治是正方形的,小三明治是三角形的。根据题目要求不难发现,大三明治怎么切只决定要先吃哪两个大三明治才能吃自己。小三明治不重要,因为只要吃掉了某两个与自己相邻大三明治(是哪两个取决于切割方式),自己这个大三明治就能直接吃掉了。那么接下来所说的“三明治”都是“大三明治”。首先可以枚举每个点然后进行 O(n2)O(n^2)O(n2) 的暴力记忆化搜索,总复杂度 O(n4)O(n^4)O(n4)。然后根据我们发现的性质
2020-11-17 16:13:23 329
原创 [USACO 20FEB] Equilateral Triangles P(切比雪夫 yyds) | 错题本
文章目录题目分析代码题目[USACO 20FEB] Equilateral Triangles P分析转换成切比雪夫距离过后,发现符合条件的点必然是正方形的两个顶点和其对边上的一个点,于是 O(n3)O(n^3)O(n3) 枚举两个点,前缀和算一算即可。代码之前不想转切比雪夫因为要平移坐标,瞎 78 写了一通 WA 穿了,调了一个小时过后重构代码,发现转成切比雪夫过后太好写了。事实上只需要输入的时候调整一下坐标并把 NNN 的值改了,之后完全正常算即可。#include <bits/st
2020-11-17 10:50:02 270
原创 [USACO 20FEB] Timeline G(拓扑排序) | 错题本
文章目录题目分析代码题目[USACO 20FEB] Timeline G分析差分约束的题意都比较恶心,按题意建好图,拓扑排序一下递推就能得到答案了。代码#include <bits/stdc++.h>const int MAXN = 100000;int N, M, C, S[MAXN + 5];int Out[MAXN + 5];std::vector<int> H[MAXN + 5];std::vector<std::pair<int, in
2020-11-17 10:43:34 257
原创 [USACO 19DEC] Milk Visits S(LCA) | 错题本
文章目录题目分析代码题目[USACO 19DEC] Milk Visits S分析记录到根路径上颜色数,倍增求 LCA 即可判断是否路径上全是他想要的颜色。代码#include <bits/stdc++.h>const int MAXN = 100000;const int LOG = 16;int N, M;char S[MAXN + 5];std::vector<int> G[MAXN + 5];int Dep[MAXN + 5];int Anc[
2020-11-17 10:40:30 232
原创 [SP2916 GSS5] Can you answer these queries V(线段树 + 细节) | 错题本
文章目录题目分析代码题目[SP2916 GSS5] Can you answer these queries V分析先考虑两个区间不相交的情况:只需要求 [l1,r1][l_1, r_1][l1,r1] 的前缀和最小值和 [l2,r2][l_2, r_2][l2,r2] 的前缀和最大值,相减就是答案。再考虑两个区间相交的情况,相交部分用 GSS1 解决即可,未相交部分考虑两种情况:左端点在 [l1,l2][l_1, l_2][l1,l2] 右端点在 (l2,r2](l_2, r_2](l
2020-11-17 10:36:51 161
原创 [SP2713 GSS4] Can you answer these queries IV(暴力线段树) | 错题本
文章目录题目分析代码题目[SP2713 GSS4] Can you answer these queries IV分析同 上帝造题的七分钟2 / 花神游历各国。代码#include <bits/stdc++.h>typedef long long LL;LL Read() { LL x = 0; bool f = false; char c = getchar(); while (c < '0' || c > '9') f |= c == '-', c =
2020-11-17 10:29:35 137
原创 [洛谷 P4145] 上帝造题的七分钟2 / 花神游历各国(暴力线段树) | 错题本
文章目录题目分析代码题目[洛谷 P4145] 上帝造题的七分钟2 / 花神游历各国分析每个数不断开根下取整,最终会变成 111,显而易见的是只需要开极少的次数一个数就能变成一,这个次数是 log2log2n+1\log_2\log_2 n + 1log2log2n+1。因此线段树区间修改时如果该区间没有全部变成 111,就暴力一个一个改即可。代码#include <bits/stdc++.h>typedef long long LL;LL Read() { LL x
2020-11-17 10:26:56 164
原创 [SP1557 GSS2] Can you answer these queries II(离线 + 线段树) | 错题本
文章目录题目分析代码题目[SP1557 GSS2] Can you answer these queries II分析思路很巧妙。先离线所有询问,然后考虑从左到右依次加入每个数,然后考虑如何求目前一个区间的最大子段和:子段无非是两个端点,我们可以用一个数组维护其中一个端点确定时,另一个端点的最优位置,即 aia_iai 表示目前以 iii 为左端点的子段和的最大值,由于是动态加入的,所以 aia_iai 实际记录的就是从 iii 到“当前位置”的子段和的历史最大值。然后我们要知道的是左端点滑动
2020-11-17 10:15:30 170
原创 [SP1043 GSS1] Can you answer these queries I(线段树) | 错题本
文章目录题目分析代码题目[SP1043 GSS1] Can you answer these queries I分析线段树维护 lft, mid, rgt 分别代表选左端点的最大子段和、最大子段和、选右端点的最大子段和即可。代码#include <bits/stdc++.h>int Read() { int x = 0; bool f = false; char c = getchar(); while (c < '0' || c > '9') f |= c
2020-11-17 09:45:04 171
原创 ARC 刷题记录 · 壹 | 错题本
文章目录10.22[ARC058B] Iroha and a Grid[ARC058C] Iroha and Haiku[ARC059C] Children and Candies[ARC059D] Unhappy Hacking标红的表示看了题解。10.22[ARC058B] Iroha and a Grid简单计数题,总方案减不合法的即可,不合法的可以枚举 A×BA \times BA×B 的矩形的一个对角线计算。#include <bits/stdc++.h>const in
2020-11-01 09:26:23 362
原创 [CodeForces 1394D] Boboniu and Jianghu(树形 DP + 贪心) | 错题本
文章目录题目分析代码题目[CodeForces 1394D] Boboniu and Jianghu分析考虑树形 DP:对于当前点 uuu 和它的子节点 vvv,若 hu≠hvh_u \neq h_vhu=hv,那么这条边的方向就确定;若 hu=hvh_u = h_vhu=hv,我们需要给这条边定向。假设最终定完 uuu 所有邻接边的向后 uuu 的入度为 xxx,出度为 yyy,那么 uuu 对答案的贡献就是 tu×max{x,y}t_u \times \max\{x, y\}tu
2020-09-18 10:57:24 178
原创 [51Nod 1584] 加权约数和(约数和函数性质 + 莫比乌斯反演) | 错题本
文章目录题目分析代码题目[51Nod 1584] 加权约数和分析先把 max{i,j}\max\{i, j\}max{i,j} 去掉:原式=2∑i=1N∑j=1iiσ(ij)−∑i=1Niσ(i2)原式=2\sum_{i = 1}^{N}\sum_{j = 1}^i i\sigma(ij)-\sum_{i = 1}^N i\sigma(i^2)原式=2i=1∑Nj=1∑iiσ(ij)−i=1∑Niσ(i2)推式子前先介绍约数和函数有一个重要性质(和约数个数一样可以转化为 gcd\gc
2020-09-17 10:50:44 228
原创 [CodeForces 1401D] Maximum Distributed Tree(贪心) | 错题本
文章目录题目分析代码题目[CodeForces 1401D] Maximum Distributed Tree分析边 (u,v)(u, v)(u,v) (vvv 的深度大于 uuu)被统计的次数是 sizv(n−sizv)siz_v(n - siz_v)sizv(n−sizv),因此我们目的变成给 n−1n - 1n−1 个数分配 mmm 个权使得每个数与其分配到的所有权之积的和最大。显然是大数对大权,因此排序即可。代码#include <bits/stdc++.h>int
2020-09-16 21:44:16 131
原创 [CodeFoeces 1400E] Clear the Multiset(分治) | 错题本
文章目录题目分析代码题目[CodeFoeces 1400E] Clear the Multiset分析找到区间最小值断开分治,然后返回两种操作的代价较小值即可。代码#include <bits/stdc++.h>int Read() { int x = 0; char c = getchar(); while (c < '0' || c > '9') c = getchar(); while (c >= '0' &
2020-09-16 21:37:13 153
原创 [CodeForces 1401F] Reverse and Swap(线段树懒标记优化) | 错题本
文章目录题目分析代码题目[CodeForces 1401F] Reverse and Swap分析直接对序列建线段树,Replace 和 Sum 是基本操作。首先可以发现 Reverse 操作是将某一层以及其下面的所有节点左右儿子交换,Swap 操作是将某一层的所有节点左右儿子互换。如果直接对每个节点开懒标记的话,PushDown 操作十分困难。发现一次操作实际上是改变的一层的状态,因此只需要对每层开一个标记表示该层的每个节点是否需要互换左右儿子即可。代码#include <bits/st
2020-09-16 21:33:46 223
原创 [CodeForces 1375G] Tree Modification(转化) | 错题本
文章目录题目分析代码题目[CodeForces 1375G] Tree Modification分析如果对树黑白染色,题目的操作方式与将一个点(即 aaa 点)变色等价,目标状态就是只有一个白色节点或一个黑色节点。因此记原树中白色节点个数为 c1c_1c1,黑色节点个数为 c2c_2c2,输出 min{c1,c2}−1\min\{c_1, c_2\} - 1min{c1,c2}−1 即可。代码#include <bits/stdc++.h>const int MAXN
2020-09-11 11:32:39 149
原创 [CodeForces 1391E] Pairs of Pairs(结论) | 错题本
文章目录题目分析代码题目[CodeForces 1391E] Pairs of Pairs分析两个 NP 问题拼起来就变成了一道蓝题?结论:若 DFS 树高不小于 ⌈n2⌉\left\lceil\frac{n}{2}\right\rceil⌈2n⌉,输出 PATH 以及根开始最长的链;否则输出 PAIRING,对每层挨着两两匹配(可能会单一个出来不选)即可。情况一显然合法(尽管所有直径不小于 ⌈n2⌉\left\lceil\frac{n}{2}\right\rceil⌈2n⌉ 的 D
2020-09-11 11:23:31 154
原创 [SDOI 2014] 数表(莫比乌斯反演 + 树状数组) | 错题本
文章目录题目分析题目[SDOI 2014] 数表分析∑i=1n∑j=1m⌊alcm(i,j)⌋=∑i=1n∑j=1m⌊alcm(i,j)ij⌋\begin{aligned}&\sum_{i = 1}^n\sum_{j = 1}^m \left\lfloor\frac{a}{\text {lcm}(i, j)}\right\rfloor \\ =&\sum_{i = 1}^n\sum_{j = 1}^m \left\lfloor\frac{a\text{lcm}(i, j)}{ij}\
2020-09-11 10:58:10 148
原创 [国家集训队] Crash的数字表格 / JZPTAB(莫比乌斯反演) | 错题本
文章目录题目分析代码题目[国家集训队] Crash的数字表格 / JZPTAB分析不妨设 n≥mn \geq mn≥m:∑i=1n∑j=1mlcm(i,j)=∑i=1n∑j=1mijgcd(i,j)=∑d=1m∑i=1⌊nd⌋∑j=1⌊md⌋ijd[gcd(i,j)=1]=∑d=1m1d∑k=1⌊md⌋μ(k)∑i=1⌊ndk⌋∑j=1⌊mdk⌋(idk)(jdk)=∑d=1md∑k=1⌊md⌋μ(k)k2∑i=1⌊ndk⌋∑j=1⌊mdk⌋ij\begin{aligned} &\su
2020-09-09 11:21:46 185
原创 [RC - 02] GCD(莫比乌斯反演 + 杜教筛) | 错题本
文章目录题目分析代码题目[RC - 02] GCD分析枚举 ppp 到 ⌊Nj⌋\left\lfloor\frac{N}{j}\right\rfloor⌊jN⌋ 实际上就是在枚举 jpjpjp,于是原式变成∑i=1N∑j=1N∑p=1N∑q=1N[gcd(i,j)=1][gcd(p,q)=j]=∑i=1N∑j=1N∑p=1N∑q=1N[gcd(i,p,q)=1]=∑d=1N⌊Nd⌋3μ(d)\begin{aligned}&\sum_{i = 1}^N\sum_{j = 1}^N\s
2020-09-09 10:19:01 202
原创 [洛谷 P4450] 双亲数(莫比乌斯反演) | 错题本
文章目录题目分析代码题目[洛谷 P4450] 双亲数分析同 [POI2007]ZAP-Queries。代码#include <bits/stdc++.h>typedef long long LL;const int MAXN = 1000000;int Mu[MAXN + 5];bool Vis[MAXN + 5];std::vector<int> Primes;void Init(int n) { Mu[1] = 1; for (int i =
2020-09-08 11:35:22 145
原创 [POI 2007] ZAP-Queries(莫比乌斯反演) | 错题本
文章目录题目分析代码题目[POI2007]ZAP-Queries分析同 [HAOI 2011] Problem b。代码很迷惑的是筛莫比乌斯函数的时候要把 MAXN 开大一点点不然只有 80 pts。#include <bits/stdc++.h>typedef long long LL;const int MAXN = 60000;int Mu[MAXN + 5];bool Vis[MAXN + 5];std::vector<int> Primes;
2020-09-08 11:28:49 158
原创 [SDOI 2015] 约数个数和(约数个数函数性质 + 莫比乌斯反演) | 错题本
文章目录题目分析代码题目[SDOI 2015] 约数个数和分析d(xy)=∑d1∣x∑d2∣y[gcd(d1,d2)=1]d(xy)=\sum_{d_1|x}\sum_{d_2|y}[\gcd(d_1,d_2) = 1]d(xy)=d1∣x∑d2∣y∑[gcd(d1,d2)=1] 我们证明每个因子与 gcd(d1,d2)=1\gcd(d_1,d_2) = 1gcd(d1,d2)=1 的双射关系:设 x=∏i=1npiai,y=∏i=1npibi (ai+bi≠0)x
2020-09-08 11:08:46 243
C++编写打飞机游戏
2019-10-28
《父与子的编程之旅》Python安装包+源代码
2018-08-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人