1. 前言

本人第一次把 Div2. D 切了,开心。

C 不会,寄。 后来在场外想到一种奇怪做法 AC 了。

2. 正文(A-D)

CF 比赛链接

A. Three Doors

签到题。循环查找手中的钥匙能打开哪扇门然后更新手上钥匙,如果扫完一遍后发现还有门没打开,输出 \(\texttt{NO}\),否则输出 \(\texttt{YES}\)。

时间复杂度:\(\mathcal O(3)\)。

期望得分:\(100\)。

Code

点击查看代码
/*
Author: TheSky233
Windows 11 Creation. All rights reserved.
*/
#include <bits/stdc++.h>
using namespace std; #define Multicase() for(int T = read() ; T ; T--)
#define lowbit(x) (x & (-x))
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define l(p) tree[p].l
#define r(p) tree[p].r
#define sum(p) tree[p].sum
#define tag(p) tree[p].tag
#define F(i,a,b) for(int i=(a) ;i<=(b);++i)
#define F2(i,a,b) for(int i=(a);i< (b);++i)
#define dF(i,a,b) for(int i=(a);i>=(b);--i)
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define Debug debug("Passing [%s] in LINE %d\n",__FUNCTION__,__LINE__)
#define clr(a,x) memset(a,x,sizeof(a))
#define pb push_back
#define mkp make_pair
#define fi first
#define se second
#define endl '\n'
#define ENDL putchar('\n')
#define forGraph(u) for(int i=head[u];i;i=G[i].next)
#define _file(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout); const int N=5e5+5;
const int M=1e6+5;
const int MN=1e3+5;
const int iinf=INT_MAX;
const double eps=1e-9;
const double pi=acos(-1);
const long long linf=LLONG_MAX;
const long long mod=1000000007,mod2=998244353; typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef map<int,int> mii;
typedef map<ll,ll> mll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef map<string,int> msi; inline int read(){int x(0), f(0); char ch=getchar(); while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48); ch=getchar();} return f?-x:x;}
template <typename T> void read(T &x){x=0; T f(0); char ch=getchar(); while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48); ch=getchar();} x=f?-x:x;}
template <typename T,typename ...Arg>void read(T& x,Arg& ...arg){read(x);read(arg...);}
template <typename T> inline void write(T x){static char buf[64]; static int tot(0); if(x<0) putchar('-'),x=-x; do buf[++tot]=(x%10)+48,x/=10; while(x); do putchar(buf[tot--]); while(tot);}
template <typename T> void write(T x,char c){static char buf[64]; static int tot(0); if(x<0) putchar('-'),x=-x; do buf[++tot]=(x%10)+48,x/=10; while(x); do putchar(buf[tot--]); while(tot); putchar(c);}
void judge(bool x){printf(x?"YES\n":"NO\n");} void Solve(); struct Graph{
int to,w,next;
}G[M<<1];
int head[N],_cnt;
void addEdge(int u,int v,int w){G[++_cnt]=(Graph){v,w,head[u]}; head[u]=_cnt;} int n,m,q,k,p;
int a[5];
bool vis[10];
vector<int> v; int main(){
Multicase()
Solve();
} void Solve(){
memset(vis,0,sizeof(vis));
read(q);
F(i,1,3) read(a[i]);
vis[q]=1;
while(a[q]) vis[a[q]]=1,q=a[q];
F(i,1,3) if(vis[i]==0) return judge(0),void();
judge(1);
}

B. Also Try Minecraft

首先,作为一个 MC 玩家和 Terraria 玩家,看到题面还小激动了一会。

进入正题。我们发现如果 \(a_i > a_{i\pm1}\),那么就会收到 \(a_i - a_{i \pm 1}\) 的伤害,否则无伤。

我们可以 \(\mathcal O(n)\) 预处理出 \(a_{i-1}\) 前往 \(a_{i}\) 时收到的伤害和 \(a_{i+1}\) 前往 \(a_i\) 的伤害,随后将这两个数组分别做前缀和和后缀和,查询时如果 \(l \le r\) ,输出前缀和,否则输出后缀和。

时间复杂度:预处理 \(\mathcal O(n)\),单次查询 \(\mathcal O(1)\),总时间复杂度:\(\mathcal O(n+q)\)。

Code

点击查看代码
/*
Author: TheSky233
Windows 11 Creation. All rights reserved.
*/
#include <bits/stdc++.h>
using namespace std; #define Multicase() for(int T = read() ; T ; T--)
#define lowbit(x) (x & (-x))
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define l(p) tree[p].l
#define r(p) tree[p].r
#define sum(p) tree[p].sum
#define tag(p) tree[p].tag
#define F(i,a,b) for(int i=(a) ;i<=(b);++i)
#define F2(i,a,b) for(int i=(a);i< (b);++i)
#define dF(i,a,b) for(int i=(a);i>=(b);--i)
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define Debug debug("Passing [%s] in LINE %d\n",__FUNCTION__,__LINE__)
#define clr(a,x) memset(a,x,sizeof(a))
#define pb push_back
#define mkp make_pair
#define fi first
#define se second
#define endl '\n'
#define ENDL putchar('\n')
#define forGraph(u) for(int i=head[u];i;i=G[i].next)
#define _file(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout); const int N=5e5+5;
const int M=1e6+5;
const int MN=1e3+5;
const int iinf=INT_MAX;
const double eps=1e-9;
const double pi=acos(-1);
const long long linf=LLONG_MAX;
const long long mod=1000000007,mod2=998244353; typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef map<int,int> mii;
typedef map<ll,ll> mll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef map<string,int> msi; inline int read(){int x(0), f(0); char ch=getchar(); while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48); ch=getchar();} return f?-x:x;}
template <typename T> void read(T &x){x=0; T f(0); char ch=getchar(); while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48); ch=getchar();} x=f?-x:x;}
template <typename T,typename ...Arg>void read(T& x,Arg& ...arg){read(x);read(arg...);}
template <typename T> inline void write(T x){static char buf[64]; static int tot(0); if(x<0) putchar('-'),x=-x; do buf[++tot]=(x%10)+48,x/=10; while(x); do putchar(buf[tot--]); while(tot);}
template <typename T> void write(T x,char c){static char buf[64]; static int tot(0); if(x<0) putchar('-'),x=-x; do buf[++tot]=(x%10)+48,x/=10; while(x); do putchar(buf[tot--]); while(tot); putchar(c);}
void judge(bool x){printf(x?"YES\n":"NO\n");} void Solve(); struct Graph{
int to,w,next;
}G[M<<1];
int head[N],_cnt;
void addEdge(int u,int v,int w){G[++_cnt]=(Graph){v,w,head[u]}; head[u]=_cnt;} int n,m,q,k,p;
ll a[N],b[N],f[N];
ll pre[N],suf[N];
vector<int> v; int main(){
// Multicase()
Solve();
} void Solve(){
read(n,q);
F(i,1,n) read(a[i]);
F(i,2,n) if(a[i-1]>a[i]) pre[i]=a[i-1]-a[i];
dF(i,n-1,1) if(a[i+1]>a[i]) suf[i]=a[i+1]-a[i];
F(i,1,n) pre[i]+=pre[i-1];
dF(i,n,1) suf[i]+=suf[i+1];
while(q--){
int x,y;
read(x,y);
if(x<=y) write(pre[y]-pre[x],'\n');
else write(suf[y]-suf[x],'\n');
}
}

C. Cover an RBS

A-D 中最难题。

首先,我们先预处理出字符串中 \(\texttt{( ) ?}\) 的个数,记为 \(l,r,q\),如果 \(|l-r|=q\),说明所有的问号都得填上某种括号,唯一,输出 \(\texttt{YES}\)。

然后,因为题面保证了是一个 RBS 填上若干个问号,所以必定有一种合法的解。我们贪心:如果当前左括号数量不足字符串长度的一半,就填左括号,否则全填右括号。在填的同时维护一下 最后一个左括号第一个右括号 出现的位置。

然后我们就能得到类似这样一个字符串

\(\texttt{(} \color{red}{\texttt{)}} \texttt{(())} \color{red}{\texttt{(}} \texttt{)}\)。

我们可以发现,交换两个标红的括号,还能保持一个合法括号序列的基本要求(对于 \(\forall 1\ge i \le len\),有前缀和 \(l_i \geq r_i\)),同时,因为我们保存的是最边界的左右括号,也能保证对其它的影响最少。

如果 \(\operatorname{swap}(s_{lastL},s_{firstR})\) 后,还是一个合法的序列,说明不唯一,输出 \(\texttt{NO}\),否则输出 \(\texttt{YES}\)。(感性理解)

时间复杂度:\(\mathcal O(n)\)

期望得分:\(100\)

Code

点击查看代码
/*
Author: TheSky233
Windows 11 Creation. All rights reserved.
*/
#include <bits/stdc++.h>
using namespace std; #define Multicase() for(int T = read() ; T ; T--)
#define lowbit(x) (x & (-x))
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define l(p) tree[p].l
#define r(p) tree[p].r
#define sum(p) tree[p].sum
#define tag(p) tree[p].tag
#define F(i,a,b) for(int i=(a) ;i<=(b);++i)
#define F2(i,a,b) for(int i=(a);i< (b);++i)
#define dF(i,a,b) for(int i=(a);i>=(b);--i)
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define Debug debug("Passing [%s] in LINE %d\n",__FUNCTION__,__LINE__)
#define clr(a,x) memset(a,x,sizeof(a))
#define pb push_back
#define mkp make_pair
#define fi first
#define se second
#define endl '\n'
#define ENDL putchar('\n')
#define forGraph(u) for(int i=head[u];i;i=G[i].next)
#define _file(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout); const int N=5e5+5;
const int M=1e6+5;
const int MN=1e3+5;
const int iinf=INT_MAX;
const double eps=1e-9;
const double pi=acos(-1);
const long long linf=LLONG_MAX;
const long long mod=1000000007,mod2=998244353; typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef map<int,int> mii;
typedef map<ll,ll> mll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef map<string,int> msi; inline int read(){int x(0), f(0); char ch=getchar(); while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48); ch=getchar();} return f?-x:x;}
template <typename T> void read(T &x){x=0; T f(0); char ch=getchar(); while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48); ch=getchar();} x=f?-x:x;}
template <typename T,typename ...Arg>void read(T& x,Arg& ...arg){read(x);read(arg...);}
template <typename T> inline void write(T x){static char buf[64]; static int tot(0); if(x<0) putchar('-'),x=-x; do buf[++tot]=(x%10)+48,x/=10; while(x); do putchar(buf[tot--]); while(tot);}
template <typename T> void write(T x,char c){static char buf[64]; static int tot(0); if(x<0) putchar('-'),x=-x; do buf[++tot]=(x%10)+48,x/=10; while(x); do putchar(buf[tot--]); while(tot); putchar(c);}
void judge(bool x){printf(x?"YES\n":"NO\n");} void Solve(); struct Graph{
int to,w,next;
}G[M<<1];
int head[N],_cnt;
void addEdge(int u,int v,int w){G[++_cnt]=(Graph){v,w,head[u]}; head[u]=_cnt;} int n,m,k,p;
int a[N],b[N],f[N];
vector<int> v; int main(){
Multicase()
Solve();
} string s; void Solve(){
int l=0,r=0,q=0;
cin>>s;
int len=s.length();
F2(i,0,len){
if(s[i]=='(') l++;
else if(s[i]==')') r++;
else q++;
}
if(q==abs(l-r)) return judge(1),void();
int tot=len/2;
int lastL=0,firstR=iinf;
F2(i,0,len){
if(s[i]=='?'){
if(l<tot){
l++;
s[i]='(';
lastL=i;
}
else{
r++;
s[i]=')';
firstR=min(firstR,i);
}
}
}
swap(s[lastL],s[firstR]);
int cnt=0;
F2(i,0,len){
if(s[i]=='(') cnt++;
else cnt--;
if(cnt<0) return judge(1),void();
}
judge(0);
}

D. Rorororobot

萌萌题。使用 ST-Table 维护区间 \([l,r]\) 中墙的最大高度,显然,如果 \([x_1,x_2]\) 中有墙的高度为 \(n\),那么无解。

否则,判断他们是否都能走到最高的墙的上面以及 \(|x_1-x_2| \bmod{k}\) 和 \(|y_1-y_2| \bmod{k}\) 是否都为 \(0\),如果是,输出 \(\texttt{YES}\),否则 \(\texttt{NO}\)。

时间复杂度:ST 表预处理 \(\mathcal O(m \log m)\),单次查询 \(\mathcal O(1)\),总复杂度 \(\mathcal O(n+q)\)。

期望得分:\(100\)。

Code

点击查看代码
/*
Author: TheSky233
Windows 11 Creation. All rights reserved.
*/
#include <bits/stdc++.h>
#define int long long
using namespace std; #define Multicase() for(int T = read() ; T ; T--)
#define lowbit(x) (x & (-x))
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define l(p) tree[p].l
#define r(p) tree[p].r
#define sum(p) tree[p].sum
#define tag(p) tree[p].tag
#define F(i,a,b) for(int i=(a) ;i<=(b);++i)
#define F2(i,a,b) for(int i=(a);i< (b);++i)
#define dF(i,a,b) for(int i=(a);i>=(b);--i)
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define Debug debug("Passing [%s] in LINE %d\n",__FUNCTION__,__LINE__)
#define clr(a,x) memset(a,x,sizeof(a))
#define pb push_back
#define mkp make_pair
#define fi first
#define se second
#define endl '\n'
#define ENDL putchar('\n')
#define forGraph(u) for(int i=head[u];i;i=G[i].next)
#define _file(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout); const int N=5e5+5;
const int M=1e6+5;
const int MN=1e3+5;
const int iinf=INT_MAX;
const double eps=1e-9;
const double pi=acos(-1);
const long long linf=LLONG_MAX;
const long long mod=1000000007,mod2=998244353; typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef map<int,int> mii;
typedef map<ll,ll> mll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef map<string,int> msi; inline int read(){int x(0), f(0); char ch=getchar(); while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48); ch=getchar();} return f?-x:x;}
template <typename T> void read(T &x){x=0; T f(0); char ch=getchar(); while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48); ch=getchar();} x=f?-x:x;}
template <typename T,typename ...Arg>void read(T& x,Arg& ...arg){read(x);read(arg...);}
template <typename T> inline void write(T x){static char buf[64]; static int tot(0); if(x<0) putchar('-'),x=-x; do buf[++tot]=(x%10)+48,x/=10; while(x); do putchar(buf[tot--]); while(tot);}
template <typename T> void write(T x,char c){static char buf[64]; static int tot(0); if(x<0) putchar('-'),x=-x; do buf[++tot]=(x%10)+48,x/=10; while(x); do putchar(buf[tot--]); while(tot); putchar(c);}
void judge(bool x){printf(x?"YES\n":"NO\n");} void Solve(); struct Graph{
int to,w,next;
}G[M<<1];
int head[N],_cnt;
void addEdge(int u,int v,int w){G[++_cnt]=(Graph){v,w,head[u]}; head[u]=_cnt;} int n,m,q,k,p;
int a[N],b[N],f[N];
int ST[N][25];
vector<int> v; signed main(){
// Multicase()
Solve();
} int query(int l,int r){
int k=__lg(r-l+1);
return max(ST[l][k],ST[r-(1<<k)+1][k]);
} void Solve(){
read(n,m);
F(i,1,m) read(a[i]);
memset(ST,0,sizeof(ST));
for(int i=1;i<=m;i++) ST[i][0]=a[i];
for(int j=1;j<=21;j++){
for(int i=1;i+(1<<j)-1<=m;i++){
ST[i][j]=max(ST[i][j-1],ST[i+(1<<(j-1))][j-1]);
}
}
read(q);
while(q--){
int x,y,xx,yy,k;
read(y,x,yy,xx,k);
if(x>xx) swap(y,yy),swap(x,xx);
if(query(x,xx)==n){
judge(0);
continue;
}
if((xx-x)%k!=0 || (abs(yy-y))%k!=0){
judge(0);
continue;
}
int h=query(x,xx)+1;
int ly=n-y,lyy=n-yy;
int ty=ly/k,tyy=lyy/k;
if(y>=h && yy>=h) judge(1);
else if(y+ty*k>=h || yy+tyy*k>=h) judge(1);
else judge(0);
}
}
/*
0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 1 1 0
1 0 0 1 0 0 0 1 1 0
1 0 0 1 0 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1
1 0 & 1 & 1 1 1 1 1
1 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1 1 1
*/

【做题笔记】CF Edu Round 132的更多相关文章

  1. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  2. C语言程序设计做题笔记之C语言基础知识(上)

    C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...

  3. SDOI2017 R1做题笔记

    SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30

  4. SDOI2014 R1做题笔记

    SDOI2014 R1做题笔记 经过很久很久的时间,shzr又做完了SDOI2014一轮的题目. 但是我不想写做题笔记(

  5. SDOI2016 R1做题笔记

    SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...

  6. LCT做题笔记

    最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ...

  7. java做题笔记

    java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ...

  8. SAM 做题笔记(各种技巧,持续更新,SA)

    SAM 感性瞎扯. 这里是 SAM 做题笔记. 本来是在一篇随笔里面,然后 Latex 太多加载不过来就分成了两篇. 标 * 的是推荐一做的题目. trick 是我总结的技巧. I. P3804 [模 ...

  9. PKUWC/SC 做题笔记

    去年不知道干了些啥,什么省选/营题都没做. 现在赶应该还来得及(?) 「PKUWC2018」Minimax Done 2019.12.04 9:38:55 线段树合并船新玩法??? \(O(n^2)\ ...

  10. POI做题笔记

    POI2011 Conspiracy (2-SAT) Description \(n\leq 5000\) Solution 发现可拆点然后使用2-SAT做,由于特殊的关系,可以证明每次只能交换两个集 ...

随机推荐

  1. 「BUAA OO Unit 2 HW8」第二单元总结

    「BUAA OO Unit 2 HW8」第二单元总结 目录 「BUAA OO Unit 2 HW8」第二单元总结 Part 0 前言 Part 1 第五次作业 1.1 作业要求 1.2 架构设计 1. ...

  2. 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)

    一.爬取老番茄B站数据 前几天开发了一个python爬虫脚本,成功爬取了B站李子柒的视频数据,共142个视频,17个字段,含: 视频标题,视频地址,视频上传时间,视频时长,是否合作视频,视频分区,弹幕 ...

  3. 【Java面试】JVM如何判断一个对象可以被回收

    Hi, 我是Mic. 今天分享一道一线互联网公司必问的面试题. "JVM如何判断一个对象可以被回收" 关于这个问题,来看看普通人和高手的回答. 普通人: 嗯.......... 高 ...

  4. Kafka到底有多高可靠?(RNG NB)

    在聊Kafka高可靠之前,先在评论区来波RNG NB好不好! 什么叫可靠性? 大家都知道,系统架构有三高:「高性能.高并发和高可用」,三者的重要性不言而喻. 对于任意系统,想要同时满足三高都是一件非常 ...

  5. 软件构造Lab2实验总结

    本次实验训练抽象数据类型(ADT)的设计.规约.测试,并使用面向对象编程(OOP)技术实现ADT.具体来说内容如下: 针对给定的应用问题,从问题描述中识别所需的ADT: 设计ADT规约(pre-con ...

  6. 拥抱Spring全新OAuth解决方案

    以下全文 Spring Authorization Server 简称为: SAS 背景 Spring 团队正式宣布 Spring Security OAuth 停止维护,该项目将不会再进行任何的迭代 ...

  7. django框架8

    内容概要 ajax简介 前后端传输数据编码格式 ajax发送json格式数据 ajax携带文件数据 回调机制处理策略 内容详情 ajax简介 页面不刷新的情况下可以与后端进行数据交互 异步提交 局部刷 ...

  8. 微信小程序使用 ECharts

    echarts-for-weixin 是 ECharts 官方维护的一个开源项目,提供了一个微信小程序组件(Component),我们可以通过这个组件在微信小程序中使用 ECharts 绘制图表. e ...

  9. 『忘了再学』Shell流程控制 — 34、if条件判断语句(二)

    目录 1.多分支if条件语句格式 2.练习 3.说明 4.综合练习 1.多分支if条件语句格式 if [ 条件判断式1 ] then 当条件判断式1成立时,执行程序1 elif [ 条件判断式2 ] ...

  10. Eclipse历史版本下载和选择对应的java版本

    下载Eclipse 官网: https://www.eclipse.org/ 直达 直接进入连接:https://www.eclipse.org/downloads/packages/installe ...