嘴巴记录

状态不佳时会嘴巴,题目来源非常随机。

P2312 [NOIP2014 提高组] 解方程

艹好难啊。

大概知道是秦九韶公式转化一下,但是发现这个 \(a_i\) 大的离谱,所以我们就想到用质数取模。

然后我们就取若干个大质数判断是否正确就行了。

经巨佬 \(\text{DPair}\) 来自过去的尝试,若干等于一。

复杂度是 \(O(nm)\) 的。

CF1214F Employment

这道题我咕了很久了,感觉是一道 \(\text{NB}\) 题,不 wei 做。

首先猜测一波,人与对应办公室的相对位置是相同的。

放屁,好像可以随便 \(\text{hack}\)

好像存在一个费用流模型,是否意味着我们可以模拟费用流?


哦相对位置是相同的,我的 \(\text{hack}\) 数据实际上可以转化成相对位置相同的。

首先我们考虑破环成链。

然后我们考虑直接维护每一个点对于每一个平移距离的答案的贡献,然后直接维护就行。

P2000 拯救世界

好像是生成函数。

我们就直接考虑用生成函数来表示这个选择的过程。

第一种大阵:

\[A(x)=\sum_{i=0}^\infty x^{6i}=\frac{1}{1-x^6},B(x)=\sum_{i=0}^9x^i=\frac{x^{10}-1}{x-1}\\ C(x)=\sum_{i=0}^5x^i=\frac{x^6-1}{x-1},D(x)=\sum_{i=0}^\infty x^{4i}=\frac{1}{1-x^4}\\ E(x)=\sum_{i=0}^7 x^i=\frac{x^8-1}{x-1}\\ \]

第二种大阵也应该是类似的,然后你把两个加起来,消消减减应该就能得到一个比较优美的式子了。

SP1479 PT07C - The GbAaY Kingdom

大意是给你一个无向图,边有非负边权,让你把他变成一棵树,使得直径最小。

搞了半天是最小直径生成树板子题。

https://oi-wiki.org/graph/mdst/

先咕咕咕。

P6499 [COCI2016-2017#2] Burza

这题好像是 XJ 模拟赛题欸,但是我已经不 wei 做了。

首先深度小于 \(k\) 的应该可以直接忽略,同时大于的部分也可以直接砍掉。这样的话我们就得到了一棵树,其所有的叶子都是深度为 \(k\) 的。

考虑将所有叶子按照 \(\text{dfs}\) 序排列。然后你发现如果你做一个深度由深到浅的扫描线,他会出现的事件就是两个点被合并成了一个点。

那我们是否双方都是贪心的走?感觉不一定。

我们可以知道,每一次走的都是次优点,因为最优点会被删掉。那这里的最优次优怎么定义?好像只有 \(01\) 两种权值,表示能否选出。

我们怎么感觉这样是对的啊。


这个题面翻译有点垃圾。

这里的 \(Daniel\) 是不能得到对方的操作信息的。

那还是对树先做这样的处理。

首先有一个易得的结论,就是你每一个标记的深度必然就是这个标记放置的时间。

就是直接利用这个结论进行状压。

但是你会发现 \(k\le400\) 并不能状压。

但是实际上考虑最坏情况 \(k\) 条长度为 \(k\) 的链,所以 \(k\)\(\sqrt n\) 级别的,所以是可以搞状压的。

关于这里最坏情况为什么是这样的,我个人认为是因为首先一个叶子必须是深度为 \(k\) 才有效。其次,我们要尽量使得他单个标记能够影响到的叶子数量尽量少。

存在一个简易的证明就是,由于你已经将树转化为了只有深度为 \(k\) 的叶子的树,那么每次给一个深度为 \(i\) 的节点打上标记,就会使得 \(k-i+1\) 个节点被删掉,所以 \(k\)\(\sqrt n\) 级别的。

\(\text{dp}\) 的过程实际上就是用 \(f_{u,i}\) 表示子树 \(u\) 中深度集合为 \(i\) 的深度都已经被选过了。

然后转移的话也就是我们通过在 \(\text{dfn}\) 序上转移然后求解即可。

CF1290F Making Shapes

首先很重要的一点是需要得到一个凸多边形。所以我们可以先按斜率排序。

然后比较容易得到的,我们只要选出一种组合,满足两个坐标的运算相加为 \(0\) ,那么必然其唯一对应一个多边形,这样实际上就变成了一个数数问题,有多少个选择方式可以使得两个坐标的和为 \(0\)

但需要注意的是存在坐标范围的限制,所以我们还是按斜率从小到大选为妙。


这道题目也太神奇了吧。

首先我们在上面的考虑方向是对的,如果我们设第 \(i\) 个向量取了 \(c_i\) 个,那么实际上我们就需要满足下面这四个式子。

\[\sum_{i=1}^nc_ix_i=0,\sum_{i=1}^nc_iy_i=0\\ \sum_{i=1,x_i>0}^nc_ix_i\le m,\sum_{i=1,y_i>0}^nc_iy_i\le m\\ \]

然后我们要求满足要求的 \(c_i\) 的个数。实际上这个东西可以数位 \(\text{dp}\) 来求。

我们直接考虑枚举当前二进制下的每一个 \(c_i\) 的第 \(k\) 的是 \(0\) 还是 \(1\) ,然后你就可以通过计算,得到你当前位的 \(c_i\) 的贡献,但是仅有这个还不够,因为我们需要满足一个上界和正负相同,我们再多记录几个状态表示目前为止,两个维度的正负分别存在多少的 \(c_i\) 的贡献还没计算在内(实际上可以理解为还没有计算的进位),因为我们对于 \(m\) 的贡献统计也是利用类似于数位 \(\text{dp}\) 的想法通过计算得到当前位的 \(m\) 的取值,然后利用常见的数位 \(\text{dp}\) 套路,设两个 \(01\) 位置表示两维是否顶满 \(m\) ,然后转移即可。

P4331 [BalticOI 2004]Sequence 数字序列

这是(不是,update by 刘涛)一道保序回归。

注:这道题我很早就想写了,但是出题人卡两只 \(\log_2n\) 的启发式合并,卡线段树合并的空间,一定要写左偏树,而我不会左偏树,所以只能爪巴了。然后第一篇题解是我看不懂的一个做法,先咕咕咕。好像还有一个整体二分,也咕咕咕。

感觉这道题目像一个巨大猜猜题。

首先我们考虑如果是求不下降序列的 \(b_i\) 怎么做。

实际上我们可以得到两个结论:

  1. 如果 \(a_i\) 也不降,那么 \(b_i=a_i\)
  2. 如果 \(a_i\) 不升,那么 \(b_i\) 等于 \(a_i\) 的中位数。

证明略。

这样我们就可以将这个序列拆分成若干个单调的区间,然后分别求出其答案,再合并。

不难想到,由于我们最后的 \(b_i\) 是要求不降的,所以如果两个相邻区间的答案是降的,我们就考虑合并他。直到不能合并为止。证明,不会,也许保序回归的论文里有。

CF1491F Magnets

首先我们返回的就是两边磁石磁力和的乘积。

我们首先考虑随机选择两个放在左右两端,如果是存在磁力强度的,说明两个都不是 \(0\) ,我们只要取其中一个然后扫一遍全部的就行了。

所以这个交互次数启示我们,通过 \(\left\lfloor\log_2n\right\rfloor\) 次操作找到一个非 \(0\) 的位置。首先由于存在相加可能等于 \(0\) 的情况,所以除非是两个单独进行测试,否则我们不好判断是否全 \(0\) 。假设我们就只有两个磁石有磁性,且磁性相反,我怎么找到他们?

首先,我们无论怎么划分都是 \(0\)

我们考虑分成两半,然后查询,然后再分成两半,其中一三放一边,合并二四放另一边,然后查询,以此类推。

然后查出来之后,用其中一边查询另一边就行了。

诶呀,忘记了磁力强度的限制,而且好像有问题。


卧槽,\(\text{NB}\) 啊。

你考虑从 \(2\) 开始,每次查询 \(S=\{i\}\)\(T=\{1,2,\cdots,i-1\}\) ,这样的话直到 \(i\) 是从左往右第二个有磁性的磁铁才会查询到非零值。

然后如果我们找到了第一个磁铁的位置,我们实际上就可以得出 \([1,i]\) 所有的没有磁性的磁铁的位置了。这个直接二分。

二分.png

然后你考虑剩下的扫一遍就行了,查询次数是 \(n-1+\log_2n\) 的。

CF1355F Guess Divisors Count

什么毒瘤。。。

首先如果是求因数个数的话,可能是需要求出每一个质数的个数的,所以我们可能需要一堆质数一起问。

等下,为啥答案还是可以存在误差的啊。相差小于 \(7\) 或者是 \(\frac{1}{2}\)\(2\) 倍之内的误差。

首先后者就启示我们,大于 \(\sqrt{10^9}\) 的质数就不用考虑了,正好是两倍的误差。

我们能否考虑一开始将答案就乘 \(2\) ,这样的我们就可以少记录两个质数。

这又启示我们,对于大于 \(\sqrt[3]{10^9}\) 的质数,我们实际上也不需要算?我们就考虑大于 \(\sqrt[3]{10^9}\) 的质数最多出现两个,最多贡献正好是 \(4\)

现在质数的上限就被我们压到了 \(1000\) ,发现此时质数存在 \(168\) 个。然后我们考虑怎么询问呢?

我们注意到 \(\sqrt[4]{10^9}\) 以内的质数个数正好是 \(40\) 个,而这个时候我们两两分组询问就可以得到答案了。

这就启示我们怎么快速判断 \((\sqrt[4]{10^9},\sqrt[3]{10^9}]\) 之间有没有质数,以及相应的因数贡献。

意识到我可以先通过询问一次 \(\prod_{i=1}^{15}p_i=614,889,782,588,491,410\) ,得到这一部分的质数有没有。


看了题解,发现基本都是乱搞,艹。

哦实际上我的做法已经基本正确了,就是分析质数,然后通过询问质数是否存在(一堆质数一起问),询问质数的幂次两种方式来搞,这样最大可以搞到 \(900\) 左右,然后由于前面的分析,然后直接判断剩下部分的影响必然不大,微调一下就行了?

那么剩下的情况:

  1. \(1\),最终答案只多乘了 \(2\),没有问题。
  1. 质数,最终答案乘了 \(2\),刚好。
  2. 质数的平方,答案应该乘 \(3\),但只乘了 \(2\),差距没问题。
  3. 质数乘质数,应该乘 \(4\),少乘了 \(2\),没问题。
  4. 三个质数相乘,但我们发现,如果是三个 \(900\) 以上质数相乘那不可能有其他质因子(\(\times 2\) 就大于 \(10^9\) 了),那么答案至多为 \(8\),然而我们输出的 \(1\) 也在可接受范围之内。

所以这样是正确的。

什么乱搞题。🤬🤬🤬🤬🤬🤬🤬🤬🤬

CF1012D AB-Strings

首先,必然可以证明,我们每一次交换的前缀都是全 \(a\) 或全 \(b\) 或空的?


分讨题。https://www.cnblogs.com/zhouzhendong/p/CF1012D.html

SP3734 PERIODNI - Periodni

发现 \(n,k\le500\) ,感觉可能大有可为?

\(\text{DPair}\) 直接秒了,我是菜鸡。

感觉像是区间 \(\text{dp}\) ,我们考虑一行一行填入,这样的话到达了一定的高度的时候,不连通的块之间是不会互相影响的。就直接算就行了?


为啥会有组合数啊,有点没搞懂。分治和背包想到了,复杂度分析错了,这个组合数也没想明白。。。

我有点想写个代码。这是嘴巴记录。

哦,我悟了,实际上是一样的,就是合并每一层上方互不干扰的部分,然后一起考虑的部分是通过组合数计算方案数而已,而组合数的计算方法就是选出若干行若干列,然后两两组合的方案。

CF627D Preorder Test

是二分吗?

考虑二分的话,我们就可以将树上的节点分成两类,大于等于的和小于的。

然后我们考虑直接 \(\text{dp}\) 算出每一个子树向下 \(\text{dfs}\) 能到达最多的有效节点个数。

然后就行了吧。


发现需要指定树根,直接套一个换根就行了。

P5048 [Ynoi2019] Yuno loves sqrt technology III

首先,如果是并非强制在线的话,就是回滚莫队的板子题了。

我们考虑莫队的在线化,实际上就是预处理出每一个整块区间的桶,再然后暴力移动端点,然后你发现这样空间复杂度堪忧。

但是我们依旧还是可以算出整块区间的答案的,这个可以 \(O(n\sqrt n)\) 预处理。

但是问题就在于我们移动的时候是需要一个桶的,但是空间不能够支持我们这样做。

这里的思路就是考虑散块的贡献,因为我们可以快速回答一个颜色在区间内的个数。然后这里我们尽量做到 \(O(1)\) 回答。

我们就直接维护出每个元素从左往右的下标,我们查询一个位置,就直接考虑找到这个位置之后 \(ans\) 个该元素的位置,并于右端点比较,同时更新 \(ans\) 并继续这一步骤。

BZOJ3563 DZY Loves Chinese

什么吊题。

问你一个无向连通图在删去 \(k\) 条边后是否联通,\(n\le 10^5,m\le 5\times 10^5,q\le 5\times 10^4,k\le 15\)

我们考虑先建一个生成树,这样的话删掉若干条边不连通存在两种情况:

  1. 该树边与覆盖其的非树边均被删除。
  2. 两条树边被删除了,且非树边均同时覆盖这两条树边。

我们考虑怎么维护?实际上不太好维护,前者实际上我们用树剖线段树可以搞,但是后者我们好像没办法直接搞。暴力的方法就是维护每一条边被覆盖的非树边的集合,然后暴力 \(\text{check}\) 。意识到 \(k\le 15\) ,所以我们能否利用二进制来维护这个集合?

实际上是可行的,我们需要满足删掉的边集里不存在线性相关的点。这与上面我们提到的两个判定情况是等价的。

于是我们就在 \(O(m\log_2m+qk^2)\) 的复杂度解决了这道题。

CF1292F Nora's Toy Boxes

存在三个数满足两个数是另一个数的倍数的情况下,我们可以删去两个倍数中的一个,问删除最多数的方案数。

首先如果 \(a_i|a_j,a_j|a_k\) ,那么删去 \(a_k\) 必然不劣,但是由于两者是可能等价的,我们不能直接武断这个一定删去 \(a_k\)

我们先考虑建成一个图,我们应该是可以得到一个 \(\text{DAG}\) 的。

首先我们可以断定终止状态应该必然是若干个不连通的大小为 \(1\)\(2\) 的图,那必然的,如果一个 \(\text{DAG}\) 存在历史的大小大于等于 \(2\) 其就必然不能变成一,这样的话所有图的最终状态就都是 \(2\) 了。

欸,那我们是不是就求出了删除的点数。真的每一个图都能被删成 \(2\) 吗?就按照拓扑序来删就行了吧。哦,如果一张图存在多个零出度点,可能的最终情况就会改变。

就比如一个菊花且菊花的中心入度为 \(0\)


哇,非常 NB 的一道题。

首先转化 \(\text{DAG}\) 的步骤是正确的,然后考虑最终状态的图是怎么样的,实际上对于一个若连通块就是一堆入度为 \(0\) 的点再加上一个其他点,这样必然是最优的,我并不会证明,你可以手玩一下。

然后我们考虑如何构造方案,构造方案的方法很是神奇,大体就是我们考虑将删点变成加点,如果所有的点都被加入了,那么就必然可以通过反向进行这个操作删除点。

首先可以比较轻易的得到,所有的点都可以通过入度为 \(0\) 的点进行操作来得到,但是一个入度为 \(0\) 的点能够进行操作的前提就是已经存在一个点指向他,这个实际上我们是可以 \(\text{dp}\) 的。

首先入度为 \(0\) 的点的个数是可以证明必然小于等于 \(15\) 的,所以是可以状压的,我们考虑状压当前哪些入度为 \(0\) 的点是已经可以进行拓展操作了。

然后如果不改变激活状态可以乘上系数 \(cnt_{S}−i\) ,如果改变了激活状态,枚举下一个加的点并转移。

太酷了,sjy NB !!!

CF1606F Tree Queries

突然觉得是可以 \(\text{dp}\) 的,我们考虑在 \(k\) 固定的情况下怎么搞。

我们定义 \(f_{u}\) 表示子树 \(u\) 的最大答案是多少。

\[f_u=\sum_{v\in Son_u}\max(1,f_v-k)\\ \]

哦,然后这个 \(\text{trick}\) 应该就是离线下来之后随着 \(k\) 的变大,\(\max\) 的取值在 \(k\) 超过一个值之后就固定了。跟 P7897 [Ynoi2006] spxmcq 很像。

对,然后用一个类似于堆的东西维护会改变取值的 \(k\) 的临界值并修改,然后离线查询就行了。

CF555E Case of Computer Network

定向无向图要使得所有的给定的点对 \((s,t)\)\(s\) 都可以到达 \(t\) ,只需要输出是否可行。

哦,感觉就是求一个割边,然后判断割边是否会被定向两个方向就行了吧。

我竟然被万老爷提示才做出来,我是猪。

CF1499F Diameter Cuts

咦,一眼树上 \(\text{dp}\) ,感觉细节颇多。

感觉这个直径不是很能在 \(\text{dp}\) 过程中维护。。。哦,我悟了,就直接是两个点集并在一起的直径维护方式就行了,每次加入一个点,但是这样我的状态数是 \(O(n^3)\) 的。

哦,由于我们每次是将两个有边连着的点并在一起的,所以我们实际上只需要维护两个中最深的点是多深就行了,同时在合并过程中满足不会超过 \(k\) 即可。

如果暴力合并的话,合并的复杂度是类似于树上背包的。

感觉可以长剖优化,但是有点忘记了,我先去回忆一下。

我们考虑轻儿子暴力枚举其深度,我们的要求是重儿子深度 \(x\) 和轻儿子深度 \(y+1\) 的和 \(\le k\) ,并且将方案数放在 \(\max(x,y+1)\) 的位置上。

这个我们考虑用线段树维护重链,然后分类查询即可。

应该是可以低于 \(O(n^2)\) 的。

CF1088D Ehab and another another xor problem

观察到 \(a,b\le 2^{30}\) ,而询问可以有 \(62\) 次,应该是需要我们两步左右确定一位。

考虑从高到低确定,然后每次扰动一下就行了吧,应该是需要分类讨论的。

我们令 \(a=p2^i+m,b=q2^i+n\) ,应该是可以分讨出来的。

P4755 Beautiful Pair

感觉是要对于右端点,维护左端点的情况。

\[\text{res}=\sum_{i=1}^n\sum_{j=1}^i[\lceil\frac{\max_{k=j}^ia_k}{a_j}\rceil\ge a_i] \]

我们考虑每次加入一个位置的时候,实际上就是给我们一段后缀更新其 \(\max\)

哦,然后我们可以用 \(\sqrt a_i\) 的时间找到所有可能的 \(\lceil\frac{a_i}{a_j}\rceil\) 的取值。


绷不住了,万老爷用 \(20s\) 直接秒了。

我觉得我需要换一个思路,考虑类似于 \(\text{cdq}\) 分治的思路来搞?

应该是建出笛卡尔树之后用启发式合并来搞就行了吧。

然后发现实际上应该是不需要建出笛卡尔树的,因为子树就是对应一段区间。然后我们直接用主席树来维护应该就是可以的了。

CF1205D Almost All

卧槽,什么弔题?

首先我们考虑简单一点的,如果我们要使得 \([a,(n-1)a]\) (公差为 \(1\) )全部在根到节点的路径上出现一次,怎么搞?

就考虑将权值分配到每一个子树中,利用边来调整权值,这样就可以递归求值了。

再来考虑如何使得这个上界继续向上提,发现实际上就是需要利用到多个孩子两两之间的贡献。

如果考虑两组,其中一组为 \([1,size_a-1]\) (公差为 \(1\) ),另一组为 \([size_a,size_a\times (size_b-1)]\) (公差为 \(size_a\) ),那么这两组结合之后就可以产生 \([1,size_a\times size_b-1]\) (公差为 \(1\) ),也就是说如果将 \(size_a\times size_b-1\ge \lfloor \frac{2n^2}{9}\rfloor\) ,实际上我们就完成了题目的要求了。

这里我们必然考虑重心,我们需要满足的要求就是使得两个组的差不超过 \(\frac{n}{3}\) ,这里我们实际上可以直接考虑从大到小塞入每一个重心的子树,谁小分配给哪一个,这样应该可以使得两者的差最小。

CF1056E Check Transcription

卧槽,什么弔题?

首先,我们考虑暴力一点的做法,我们可以枚举第一个数字所对应字符串的长度,然后暴力 \(\text{check}\) 是否正确。这个复杂度应该是 \(O(|s||t|)\) 的,必然过不了。

但是你仔细揣度一下,如果我们枚举出现次数多的那个数字所对应的串的长度,长度上界实际上只需要枚举到 \(\frac{2|s|}{|t|}\) ,再结合每一次 \(\text{check}\)\(O(|t|)\) 的话,复杂度就是 \(O(|s|)\) 的。

P2605 [ZJOI2010]基站选址

首先这个数据范围非常之奇怪,感觉大概推断不出来什么东西。xza

首先我们来一个暴力一点的 \(\text{dp}\) ,考虑 \(f[i][j][k]\) 表示到第 \(i\) 个村庄,上一个基站设在第 \(j\) 个村庄,同时已经设了 \(k\) 个基站的方案数。

这样的话每加入一个村庄就只有两种选择,放基站或不放,贡献直接计算即可。

考虑到这样必然是过不了的,我们考虑优化。

发现你用线段树将第二维优化掉就行了,好像有点细节,但是问题不太大。

CF321E Ciel and Gondolas

四边形不等式优化是满足决策单调性的。

考虑这里是属于他转移,从 \(k-1\)\(k\) 的他转移,应该是可以使用分治算法的。

好像还可以 \(\text{wqs}\) 二分。

P7317 [COCI2018-2019#3] Praktični

一个常见套路就是建出一个生成树,然后对于所有环,必然可以通过若干仅有一条非树边的环异或得到,所以我们使得所有仅有一条非树边的环异或和为 \(0\) 即可。

又由于我们的单次操作是可以选择很多个位置的,所以我们只需要判断若干不同的数的最优方案是什么(即可以去重),然后可知利用线性基构造是最优的方案。

CF1495F Squares

首先,如果我们考虑将两种转移变成边,那么我们就会得到一个 \(\text{DAG}\) 。相当于是问我们走过钦定的若干个点之后走到唯一的出度为 \(0\) 的点的最小代价。

发现我们一定是按照顺序从左往右走的,也就是说答案实际上就是相邻两个点之间的最小代价求和。

我们能否一开始就将所有需要求的相邻点对找出来,然后离线查询之后再统计答案?感觉是可行的。对于离线询问,我们就考虑维护前缀每一个点到这个点的最短距离。考虑两种转移对于答案的贡献。应该不太可行。

感觉我们可以用 \(\text{LCT}\) 维护最短路树,然后查询最短路即可。(膜拜涛神)


没救了,题解应该是唯一做法。

尝试自己搞一下。


哇,是非常神奇的构造,你考虑建出一棵树,这棵树的边的定义和题目的第二种边正好相反,每一个点找到其前面的第一个大于其的点。

我们认为一个点走 \(i\rightarrow i+1\) 的边,就认为 \(i\) 被选择了。可以发现,如果一个点被选择了,那么其所有的在刚才那棵树上的祖先就一定是被选择的,原因非常显然,我们找到深度最浅的没有被选择的点,由于其上面的点都被选择了,那么其必然是会被走到了,所以如果没有走第一类边的话就走了另一种边,那么就一定会跨越 \(i\) 这个点(结合定义可知)。

那么显然的,如果我们必须要经过一个点,那么其祖先节点就一定需要被选。于是权值的计算就十分显然了。

\[\text{res}=\sum_{u\in S}a_u+\sum_{u\not\in S,fa_u\in S}b_u \]

如果我们令 \(c_u=-b_u+a_u+\sum_{v\in Son_u}b_v\) ,那么易得:

\[\text{res}=\sum_{u\in S}c_u \]

然后我们要使得 \(\text{res}\) 的值最小,发现这个东西和我们之前求的一个最小连通块的权值和十分相似。实际上两者是可以转化的。

我们令 \(dp_u\) 表示以 \(u\) 为根的子树与 \(u\) 相连的向下的最小连通块是什么。

那这个东西好像很好转移,

\[dp_u=c_u+\sum_{v\in Son_u}\min(dp_v,0) \]

我们用刚刚的 \(\text{trick}\) ,令 \(d_u=-\min(dp_u,0)+c_u+\sum_{v\in Son_u}\min(dp_v,0)=\max(dp_u,0)\)

然后就行了。


以后 6666 字为一篇,超过就新开,完结撒花!

posted @ 2021-11-10 21:18  Point_King  阅读(81)  评论(0)    收藏  举报