05 2024 档案

摘要:原题链接 一步一步来 1.假设D为1,你要怎么求? 每个点乘地铁的时间是唯一的,也就是说,如果我一开始先走一段路到A点再坐地铁,等价于我直接坐地铁到A点,下地铁的瞬间再次上车。 所以最优路径一定可以是先从起点乘地铁到某个点,然后再一直走路到终点 因此我们可以遍历 S 的每个点,求出在该点下车 阅读全文
posted @ 2024-05-29 20:07 纯粹的 阅读(44) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 贪心,我管这种叫做策略贪心,即按照某种顺序或者角度去贪心可以得到最优解 既然题目要求任意两点间最短路最小的同时,价格也最小,那么我们就按长度为第一关键字,花费为第二关键字排序。然后遍历所有边看看这条边能否使用 遍历过程的策略: 如果这条边加入后,这条边两端的节点之间的距离不变。 如果 阅读全文
posted @ 2024-05-29 13:42 纯粹的 阅读(47) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 一句话总结:使得 (i,j) 内的元素为1,且为所在列的唯一一个1,需要翻转哪些行? 在我看来,用了 随机概率异或哈希 code #include<bits/stdc++.h> #define ll long long using namespace std; mt19937 阅读全文
posted @ 2024-05-28 19:34 纯粹的 阅读(59) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 发现一串数字的lcm一定大于等于这一串数字的最大值,所以如果整个数组的lcm大于 amax ,直接输出n 否则,注意这里的思维,否则,剩余数字组成的lcm一定小于等于 amax 且是 amax 的因子 code #include<bits/s 阅读全文
posted @ 2024-05-28 17:19 纯粹的 阅读(55) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 数组内是否存在两个数,使得数组内所有元素都是它们俩其中之一的倍数 1.最小的元素肯定要选,因为没人是它的倍数 2.把所有能被最小元素整除的元素去掉之后,再选一个最小数 code #include<bits/stdc++.h> #define ll long long using na 阅读全文
posted @ 2024-05-28 16:50 纯粹的 阅读(9) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 和破环成链的过程很像 code #include<bits/stdc++.h> using namespace std; int a[105]; int main() { int t; cin>>t; while(t--) { int n; cin>>n; int flag=0; f 阅读全文
posted @ 2024-05-28 16:41 纯粹的 阅读(16) 评论(0) 推荐(0) 编辑
摘要:原题链接 开始 敲代码前问问自己:如何证明你的算法的正确性? 启发 我们一开始在节点1,假如有abcd四条边,且我们已知 从每条边出发到达终点的最短距离 a<b<c<dd[1]=3 请问我们要封 节点1 的哪条边? 答案显然是abc 那么好接下来我们走边d,假设到达了节点3,我 阅读全文
posted @ 2024-05-27 23:31 纯粹的 阅读(25) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 由易到难,先不考虑交替的事情,既然要尽量少的涂色,那么我最少要涂几条颜色的边?(由于图不一定联通,这里先考虑连通图的情况) 如果一条边处于一个环内,那么这个边就可以不涂色。 所以只要有环我就可以选择一条边不涂色,那么到最后,涂色的边构成一棵树 接下来考虑这颗树能否实现红蓝交替 要满足 阅读全文
posted @ 2024-05-24 21:54 纯粹的 阅读(56) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 有点像拓扑排序 拓扑排序怎么做来着?首先找老祖节点对不对?老祖节点有什么特性? 入度为零 而在无向图中,我们把叶子节点看成老祖节点,它们有什么特性? 连接的边只有一条 code #include<bits/stdc++.h> using namespace std; vector<i 阅读全文
posted @ 2024-05-24 21:25 纯粹的 阅读(10) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 定义 dp[i] 为今天有 i 元钱花时,明天卖能纯赚多少钱(这里有一个递归的思想,不需要考虑 dp[ka[i][j]] 能否买得起今天的产品) 如果 dp[i1]=k 那么 dp[i]k ,所以存在一个 i 使得钱全部花 阅读全文
posted @ 2024-05-24 20:53 纯粹的 阅读(23) 评论(0) 推荐(0) 编辑
摘要:原题链接 请跟着我假设的情景走: 我现在随便拿一块砖 A 放在地上,接着我又拿了一块砖 B 请问,B 是放在 A 上面好,还是放在 A 下面好? 分类讨论 b.v<a.w,a.vb.w 此时 B 能且只能放在 A 的上面, 阅读全文
posted @ 2024-05-23 14:35 纯粹的 阅读(10) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 设 Ei 为树根到高度为 i 的点的期望用时 Pii1i 时,掉下去概率 则有 Ei=Ei1+1+(1Pi)0+PiEi 式子解读: 当我花一单位时间到i点时,有p的概率 阅读全文
posted @ 2024-05-22 21:09 纯粹的 阅读(13) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.请务必读清题干意思 2.如果以最顶端积木的位置为状态,是可以穷尽所有情况的,则状态为 dp[i][l][r] ,最顶端第 i 层只在区间 [l,r] 内连续放置积木有几种方法 3.状态转移方程 $dp[i][l][r]=\sum_1^l \sum_r^m 阅读全文
posted @ 2024-05-22 18:05 纯粹的 阅读(14) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 观察到h不大于1e5,于是拿h做文章 如果想要在第 i 个月的幸福值达到 j 那么第 i1 个月的幸福值一定能达到 jhi 而且 cost[i1][jhi]+cix·(i1) 记得用滚动数组优化,因为这里 \( 阅读全文
posted @ 2024-05-22 16:35 纯粹的 阅读(49) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 假如最后有 k 个月购买过幸福,那么这 k 个月的价格一定是前 k 小的 code #include<bits/stdc++.h> #define ll long long using namespace std; int main() { ios::sync 阅读全文
posted @ 2024-05-22 16:24 纯粹的 阅读(19) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 我一开始想着二位前缀和+模拟,但是看到ab发现空间不够 观察到nm的数据范围限制 也就是点和查询的数量限制,考虑用优先队列把各个方向的点存起来以表示各个点的使用顺序,再用map嵌套表示各个点的使用情况 空间复杂度 O(n) 时间复杂度 \(O(T(mlogn+nlogn))\ 阅读全文
posted @ 2024-05-21 17:43 纯粹的 阅读(15) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 code #include<bits/stdc++.h> using namespace std; #define ll long long const ll mod=1e9+7; ll a[7][7]={0},e[7]={0}; void cf1() { ll tem[7]={0} 阅读全文
posted @ 2024-05-20 19:30 纯粹的 阅读(9) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 由于选择每一条路径的概率是一样的,所以我们统计出所有路径的条数,和长度之和,然后除一下就行了,除法求模等价于乘模数下的逆元 code #include<bits/stdc++.h> using namespace std; #define ll long long const ll 阅读全文
posted @ 2024-05-20 17:45 纯粹的 阅读(6) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 一句话总结:第 i 头奶牛继承场上 k 头奶牛里结束时间最短的 code #include<bits/stdc++.h> using namespace std; int n,t; int d[100005]; int check(int k) { priority_ 阅读全文
posted @ 2024-05-20 13:19 纯粹的 阅读(19) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 反悔贪心 把工作按截至时间排序,每个工作有两个决策。 如果这个工作有时间做,那就做; 如果没时间做,就在已经做过的工作里取消价值最小的工作,换成当前工作(这里有一个前提,那就是每个工作需要的时间是一样的,而且当前工作的价值大于已经做过工作里价值最小的) code #include<b 阅读全文
posted @ 2024-05-20 12:59 纯粹的 阅读(22) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 注意数据范围 1.我们不知道要在哪些地方建站,所以考虑都遍历一遍 2.如果一个地方 i 要建站,那么在它前面且离它最近的一个站,一定建在所有右端点大于 i 的区间中,左端点最大区间里 所以我们令 dp[i] 表示为在 i 建立一个站,且和 \([1,i 阅读全文
posted @ 2024-05-18 16:57 纯粹的 阅读(49) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.每一天只有二种决策,第一是不买,第二是当天买过几天抛 第二种决策等价于当天买入第二天抛,原理如下 对于一只股票,我们在第 i 天买第 j 天卖,其效果可以被看为在第 i 天买,第 k 天卖 𝑖𝑘𝑗,当天再买回来,第 j 阅读全文
posted @ 2024-05-18 15:51 纯粹的 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 题意提醒: 这里的时间段要抽象成点,比如 [1,1],[2,2] 实际上是相连的!! 1.朴素想法,每头牛要么值班要么不值班, 搜索遍历所有情况 O(2n) 2.稍作修改,如果一头牛值班,那么在它值班结束时间之前值班的牛的数量一定是最优的,o(nT) 3 阅读全文
posted @ 2024-05-17 16:40 纯粹的 阅读(23) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.朴素想法:链表存储+每次遍历一遍找出最小对 缺点:时间复杂度过高 改进措施:每次遍历一遍,只会挑走一对,剩下的会重复遍历,所以我们把所有的对都找出来放进堆里,每次挑出第一个没有被用到过的对 注意审题 code #include<bits/stdc++.h> using names 阅读全文
posted @ 2024-05-17 15:52 纯粹的 阅读(11) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 观察一个二分图会发现 同一组的节点不直接相连 二分图能够建立的最多的边等于 nm code #include<bits/stdc++.h> using namespace std; #define ll long long vector<ll> G[100005]; ll 阅读全文
posted @ 2024-05-16 20:34 纯粹的 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 真的bt啊 由于m没有限制所有测试用例的总和,所以m可以近似看为1e9,也就是说,除了输入以外,不能有任何对m的处理(常数乘上1e9) 考虑菊花图,任意两点之间最多只有一个陌生点,而且 m<n 所以找出那个没有出现过的中间点,作为菊花图的中心 md!!构造题!! cod 阅读全文
posted @ 2024-05-16 20:16 纯粹的 阅读(4) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 很巧妙,把等式移项之后,ab差最大的就是答案 code #include<bits/stdc++.h> using namespace std; #define ll long long struct node { int a,b,df,id; }c[200005]; bool cm 阅读全文
posted @ 2024-05-16 19:27 纯粹的 阅读(6) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 犯了对变量定义不清晰的错误 code #include<bits/stdc++.h> using namespace std; #define ll long long ll a[300005]={0}; vector<int> G[1005]; int dp[1005]={0};/ 阅读全文
posted @ 2024-05-16 18:41 纯粹的 阅读(3) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 你怎么能在地图都没有输入完成的情况下判断呢? code #include<bits/stdc++.h> using namespace std; string s[505]; int xx[4]={0,-1,1,0},yy[4]={1,0,0,-1}; int main() { in 阅读全文
posted @ 2024-05-15 21:49 纯粹的 阅读(4) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 思考这类问题之前先考虑完成目标有几种方法,再考虑方法的可行性 code #include<bits/stdc++.h> using namespace std; int a[1005],b[1005]; int main() { int n,m; cin>>n>>m; for(int 阅读全文
posted @ 2024-05-15 21:48 纯粹的 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.多根树结构,但是将-1的点设为0的子节点,就变成了单根树 2.仔细读题!!!只要同一链上的就不能在一个组里 code #include<bits/stdc++.h> using namespace std; int depth[2005]={0}; vector<int> G[2 阅读全文
posted @ 2024-05-15 21:16 纯粹的 阅读(8) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.已知如果两个点之间有两条边不重合的路径,那么这两个点就在一个边强连通分量里,所以我们可以把处于同一个边强连通分量的点缩起来 在这里,我忘记了怎么求边强连通分量,所以我再提醒一下自己 已知树结构是不存在强连通分量的,它的特性是深度大的节点只有一条回到深度小的节点的边,所以我们深度搜 阅读全文
posted @ 2024-05-15 19:05 纯粹的 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.经过样例证明,双方的交换策略一定是自己最小值去换对面最大值 2.双方交换的最大值一定局限在双方各自初始最大值之间,最小值也是 code #include<bits/stdc++.h> #define ll long long using namespace std; int ma 阅读全文
posted @ 2024-05-15 14:10 纯粹的 阅读(5) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 突破口:我要让bob早点没得减,我肯定选最小的那个 code #include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { int n; cin>>n; int x; cin 阅读全文
posted @ 2024-05-15 13:11 纯粹的 阅读(8) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 easy.ver::只能朝一个方向走,还剩奇数个格子时先手获胜 medium.ver: 令 ui 为根节点,这样就只能朝子节点的方向走,设 dp[now] 为当以now为根的树,且now节点已经有一颗棋(其子节点均还没有)时,先手必胜1还是必败0,状态转移方程:\( 阅读全文
posted @ 2024-05-14 20:43 纯粹的 阅读(105) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 给定一个数组,你知道怎么计算最终答案吗? 设数组大小为 n,数组中的最小值为 x,大于最小值的个数为 pans=nx(n1)+pp[0,n1] 所以 x 越大,ans 越大 二分的前置条件有了 二分 \(x 阅读全文
posted @ 2024-05-14 19:16 纯粹的 阅读(14) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.在一次op后,哪些东西发生了变化?哪些东西没变? 2.题目要求当一个u都没有的时候先手输,那么我一次op能减几个u? 3.通过分类讨论发现一次op总是使u的数量加减一个奇数,所以如果alice要赢,那么起始u的数量必须是奇数 code #include<bits/stdc++.h 阅读全文
posted @ 2024-05-14 18:45 纯粹的 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 从小正方形到大正方形,有四个变化方向,分别是左上、右上、右下、左上。 分类讨论模拟即可 code #include<bits/stdc++.h> using namespace std; int main() { int n,x,y; cin>>n>>x>>y; puts("Yes" 阅读全文
posted @ 2024-05-14 18:31 纯粹的 阅读(11) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.异或规则为不进位加法,可以看作位运算 2.查找的时间复杂度必不能高,log161018·2e5 2.所以,补齐前缀0,这样就能用字典树了 code #include <bits/stdc++.h> using namespace std; #defin 阅读全文
posted @ 2024-05-14 14:07 纯粹的 阅读(34) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 看清楚题目,是三个人都坐在同一辆校车!! code #include<bits/stdc++.h> #define ll long long using namespace std; vector<ll> G[200005]; ll depth[200005]={0}; void d 阅读全文
posted @ 2024-05-14 12:48 纯粹的 阅读(6) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 太巧妙了!!! code #include<bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; int r=0,b=0,y=0; for(int i=1;i<=n;i++) { string s; 阅读全文
posted @ 2024-05-14 12:35 纯粹的 阅读(6) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.如果轮到我时场上有 n 颗石子,那么在我操作一步之后石子的范围是 [n+1,2n] 2.如果轮到我时,场上有 k/2(1k 颗石子,那么轮到对方走的时候,对方一定能走到k 3.记录所有 k/2(1k 如果存在一个 \(k_i=n 阅读全文
posted @ 2024-05-14 12:26 纯粹的 阅读(13) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.复杂问题简单化,把字符用数字代替 2.每次替换都会减少一个字符,到最后一定是由两个字符合成一个字符,并且这两个字符的来源区间不相交 3.相同区间不同的合并方式,最后生成的字符也不同,所以dp多加一个状态 4.题目只问能否合成对应字符 code #include<bits/stdc 阅读全文
posted @ 2024-05-13 19:12 纯粹的 阅读(9) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.常见思路: dp[l][r] 为把 [l,r] 内的元素全部消掉留下一个元素的值,然后枚举中间点 但是这样内存不够,观察到 ai[1,40] ,我们可以换个思路,由于区间 [l,r] 内全部消掉留下一个元素的值 v , 其中 \ 阅读全文
posted @ 2024-05-13 18:08 纯粹的 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 关键因素:bibi1 至少有一位都是一 这是我第一份代码 #include<bits/stdc++.h> using namespace std; int a[100005],dp[100005]={0}; int main() { int n; ci 阅读全文
posted @ 2024-05-13 14:59 纯粹的 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 第 i 朵花的选择范围为 [i,mn+i] ,而它一定是由第 i1 朵花的某种选择继承而来的 code #include<bits/stdc++.h> using namespace std; int n,m; int dp[105][105]={0},p 阅读全文
posted @ 2024-05-13 13:45 纯粹的 阅读(5) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.考虑到每个牛只有选或不选两种选择,这样暴力搜索的思路便产生了 2.还是上面的思路,怎么优化呢? 想想背包数组,其下标是什么?是体积 其值是是什么?是价值 是在体积相同的情况下选择价值最高的,本题也是,最优解一定是相同智商里情商最高的 3.价值和体积都是负数,怎么解决? code 阅读全文
posted @ 2024-05-13 13:07 纯粹的 阅读(21) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.把字符串倒过来,记作 S1 其最大公共子串是回文串,所以这部分可以不用求,字符串长度减去最大公共子串的长度就是答案 2.怎么求最大公共子串的长度呢? 假设我们已经知道字符串a和字符串b及其所有子串的lbs,此时往字符串b末尾添加一个字符c变成字符串b1,而字符串a中以最 阅读全文
posted @ 2024-05-08 17:08 纯粹的 阅读(80) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 细节很多,看代码 code #include<bits/stdc++.h> using namespace std; string s; int num; int vis[55][100005]={0}; int ans[55][100005]={0}; int sou(int po 阅读全文
posted @ 2024-05-08 13:21 纯粹的 阅读(15) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 分解n的质因子,如果为奇数就补一个 由于大于 n 的质因子最多不超过一个,所以我们筛小于 1e6 的质数 code #include<bits/stdc++.h> #define ll long long using namespace std; vec 阅读全文
posted @ 2024-05-08 12:03 纯粹的 阅读(22) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.相当于把n个数的因子重新组合,使得组合为一体的数是强合数,经过试验发现,最少两个相同质因子就能合成一个强合数,最少三个不同质因子就能合成一个强合数,所以我们统计所有数的所有质因子个数 2.统计质因子用到了递归的方法,我们先筛合数,标记合数的最小质因子,然后逐层递归 code #i 阅读全文
posted @ 2024-05-07 17:46 纯粹的 阅读(10) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.数组最大能开到1e8 2.vector比数组容易mle 3.筛素数的时间复杂度是O(n) 4.由于一个数最多有 log2(n) 个因子,我们标记每一个合数的最小质因子,然后直接除就行(递归思想?) code #include<bits/stdc++.h> #define 阅读全文
posted @ 2024-05-07 14:23 纯粹的 阅读(33) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 关键因素:任何合数都可以分为最小质数乘上另外一个数 code #include<bits/stdc++.h> using namespace std; vector<int> ans; int main() { ios::sync_with_stdio(false); cin.tie 阅读全文
posted @ 2024-05-07 13:59 纯粹的 阅读(9) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 如果最小整除的数不是质数,那么把第一个数中的因子分出去,它就不是最小数 code #include<bits/stdc++.h> #define ll long long using namespace std; map<ll,ll> vis; int main() { int n; 阅读全文
posted @ 2024-05-07 12:25 纯粹的 阅读(25) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 如果第一个出场的是 2 那么,接下来只能用 2 和大于零的数 如果第一个出场的是 1 那么,接下来只能用 1 和大于零的数 如果第一个出场的是大于零的数,那么接下来的 1 可以补全其左边的空,2 可以补全其右边的空 code 阅读全文
posted @ 2024-05-07 11:29 纯粹的 阅读(3) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 有一个隐含逻辑,n个程序员会齐心协力地使保留的算法不止一个 当 mn 时,每个程序员各投一个,这样保留了n个算法 当 m<n 时,如果想要不止保留一个算法,那么最后保留的算法一定能被n整除,也就是说,n一定有一个因子小于m code #includ 阅读全文
posted @ 2024-05-06 17:42 纯粹的 阅读(11) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.如果 xy>x ,则 y 的最高位对应的 x 一定是 0 2.f(x,y)f(y,z)>f(x,z) 等价于 f(x,z)ay>f(x,z) 3.\(x \in 阅读全文
posted @ 2024-05-04 21:06 纯粹的 阅读(37) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.二分查找前缀出现次数,用 kmp 优化查找算法 code #include<bits/stdc++.h> using namespace std; char s[200005]; int pre[200005]={0},occ[200005]={0}; int n,x; 阅读全文
posted @ 2024-05-04 19:53 纯粹的 阅读(18) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.如果能分成偶数个区间,那么一定能分为两个区间 2.如果能分为奇数个区间,那么一定能分为三个区间 3.能分为两个区间,说明区间异或和为 0 4.能分为三个区间,这三个区间分别为区间 a,b,c ,则 ab 区间异或和为零, bc 区间异或和为零 co 阅读全文
posted @ 2024-05-04 19:50 纯粹的 阅读(20) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 集合内元素最大不超过 2n1 ,最小不小于 1 如果按对角线排列,则可以得到所有偶数,把其中一颗棋子往旁边移,可以得到所有奇数 code #include<bits/stdc++.h> using namespace std; int main() { int t; 阅读全文
posted @ 2024-05-04 19:43 纯粹的 阅读(24) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示