acm选修课——贪心技术

  • 贪心技术简介
  • 案例1:桥
  • 案例2:安放雷达
  • 案例3:合并果子(相当于哈夫曼树,哈夫曼编码)
  • 案例4:判断一个数是否可以分解为阶乘和

贪心技术简介

局部解是最终解的一部分
在这个基础上继续解更多的解

优点:不用回溯,效率高

案例1:桥

POJ题目链接
题意:
有N个人过桥,每个人单独过桥花 t i 时间
天黑要手电筒,他们只有一个手电筒
这桥最多容纳两人同时过,取慢者的时间计
求过桥最短时间
(1 ≤ N ≤ 50) (ti are integers from 1 to 100).

一道有名的老题,曾经公司面试题,一万人面试只有4个人做出来

思路:
(先排序)

贪心想法1:
是不是可以让用时最短的一一把人都送过去呢?
这样子时间就是
∑\sumti (i从2到n)+(n-2)t1

问题是
这样子就让时间占的多的都去了一遍
不如让时间占的多的一起上,两次换成1次
那么我们让时间最短次短的送手电筒,先一起去之后分开回来

这样子把最短次短的送过去时间是
t2+t1+tn+t2

但是我们不能不证明,仅凭一般感觉下结论,后者一定好

比较:
前者定量
送一个:
tn+t1
送两个:
tn+t1+tn-1+t1
后者定量:
送两个:
t2+t1+tn+t2
(送一个也这样,就浪费了时间)

可以看到,
送一个,第一种好
送两个,比较
tn-1+t1

2 * t2
一般是tn-1+t1大,但是还是要判断的

最后只有三个时
由于
t2+t1比2 * t2 小,不用特判

但是我们还可以发现
只要开始
tn-1+t1<2 * t2
则之后就更小了
所以我们只要判断一次
即开始按贪心2每次减2
之后按贪心1每次减1

AC代码:
开始样例错了
是没发现我们只要判断一次,最后几种情况乱了
又错
是最后只有2个人时只要取t[2]
wa了一次,注意特判只有一个时,取t[1]

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<algorithm>
//#include<string>
//#include<sstream>
//#include<vector>
//#include<map>
//#include<set>
//#include<ctype.h>
//#include<stack>
//#include<queue>
#ifdef LOCAL
FILE*FP=freopen("text.in","r",stdin);
//FILE*fp=freopen("text.out","w",stdout);
#endif
using namespace std;
#define ll long long
#define ld long double
#define pii pair<int,int>
#define piii pair<int,pii>
#define pll pair<ll,ll>
#define plll pair<ll,pll> 
#define vi vector <int> 
#define vii vector <vi> 
#define st first
#define nd second
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))
#define _forplus(i,a,b) for( register int i=(a); i<=(b); i++)
#define forplus(i,a,b) for( register int i=(a); i<(b); i++)
#define _forsub(i,a,b) for( register int i=(a); i>=(b); i--)
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define pi (acos(-1))
#define EPS 0.00000001
#define MOD 1000000007
#define fastio 	std::ios::sync_with_stdio(false);std::cin.tie(0);
#define N 55
int t[N];
int main(){fastioint n;cin>>n;t[0]=0;_forplus(i,1,n){cin>>t[i];}if(n==1){cout<<t[1]<<endl;return 0;}sort(t+1,t+1+n);int sum=0;while(n>2){//最后两个可以一起过 if(2*t[2]>t[1]+t[n-1]){break;}//跳到第一种贪心sum+=t[1]+2*t[2]+t[n];n-=2;//第二种贪心 }while(n>2){sum+=t[1]+t[n];n--;} sum+=t[2];cout<<sum<<endl;return 0;
}

案例2:安放雷达

POJ题目链接
题意:
有N个海岛,雷达射程为d
给出海岛坐标
求,要在海岸线上至少装多少雷达
如果不能,输出-1

有多组样例,输出标出case i
输入 N=0 d=0 结束

(1<=n<=1000)

分析:
贪心法找最大包含,之前写过一个二分+贪心的题
https://blog.csdn.net/qq_51945248/article/details/115607474

先勾股定理求出
各岛对应海岸线上的雷达安放左右范围
(如果没有范围,就是不存在了,但数据还是要读完)
从左向右看各岛
如果范围内有雷达,就可以
如果没有,就在最右点放一个,因为这样最可能在之后更右边的岛的范围内
雷达数也加1

AC代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<algorithm>
//#include<string>
//#include<sstream>
//#include<vector>
//#include<map>
//#include<set>
//#include<ctype.h>
//#include<stack>
//#include<queue>
#ifdef LOCAL
FILE*FP=freopen("text.in","r",stdin);
//FILE*fp=freopen("text.out","w",stdout);
#endif
using namespace std;
#define ll long long
#define ld long double
#define pii pair<int,int>
#define piii pair<int,pii>
#define pll pair<ll,ll>
#define plll pair<ll,pll> 
#define pdd pair<double,double>
#define pdi pair<double,int>
#define pid pair<int,double>
#define vi vector <int> 
#define vii vector <vi> 
#define st first
#define nd second
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))
#define _forplus(i,a,b) for( register int i=(a); i<=(b); i++)
#define forplus(i,a,b) for( register int i=(a); i<(b); i++)
#define _forsub(i,a,b) for( register int i=(a); i>=(b); i--)
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define pi (acos(-1))
#define EPS 0.00000001
#define MOD 1000000007
#define fastio 	std::ios::sync_with_stdio(false);std::cin.tie(0);
#define N 1005
pii dao[N];
pdd an[N];
istream& operator >> (istream&input,pii&t){input>>t.first>>t.second;return input;
}//1.重载参数 2.t不是指针 
bool cmp(pdd a,pdd b){return a.second<b.second;
}
int main(){fastioint n,d,cnt=0;while(cin>>n>>d,n||d){int flag=1;//默认都合理 _forplus(i,1,n){cin>>dao[i];if(abs(dao[i].second)>d)flag=0;}if(!flag){cout<<"Case "<<++cnt<<": -1"<<endl;}else{_forplus(i,1,n){int x=dao[i].first;double dx=sqrt(d*d-dao[i].second*dao[i].second);//不要忘了sqrt,到处对要用心 an[i].first=x-dx; an[i].second=x+dx; }sort(an+1,an+1+n,cmp);int ct=1;double now=an[1].second;_forplus(i,2,n){if(an[i].first>now){ct++;now=an[i].second;}}cout<<"Case "<<++cnt<<": "<<ct<<endl;}}return 0;
}
还有复习一下重载:
istream& operator >> (istream&input,pii&t){input>>t.first>>t.second;return input;
}//1.重载参数 2.t不是指针 

WA了两次,原来是想到sqrt就以为自己写上了,结果没有写上
真是低级错误,要用心
多亏了评论区的这个数据
不过其实就算是拿样例调试,数据也有不同的

2 5
-3 4
-6 34 5
-5 3
-3 5
2 3
3 320 8
-20 7
-18 6
-5 8
-21 8
-15 7
-17 5
-1 5
-2 3
-9 6
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 7
9 6
10 5
0 02 3
0 2
2 32 3
0 2
1 33 3
1 2
-3 2
2 48 5
2 4
-4 4
-3 3
-3 1
-3 0
-1 0
0 5
6 03 0
1 2
-3 1
2 13 2
1 2
-3 1
2 11 2
0 22 3
0 2
2 34 -5
4 3
4 3
2 3
6 -93 -3
1 2
-3 2
2 16 2
1 2
1 2
1 2
-3 1
2 1
0 01 2
0 22 3
0 2
1 33 10
1 10
2 3
4 53 5
1 10
2 3
4 54 7
1 10
2 3
4 5
0 03 9
1 10
2 3
4 5
0 0================结果
Case 1: 1
Case 2: 2
Case 3: 4
Case 4: 1
Case 5: 1
Case 6: -1
Case 7: 3
Case 8: -1
Case 9: 2
Case 10: 1
Case 11: 1
Case 12: -1
Case 13: -1
Case 14: 2
Case 15: 1
Case 16: 1
Case 17: 1
Case 18: -1
Case 19: -1
Case 20: -1
挥着翅膀的鳖 献上。。。
d<=0不需要判断
y<=0 不需要判断
把每个岛屿来当做雷达的圆心,半径为d,做圆,与x轴会产生两个焦点L和R,这就是一个区间;
首先就是要把所有的区间找出来,然后x轴从左往右按L排序,再然后就是所谓的贪心把那些互相重叠的区间去掉就行了,区间也就是雷达;

案例3:合并果子(相当于哈夫曼树,哈夫曼编码)

HOJ(湖南大学OJ)题目,NOI的中文题,没有校园网进不来的同学可到洛谷一叙
题意:
有n堆果子,
每堆果子质量 a i
(1 <= n <= 10000)
(1 <= ai <= 20000)

每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和
所有的果子经过n-1次合并之后,就只剩下一堆了
求最小的体力耗费值
保证这个值小于2的31次方

分析:
不难想到,排序不等式,
轻的多搬,重的少搬
而合并后是新的一堆
所以每次合并就是把最轻和次轻的合并

数据结构上:
为了方便,可以弄优先队列

为了高效,可以用两个数组,不用排序
一个a存原堆,从小到大排序
一个b存产生的堆,新产生的比老产生的大,因为原来轻的合并了,在变重了
每次只要判断从
a取2个,
a,b各取1个,
b取2个
里取最小值m,
相应地修改位置指针
sum+=m
同时m加到b里

进行n-1次,这是固定的

拓展:
哈夫曼树差不多就是这样
当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”
在这里,我们有N堆果子,正是在找带权路径长度最小的最优二叉树
方法差不多就是这样,多存一下节点就好

应用之一:哈夫曼编码
拿e,这个英语里用的最多的字母,用1个字节特定存储
拿z,这个英语里用的最少的字母,用8个字节特定存储
因为e用的多,所以经常在节省,总存储是最短的
这和传统的26个需要22222,5个字节不同
当然不一定是这个规则,是看该文本的各字符出现频率决定的
静态的就根据整个文本统计频率构造哈夫曼树
动态的是实时的,每一个字符来源于之前已有字符的哈夫曼树

回到正题:
我们为了减少判断边界
可以利用通用的判断规则
如这里的“墙”:a[n+1],a[n+2]=INF,就不会让a[n]+a[n+1],a[n+1]+a[n+2]有机会
b也是,开始都是INF,如果现在是第i次,合成就是i-1个,就不会让b[i-1]+b[i]有机会
而总共的n-1次,不受影响的

const int INF=(int)pow(2,30);//比0x3f3f3f3f大,不能代替 

但是我为了方便,还是用了优先队列。
——但是超时了,,,

priority_queue<int,vector<int>,greater<int> >q;
值得注意的是,优先队列的写法,默认降序,greater < int > 改变顺序
sort ,默认升序, greater< int > () 改变顺序
注意共同点是改变顺序,不同点是默认排序不同,
且语法上sort的比较多一个()
因为sort传的是真函数,priority_queue传的是仿函数,实际上是结构体
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<algorithm>
//#include<string>
//#include<sstream>
//#include<vector>
//#include<map>
//#include<set>
//#include<ctype.h>
//#include<stack>
#include<queue>
#ifdef LOCAL
FILE*FP=freopen("text.in","r",stdin);
//FILE*fp=freopen("text.out","w",stdout);
#endif
using namespace std;
#define ll long long
#define ld long double
#define pii pair<int,int>
#define piii pair<int,pii>
#define pll pair<ll,ll>
#define plll pair<ll,pll> 
#define pdd pair<double,double>
#define pdi pair<double,int>
#define pid pair<int,double>
#define vi vector <int> 
#define vii vector <vi> 
#define st first
#define nd second
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))
#define _forplus(i,a,b) for( register int i=(a); i<=(b); i++)
#define forplus(i,a,b) for( register int i=(a); i<(b); i++)
#define _forsub(i,a,b) for( register int i=(a); i>=(b); i--)
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define pi (acos(-1))
#define EPS 0.00000001
#define MOD 1000000007
#define fastio 	std::ios::sync_with_stdio(false);std::cin.tie(0);
#define N 100004
priority_queue<int,vector<int>,greater<int> >q;
int main(){fastioint n;cin>>n;int t;_forplus(i,1,n){cin>>t;q.push(t);}int sum=0,ta,tb,tc;_forplus(i,1,n-1){ta=q.top();q.pop();tb=q.top();q.pop();tc=ta+tb;sum+=tc;q.push(tc);}cout<<sum<<endl;return 0;
}

看来还是要减少排序时间啊。
Accepted 1212KB 62ms :

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<algorithm>
//#include<string>
//#include<sstream>
//#include<vector>
//#include<map>
//#include<set>
//#include<ctype.h>
//#include<stack>
#include<queue>
#ifdef LOCAL
FILE*FP=freopen("text.in","r",stdin);
//FILE*fp=freopen("text.out","w",stdout);
#endif
using namespace std;
#define ll long long
#define ld long double
#define pii pair<int,int>
#define piii pair<int,pii>
#define pll pair<ll,ll>
#define plll pair<ll,pll> 
#define pdd pair<double,double>
#define pdi pair<double,int>
#define pid pair<int,double>
#define vi vector <int> 
#define vii vector <vi> 
#define st first
#define nd second
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))
#define _forplus(i,a,b) for( register int i=(a); i<=(b); i++)
#define forplus(i,a,b) for( register int i=(a); i<(b); i++)
#define _forsub(i,a,b) for( register int i=(a); i>=(b); i--)
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define INF 0x3f3f3f3f
//const int INF=(int)pow(2,30);
#define LINF 0x3f3f3f3f3f3f3f3f
#define pi (acos(-1))
#define EPS 0.00000001
#define MOD 1000000007
#define fastio 	std::ios::sync_with_stdio(false);std::cin.tie(0);
#define N 100004
int a[N],b[N]; 
int main(){fastioint n;cin>>n;_forplus(i,1,n+2){b[i]=INF;}a[n+1]=a[n+2]=INF;_forplus(i,1,n){cin>>a[i];}sort(a+1,a+1+n);int sum=0,tc,pa=1,pb=1,cntb=1;_forplus(i,1,n-1){int flag=0;//0:2a,1:ab,2:2btc=a[pa]+a[pa+1];if(tc>a[pa]+b[pb]){flag=1;tc=a[pa]+b[pb];}if(tc>b[pb]+b[pb+1]){flag=2;tc=b[pb]+b[pb+1];}sum+=tc;b[cntb++]=tc;//别忘了加这个 if(flag==0){pa+=2;}else if(flag==1){pa++,pb++;}else{pb+=2;}}cout<<sum<<endl;return 0;
}

但是要声明一个问题:
我是不应该用0x3f3f3f3f的,它更小
自己都可以找到错误:

2
1073741823 1073741823
正确:2147483646
错误:2122219134
*10737418232^30-1

只能说测试数据不够给力
之所以没有用INF=230是因为越界
不过我们可以用INF=230-1吗?
给的是小于231
即可以给230,230-1的测试用例
还是不行
建议改unsigned int 或long long 后用INF=230

案例4:判断一个数是否可以分解为阶乘和

POJ题目链接
题意:
给你一个非负数n,问能否被分解乘若干个阶乘的和,输出"YES" or “NO”
(n <= 1,000,000)
输入-1结束

分析:
首先0是个特殊的
等下特判交两次解决

现在有三种方法:

  1. 打表,反正1,000,000内阶乘不多,每一个组合都是可以,没有弄到就不可以
  2. 动态规划01背包,
    对单个n,其容积为n,放入一个物品t!
    已知结果为m时可以,则m+t!也可以,只要m+t!不越界
    首先认为0是可以的,从0!开始加,到t!,也相当于打了一个表
    最后看n是否刚好是在结果中
  • 其实以上1.2.可能是互为补充
    因为我不知道1.中这么组合,好像是可以用01背包组合,就互为帮助
  1. 超递增序列的背包问题可以贪心
    超递增序列:
    ai>si-1的序列是严格超递增序列;
    ai>=si-1的序列是不严格超递增序列;
    如n!,2n,3n
    为什么该背包问题可以贪心?
    因为,从大到小放,
    如果能放下,那一定要,因为不放的话,之后所有的si-1也不会比这个ai更大了
    (刚好能放下,就都yes,忽略一种0!+1!情况不影响,比如2!和0!+1!,n=2)
    所以我们不会有回头路,能放就放,不能放就下一站。
    效率快了一个数量级!

OLE了一次,第一次OLE遇到
即输出超空间,即一直输出
原来有一个坑爹的地方:
The input is terminated by a line with a negative integer.
这不是-1!!!
我除了说认真读题还能说啥。。

几次wa:
1.是要特判的
2.特判就要continue;//不能忘了这个重复输出啊!!

Accepted 660K 63MS:

#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//#include<math.h>
#include<iostream>
//#include<algorithm>
//#include<string>
//#include<sstream>
//#include<vector>
//#include<map>
//#include<set>
//#include<ctype.h>
//#include<stack>
//#include<queue>
#ifdef LOCAL
FILE*FP=freopen("text.in","r",stdin);
//FILE*fp=freopen("text.out","w",stdout);
#endif
using namespace std;
#define ll long long
#define ld long double
#define pii pair<int,int>
#define piii pair<int,pii>
#define pll pair<ll,ll>
#define plll pair<ll,pll> 
#define pdd pair<double,double>
#define pdi pair<double,int>
#define pid pair<int,double>
#define vi vector <int> 
#define vii vector <vi> 
#define st first
#define nd second
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))
#define _forplus(i,a,b) for( register int i=(a); i<=(b); i++)
#define forplus(i,a,b) for( register int i=(a); i<(b); i++)
#define _forsub(i,a,b) for( register int i=(a); i>=(b); i--)
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define pi (acos(-1))
#define EPS 0.00000001
#define MOD 1000000007
#define fastio 	std::ios::sync_with_stdio(false);std::cin.tie(0);
#define N 1000005
int f[15],cnt;
void pre(){f[0]=1;_forplus(i,1,14){f[i]=f[i-1]*i;//	cout<<f[i]<<endl;if(f[i]>N){cnt=i-1;break;}}
}
int main(){fastiopre();//sort(f,f+cnt+1,greater<int>());排序下面就_forplus,现在弄混了。//为了减少复杂度,不排序 int n;//int c=0;while(cin>>n,n>=0){//cout<<c++;if(n==0){cout<<"NO\n";continue;//不能忘了这个重复输出啊!! }//特判 /_forsub(i,cnt,0){if(n>=f[i]){n-=f[i];}} if(n){cout<<"NO\n";}else{cout<<"YES\n";}//按这个规则,0是可以被阶乘相加的。确实有0个阶乘相加,但是就不能有阶乘相加,就不太清楚的 }return 0;
}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Selenium3自动化学习(一)

    学习笔记- Selenium[səˈliːniəm] 笔记目录&#xff1a;https://blog.csdn.net/weixin_42717928/article/details/114343085 自动化测试了解测试环境搭建一&#xff1a;自动化测试了解 传统的自动化测试可以理解是基于UI层的自动化测试&#xff0c;将黑盒测试转化为由程序…...

    2024/5/8 13:54:16
  2. centos7搭建代理服务器tinyproxy

    环境&#xff1a; centos7 tinyproxy 下载tinyproxy yum install tinyproxy -y修改配置 vim /etc/tinyproxy/tinyproxy.conf# 端口 Port 8888 # 允许访问的ip&#xff0c;后面接允许的ip&#xff0c;比如我只需要我阿里云的公网ip能访问就行&#xff0c;于是用阿里云公网ip替…...

    2024/5/8 13:54:14
  3. 谷歌语法总结

    **site&#xff1a;**可以限制你搜索范围的域名.例如&#xff1a;学院 site:pku.edu.cn **inurl&#xff1a;**用于搜索网页上包含的URL&#xff0c;这个语法非常的重要&#xff0c;使用的也是最为频繁&#xff0c;我们还可以使用allinurl来更加精确的定位URL地址。比如搜索含有…...

    2024/5/8 13:54:13
  4. windows下运行TCL脚本程序

    首先安装环境&#xff0c;ActiveTcl8.3.4.1-9.win32-ix86.exe下载 1&#xff1a;下载windows版本 不方便UNIX/LINUX,所以直接下载windows版本&#xff0c;现在版本已经到8.5了&#xff1b; 下载链接&#xff1a; [url]http://www.activestate.com/Products/Download/Downlo…...

    2024/5/8 11:32:52
  5. 使用MediaInfo.dll获取是媒体文件信息

    MediaInfo是一款专门用来分析音视频文件编码和内容信息的开源软件,提供的形式有多种&#xff1a;桌面应用程序&#xff0c;命令行下的使用&#xff0c;动态库。 动态库的下载方式&#xff1a; 官网地址MediaInfo 下载完成之后解压后有一下文件&#xff0c;主要用的东西在Me…...

    2024/5/8 13:54:11
  6. macos mtr

    brew install mtrcd /usr/local/Cellar/mtr/0.94/sbincp mtr /usr/local/bin cp mtr-packet /usr/local/binmtr --version mtr 0.94sudo mtr baidu.com参考&#xff1a; MTRmacOS 安装 MTR 教程...

    2024/5/8 13:54:11
  7. Python高级

    装饰器多线程生成器、迭代器...

    2024/5/8 13:54:10
  8. Makefile基本用法 一眼懂版

    1.基本格式 示例: led.bin:leds.sarm-linux-gnueabihf-gcc -g -c leds.s -o led.oarm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elfarm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.binarm-linux-gnueabihf-objdump -D led.elf > led.dis clean:rm -…...

    2024/5/8 13:54:09
  9. 【ACWing】1137. 选择最佳线路

    题目地址&#xff1a; https://www.acwing.com/problem/content/1139/ 有一天&#xff0c;琪琪想乘坐公交车去拜访她的一位朋友。由于琪琪非常容易晕车&#xff0c;所以她想尽快到达朋友家。现在给定你一张城市交通路线图&#xff0c;上面包含城市的公交站台以及公交线路的具…...

    2024/5/8 13:54:07
  10. 学习笔记:GAMES101图形学入门闫令琪(四)光栅化(一)

    屏幕&#xff1a; 一个二维数组 数组中每一个元素是个像素 一种典型的光栅成像设备 光栅化&#xff1a; 把东西画在屏幕上的过程 像素 now 像素是一个颜色均匀的小正方形 颜色由RGB表示 屏幕空间&#xff1a; 屏幕上建立一个坐标系 像素中心的位置实际是&#xff1a; 在上…...

    2024/5/8 13:54:06
  11. Mongo DB

    Mongo 是 humongous 的中间部分,寓意海量数据库&#xff0c;Mongodb是一款非关系型/NoSQL数据库 集合与文档 集合Collection位于单独的一个数据库MongoDB文档Document集合&#xff0c;它类似关系型数据库&#xff08;RDBMS&#xff09;中的表Table。一个集合Collection内的多个…...

    2024/5/8 13:54:05
  12. Apple4.21春季新品发布会

    Apple Card Family Apple 播客更新 iPhone 12 12mini新配色 purple 查找功能 AirTag 可以定制 精确查找 借助U1芯片 $29 $99 Apple TV TV首发 Ted Lasso 第二季 Apple TV 4K A12芯片 高帧率HDR视频 色彩平衡功能&#xff0c;调节电视色彩&#xff0c;利用手机传感器 全新Siri…...

    2024/5/8 13:54:05
  13. 简单笔记:记一次 golang 的切片复制

    常规情况下 golang 的一维数组复制&#xff0c;可以这样写&#xff1a; func copy(src []int) []int {copy0 : make([]int, len(src))copy(copy0, src)return copy0 } 这样写&#xff0c;会新开辟一块内存空间&#xff0c;对切片副本的任何修改操作&#xff0c;不会影响原切片…...

    2024/5/8 13:54:04
  14. Jupyter Notebook扩展插件安装及插件推荐

    Jupyter Notebook扩展插件安装及插件推荐插件安装我安装的插件插件安装 记住安装时一定要以管理员身份运行&#xff0c;否则会因为权限问题&#xff0c;导致安装失败 用conda安装 conda install -c conda-forge jupyter_contrib_nbextensionsconda install -c conda-forge ju…...

    2024/5/8 13:54:03
  15. 拦截器不生效

    配置了拦截器&#xff0c;并且把拦截器注入进去。可是拦截器就是不生效 原因:把拦截器放在了common中&#xff0c;这里都是公共资源&#xff0c;并没有被spring管理进入ioc&#xff0c;所以无法生效...

    2024/5/8 13:54:01
  16. 【HTMLCSSJS】02. HTML表格及表单

    HTML表格&表单 table表格&#xff08;实际开发中非常常用的标签&#xff09; 表格的主要作用 表格主要是用来显示、展示数据&#xff0c;因为它可以让数据显示的非常的完整&#xff0c;可读性非常好&#xff0c;特别是后台展示数据的时候&#xff0c;能够熟练使用表格就显…...

    2024/5/5 15:19:33
  17. ActiveMQ消息中间件开发过程

    消息中间件直连的坏处&#xff1a;直接连接的方式不利于异步传送信息和确保消息的准确到达。 消息中间件的好处&#xff1a; ActiveMQ使用过程—一个轻量级消息中间件将想要使用的消息中间件的JMS Provider加入到工程之中。这就相当于JDBC之类的连接特定平台的接口包。只有用特…...

    2024/5/8 13:54:02
  18. linux shell递归方式实现斐波那契函数

    #!/bin/bash fb(){ if [ $a -le 2 ] then echo 1 else declare -i c$a-2$a-1 echo $c fi } for a in seq 1 15 do fb $a done这里有个问题尚未解决&#xff0c;就是如果第三行的条件写成 [ $a -eq 1 || $a -eq 2 ] 然后第6行如果我使用expr函数写成 expr $a - 2 $a - 1 然…...

    2024/5/8 13:53:59
  19. Java题解

    编写10个正整数的代码段&#xff0c;并计算所需的数字可被3整除的;例如&#xff0c;如果输入为13、19、9、32、36、5、42、2、33、62&#xff0c;则输出为4; 觉得此篇文章对你有用的话,欢迎点赞关注 import java.util.Scanner;public class task04 {public static void main(S…...

    2024/5/8 13:53:58
  20. DataWhale数据挖掘实践_智慧海洋(三)

    特征工程概述 特征工程大体可分为3部分&#xff0c;特征构建、特征提取和特征选择。 特征构建 “从数学的角度讲&#xff0c;特征工程就是将原始数据空间变换到新的特征空间&#xff0c;或者说是换一种数据的表达方式&#xff0c;在新的特征空间中&#xff0c;模型能够更好地学…...

    2024/5/8 13:53:57

最新文章

  1. MacOS搭建docker本地私有镜像库

    相关环境 macOS: bigsur 11.7.8 docker desktop: 4.22.0 docker engine: 24.0.5 准备工作 本机已经安装好docker desktop&#xff0c;未安装的自行参考其他教程。如果不能翻墙&#xff0c;可以修改本地的镜像地址&#xff0c;可在docker desktop 设置中的docker engine中修…...

    2024/5/8 18:58:46
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. vue3项目运行正常但vscode红色波浪线报错

    以下解决办法如不生效&#xff0c;可尝试 重启 vscode 一、Vetur插件检测问题 vetur 是一个 vscode 插件&#xff0c;用于为 .vue 单文件组件提供代码高亮以及语法支持。但 vue 以及 vetur 对于 ts 的支持&#xff0c;并不友好。 1、原因 如下图&#xff1a;鼠标放到红色波浪…...

    2024/5/8 2:15:24
  4. 动态规划刷题(算法竞赛、蓝桥杯)--饥饿的奶牛(线性DP)

    1、题目链接&#xff1a;饥饿的奶牛 - 洛谷 #include <bits/stdc.h> using namespace std; const int N3000010; vector<int> a[N];//可变数组vector存区间 int n,mx,f[N]; int main(){scanf("%d",&n);for(int i1;i<n;i){int x,y;scanf("%…...

    2024/5/7 17:16:20
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/7 19:05:20
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/7 22:31:36
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/8 1:37:40
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/7 14:19:30
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/8 1:37:39
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/7 16:57:02
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/7 14:58:59
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/7 21:15:55
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/8 1:37:35
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/7 16:05:05
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/8 18:06:50
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/8 1:37:32
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/7 16:05:05
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/8 1:37:31
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/8 1:37:31
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/8 12:44:41
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/8 9:51:44
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/8 1:37:29
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/7 17:09:45
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57