第十三届蓝桥杯c++b组2022年国赛决赛题解

2023-05-16

写的不是很好,8000+浏览量后开的粉丝可见,希望涨一点点粉。

觉得还阔以的,就不要取关了Fight!!(o^-^)~''☆ミ☆ミ

题目pdf下载:第十三届蓝桥杯大赛软件赛决赛pdf下载

G题没有写,J题是暴力的,其他好像都写出来,但是估计还是有错的。

蓝桥杯官网oj:题库 - 蓝桥云课

蓝桥杯官网提交结果

J题题意有差别,所以G和J都是0%。I题是90%,其他都是100%ac。

目录

正文:

试题 A: 2022

试题 B: 钟表

试题 C: 卡牌

试题 D: 最大数字

试题 E: 出差

试题 F: 费用报销

试题 G: 故障

试题 H: 机房

试题 I: 齿轮

试题 J: 搬砖

结尾:


正文:

试题 A: 2022

题意: 2022分为不同十个不同的正整数的情况数。

思路:动态规划,我的答案是:379187662194355221

        以为挺简单的,想用dfs看下小数据答案,连100都跑不出来,这题难度不简单,估计卡了不少人时间。其实应该是动态规划的思路。

解释在下面动态规划代码的注释,大致就是dp[2022][10]=dp[1][9]+dp[2][9]+dp[3][9]....+dp[2021][9]的动态规划,用倒叙去实现每个整数只用一次(类似01背包)。

暴力代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int a=55;
int ans=0;
void dfs(int d,int sum,int pre){        //d是选的数量,sum是选的和,pre是上次选的点
    if(d==10){
        if(sum==a)
        ans++;
        return;
    }
    for(int i=pre+1;i<=a;i++){
        if(i+sum<=a){
            dfs(d+1,sum+i,i);
        }
    }
}
int main()
{
    dfs(0,0,0);
    cout<<ans<<endl;
    return 0;
}

动态规划代码:

#include<bits/stdc++.h>
using namespace std;
long long i,j,k,dp[50000][20];
//dp[i][j]表示选j个数总和为i的方案数
int main()
{
    for(i=2022;i>=1;i--)
    {
        //这里i的顺序不影响结果
        for(j=2022;j>=1;j--)
        {
            //为了dp不相互影响这里从大到小dp
            //如果从小到大的话需要再开数组存结果
            for(k=1;k<=9;k++)
            {
                dp[j+i][k+1]+=dp[j][k];
                //对于k个数总和为j的方案dp[j][j];
                //可以选i使得k+1个数总和为j+i
            }
        }
        dp[i][1]=1;//表示选1个数总和为i的方法加1
    }
    for(i=1;i<=100;i++)
    {
        cout<<i<<" "<<dp[i][10]<<endl;
    }
    cout<<dp[2022][10]<<endl;
    return 0;
}

试题 B: 钟表

题意:一个钟表的时针、分针的角度差==分针、秒针的角度差,求此时的时分秒。

思路:暴力,我的答案是:4 48 0

        三个for起手不难,主要就是计算三个针的角度,

秒的角度就是:m/60

分的角度就是:f/60+(m/60)/*60,因为秒贡献的度数最多是1/60,贡献了m/60*(1/60)

时的角度就是:s/12+(f+m*60)/(60*12);,因为分钟贡献的度数最多是1/12,如果有res分钟,那么a=s/12+res/12

注意优弧劣弧的概念,小数的角度是<=0.5的。

代码:

#include<bits/stdc++.h>
using namespace std;
#define dou double
#define EXP 1e-6
#define M 100010
int main()
{
    for(dou s=0;s<=6;s++)
        for(dou f=0;f<60;f++)
            for(dou m=0;m<60;m++){
                dou a=s/12+(f+m*60)/(60*12);    //时针在表上角度
                dou b=f/60+m/(60*60);       //分针在表上角度
                dou c=m/60;             //秒针在表上角度
                dou x=fabs(a-b)>0.5?1-fabs(a-b):fabs(a-b);      //x是时针和分针夹角
                dou y=fabs(b-c)>0.5?1-fabs(b-c):fabs(b-c);      //x是分针和秒针夹角
                if(fabs(x-2*y)<EXP){                //如果A==2*B
                    cout<<s<<" "<<f<<" "<<m<<endl;
                }
            }
    return 0;
}

试题 C: 卡牌

 

 题意:a[i]数组是已有的 i 类手牌的数量,每个类(1-n类)的出1张可以组成一套,还有m张空白的,可以随便写成任意i类。b数组是该类最多被空白牌写成几张,求组成的最多套牌。

修改:这题比赛的时候被改成a,b<n*2了,不是原来的n*n了

思路:二分

        容易知道是把空白牌用到少的类上,这题思路就是直接二分答案了

如果当前类牌不够mid张,当然是将空白的编变成该类牌,一是看是否超过了b数组的限制,二是看是否超过了最大空白牌数量。

直到最后也是没有被返回NO,那么返回YES

check函数:

int check(int mid){        //看看mid套行不行
    LL sum=0;
    for(int i=1;i<=n;i++){
        if(a[i]<mid){        //i类原来数量就超过mid张就不用考虑了
            if(mid-a[i]>b[i]) return 0;        //如果需要的比限制多返回NO
            sum+=mid-a[i];
            if(sum>m) return 0;        //如果使用空白牌多与m,返回NO
        }
    }
    return 1;
}

代码:

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define M 1000005
LL n,m;
LL a[M],b[M];
int check(int mid){
    LL sum=0;
    for(int i=1;i<=n;i++){
        if(a[i]<mid){
            if(mid-a[i]>b[i]) return 0;
            sum+=mid-a[i];
            if(sum>m) return 0;
        }
    }
    return 1;
}
int main()
{
    scanf("%lld%lld",&n,&m);
    for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
    for(int i=1;i<=n;i++) scanf("%lld",&b[i]);
    LL l=0,r=n*2,ans=0;
    while(l<=r){
        LL mid=(l+r)/2;
        if(check(mid)){
            l=mid+1;
            ans=mid;
        }else{
            r=mid-1;
        }
    }
    printf("%lld\n",ans);
    return 0;
}

试题 D: 最大数字

 题意:给一个小于1e18的数字,不超过a次可以给一位+1,9再+就变成0,

不超过b次可以给一位-1,0再-变成9。

 思路:思维+暴力深搜(dfs)

        使用肯定是从前面开始的,因为是不超过多少次使用,前面就是能省则省,但是但凡有用,必须使用,暴力出答案即可。

对于每种情况只能是暴力的搜答案,时间复杂度最坏应该是2^18了差不多。

然后一直纠结用字符串还是整数来表示,整数肯定更方便计算和简洁,字符串便于修改,后面用数量级还是实现了整数的修改。

dfs代码:

void dfs(LL a,LL ans,LL b,LL c){    //a表示当前的N,ans是10的某次方,表示数量级,b和c是剩余数量
    if(ans==0){
        maxx=max(maxx,a);        //更新答案
        return;
    }
    int d=a/ans%10;
    if(b>9-d){                        //能变成9就变9,
        int r=b-(9-d);
        dfs(a+(9-d)*ans,ans/10,r,c);
    }else{                        //不能变成9就全用
        dfs(a+b*ans,ans/10,0,c);
    }
    if(c!=0){
        if(c>=d+1){                //能变成9就用,不能变就省着
            int r=c-(d+1);
            dfs(a-d*ans+9*ans,ans/10,b,r);
        }
    }
}

代码:

#include<bits/stdc++.h>
using namespace std;
#define fo(a,b) for(int i=a;i<=b;i++)
#define inf 0x3f3f3f3f
#define LL long long
#define M 100010
LL a,b,c;
LL maxx=0;
void dfs(LL a,LL ans,LL b,LL c){
    if(ans==0){
        maxx=max(maxx,a);
        return;
    }
    int d=a/ans%10;
    if(b>9-d){
        int r=b-(9-d);
        dfs(a+(9-d)*ans,ans/10,r,c);
    }else{
        dfs(a+b*ans,ans/10,0,c);
    }
    if(c!=0){
        if(c>=d+1){
            int r=c-(d+1);
            dfs(a-d*ans+9*ans,ans/10,b,r);
        }
    }
}
int main()
{
    cin>>a>>b>>c;
    LL tmp=a;
    LL ans=1;
    while(a){
        a/=10;
        ans*=10;
    }
    dfs(tmp,ans/10,b,c);
    cout<<maxx<<endl;
	return 0;
}

试题 E: 出差

 题意:n个点,m条边构成一个有边权的无向图,然后每个顶点都有自己的停留时间,即到达该点要停的时间,都是正数,求1到n点的最短时间

思路:最短路的贝尔曼-福特算法(Bellman-Ford)

        这题就是最短路模板题,只是加上了顶点要停留,感觉迪杰斯特拉算法(Dijkstra)应该也行,但觉得贝尔曼-福特算法(Bellman-Ford)应该更合适。

只是在使用边的时候,将边权+终点停留时间,终点为n时不加

更新代码:

 for(int k=1;k<=n;k++){        //n次更新
        for(int i=1;i<=m;i++){
            int res1=0,res2=0;
            if(b[i]!=n) res1=x[b[i]];        //终点不为n,边权+停留时间
            if(a[i]!=n) res2=x[a[i]];
            dist[b[i]]=min(dist[b[i]],dist[a[i]]+c[i]+res1);
            dist[a[i]]=min(dist[a[i]],dist[b[i]]+c[i]+res2);
        }
    }

代码:

#include<bits/stdc++.h>
using namespace std;
#define fo(a,b) for(int i=a;i<=b;i++)
#define inf 0x3f3f3f3f
#define LL long long
#define M 100005
int n,m;
int x[M];
int dist[M],a[M],b[M],c[M];
int main(){
    scanf("%d%d",&n,&m);
    memset(dist,inf,sizeof(dist));
    dist[1]=0;
    for(int i=1;i<=n;i++) cin>>x[i];
    for(int i=1;i<=m;i++)
        scanf("%d%d%d",&a[i],&b[i],&c[i]);
    for(int k=1;k<=n;k++){
        for(int i=1;i<=m;i++){
            int res1=0,res2=0;
            if(b[i]!=n) res1=x[b[i]];
            if(a[i]!=n) res2=x[a[i]];
            dist[b[i]]=min(dist[b[i]],dist[a[i]]+c[i]+res1);
            dist[a[i]]=min(dist[a[i]],dist[b[i]]+c[i]+res2);
        }
    }
    cout<<dist[n]<<endl;
    return 0;
}

试题 F: 费用报销

 题意:给同一年的一些天,这些天都一个或多个的钱,选一些天使金额最多且不超多m,其中所有相邻的天数相差不低于k(>=k)

思路:二维动态规划

dp[i][j]表示第i天时,能取到接近j的最大值,意味着dp[i][j]<=j,答案就是dp[500][m],500这个数只要比一年356天大就行

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define M 5005
int n,m,k;
int x,y;
struct Node
{
    int a,id;
    bool operator<(const Node temp)const{
        if(id==temp.id) return a<temp.a;        //这里是小于号,按从小到大排序
        return id<temp.id;
    }
}cnt[M];
int mp[105][105],dp[M][M];      //dp[i][j]表示第i天的时候,最接近j(<=j)能取多大
int r[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
signed main(){
    int sum=0;
    for(int i=1;i<=12;i++){
        for(int j=1;j<=r[i];j++){
            sum++;
            mp[i][j]=sum;        //映射天数
        }
    }
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++){
        cin>>x>>y>>cnt[i].a;
        cnt[i].id=mp[x][y];
    }
    sort(cnt+1,cnt+n+1);        //按天数从小到大排序
    int mx=0;
    int res=1;      //表示下次有表单的下标,类似于双指针
    for(int i=1;i<=500;i++){
        if(cnt[res].id==i){
            int da=cnt[res].a;
            for(int j=da;j<=m;j++){
                dp[i][j]=max(dp[i-1][j],dp[max(0LL,i-k)][j-da]+da);
                mx=max(mx,dp[i][j]);
            }
            i--;        //i--保证下次i不变,而res会+1,也就是处理同一天有多个。
            res++;
        }else{
            for(int j=1;j<=m;j++){
                dp[i][j]=max(dp[i][j],dp[i-1][j]);
            }
        }
    }
    cout<<dp[500][m]<<endl;
    return 0;
}


试题 G: 故障

 题意:不知

思路:不知,题有点多,做不过来

代码:未有


试题 H: 机房

 题意:给一颗无边权的树,查询m次两点路劲之间,所有点的直接连接点的数量和。

 思路:LCA+树形DP

        还是比较好想的,dfs处理出给个点的直接连接点的数量,再dfs,求出每个点到顶点的直接连接点的数量的前缀和,用dp[i]表示。

d表示两点x和y的LCA(共公祖先),pre[d]表示d的父点,结果就是dp[x]+dp[y]-dp[d]-dp[pre[d]]。

核心代码:

void dfs(int d,int pre,int sum)
{
    for(int i=1;i<n+5;i++) lg[i]=lg[i-1]+(1<<lg[i-1]==i);           //LCA倍增
    fa[d][0]=pre;                   //LCA倍增
    h[d]=h[pre]+1;                  //LCA倍增
    p[d]=pre;                  //父点
    for(int i=1;i<=lg[h[d]]+1;i++)                  //LCA倍增
        fa[d][i]=fa[fa[d][i-1]][i-1];
    int l=v[d].size();                    //l也是当前结点直接连接其他结点数量
    dp[d]=l+sum;                          //sum是之前父链的和
    fo(0,l-1){
        int now=v[d][i];
        if(pre!=now){
            dfs(now,d,dp[d]);
        }
    }
}

代码:

#include<bits/stdc++.h>
using namespace std;
#define fo(a,b) for(int i=a;i<=b;i++)
#define inf 0x3f3f3f3f
#define LL long long
#define M 200005
int n,m,x,y;
int dp[M],p[M];
vector<int>v[M];
int h[M],lg[M],fa[M][35];
void dfs(int d,int pre,int sum)
{
    for(int i=1;i<n+5;i++) lg[i]=lg[i-1]+(1<<lg[i-1]==i);           //LCA倍增
    fa[d][0]=pre;                   //LCA倍增
    h[d]=h[pre]+1;                  //LCA倍增
    p[d]=pre;                  //父点
    for(int i=1;i<=lg[h[d]]+1;i++)                  //LCA倍增
        fa[d][i]=fa[fa[d][i-1]][i-1];
    int l=v[d].size();                    //l也是当前结点直接连接其他结点数量
    dp[d]=l+sum;                          //sum是之前父链的和
    fo(0,l-1){
        int now=v[d][i];
        if(pre!=now){
            dfs(now,d,dp[d]);
        }
    }
}
int LCA(int a,int b)
{
    if(h[a]<h[b]) swap(a,b);
    for(int i=lg[h[a]]+1;i>=0;i--){
        if(h[a]-(1<<i)>=h[b])
            a=fa[a][i];
    }
    if(a==b) return a;
    for(int i=lg[h[a]]+1;i>=0;i--)
        if(fa[a][i]!=fa[b][i]){
            a=fa[a][i];
            b=fa[b][i];
        }
    return fa[a][0];
}
int main(){
    cin>>n>>m;
    fo(1,n-1){
        cin>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs(1,0,0);
    while(m--){
        int x,y;
        cin>>x>>y;
        int d=LCA(x,y);
        cout<<dp[x]+dp[y]-dp[d]-dp[p[d]]<<endl;
    }
    return 0;
}

试题 I: 齿轮

 题意:给一个数组为齿轮大小,问能不能换顺序后,尾转的速度是首转的速度的qi倍,询问Q次。

思路:不难发现这个中间的没有用,就是首的半径=尾的半径*qi就可。而且这种排序是随便的,只需要找这个数组中有没有两个数相除==qi即可。

那么需处理出这个数组所有的可有倍数即可。具体看代码更容易理解,这个时间复杂度是n*logn的,对1e6也应该能用,注意倍数1的判断

预处理代码:

for(int i=1;i<=MAX;i++){            //MAX=2e5
        if(vis[i]==1){                //vis[i]表示i在该数组中
            for(int j=i*2;j<=MAX;j+=i){
                if(vis[j]==1) ans[j/i]=1;        //ans是结果数组
            }    
        }
    }

代码:

#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define LL long long
#define M 1000005
int MAX=400005;
int n,m,flag=0;
int a[M];
int vis[M],ans[M];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(vis[a[i]]==1) flag=1;        //单独判断ans[1]
        vis[a[i]]=1;            //表明数组有这个数
    }
    if(flag) ans[1]=1;
    for(int i=1;i<=MAX;i++){
        if(vis[i]==1){
            for(int j=i*2;j<=MAX;j+=i){
                if(vis[j]==1) ans[j/i]=1;
            }
        }
    }
    int x;
    while(m--){
        cin>>x;
        if(ans[x]) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}

试题 J: 搬砖

 题意:选取若干个从上到下放,重量不能小于上面的和,求总价值最大

思路:可能是动态规划,写差不多觉得和题意有点出入,就直接dfs暴力

暴力挺简单的,先结构体排序,重量小的一定先选在上面,不然直接压垮了。然后同重量的价值大的一定先选。

dfs出所有的1-n排序,也就是:

1 2 3 4 5

1 2 3 4

3 4 5

2 4 5

这些

....

然后计算判断更新最后答案

代码:

#include<bits/stdc++.h>
using namespace std;
#define fo(a,b) for(int i=a;i<=b;i++)
#define inf 0x3f3f3f3f
#define LL long long
#define M 200005
int n,maxx=0;
struct Node
{
    int a,b;
    bool operator<(const Node temp)const{
        if(a==temp.a) return b>temp.b;
        return a<temp.a;
    }
}x[M];

//此代码是暴力代码,只能过30%

int q[M],v=0;
void dfs(int d,int pre){
    if(d==n){                //判断q数组中的顺序是否合法
        int sum=0,ans=0;
        for(int i=1;i<=v;i++){
            if(x[q[i]].a<sum) break;
            sum+=x[q[i]].a;
            ans+=x[q[i]].b;
            if(i==v) maxx=max(maxx,ans);
        }
        return;
    }
    for(int i=pre+1;i<=n;i++){
        q[++v]=i;
        dfs(d+1,i);
        v--;
    }
    if(v!=0) dfs(d+1,pre);
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>x[i].a>>x[i].b;
    sort(x+1,x+n+1);
    dfs(0,0);
    cout<<maxx<<endl;
    return 0;
}

结尾:

        看了下演草纸,才用了1页多,一般比赛要好几页的。不少题是算法及相关的题,总体acm选手估计是叫好,但是对其他选手不清楚了,这题个人觉得难度适中,因为往年很多题不能暴力,而且到现在,那些题也没有题解(csdn上)。今年只有一题没看,一个暴力,难度肯定是降了不少的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第十三届蓝桥杯c++b组2022年国赛决赛题解 的相关文章

随机推荐

  • 2021-10-27

    十进制整数转换 xff0c 使用链栈实现 xff0c 实验报告 内容 xff1a 将十进制整数num转换为r进制数 xff0c 其转换方法为辗转相除法 xff0c 要求用链栈实现 算法分析 xff1a 程序中设计了四个函数 函数IiStac
  • C++生成随机数

    随机数通过 随机数引擎类 和 随机数分布类 引擎类可以生成 unsigned xff08 无符号数 xff09 随机数序列 xff1b 分布类使用一个引擎类生成指定类型的 在给定范围内的 服从特定概率分布的随机数 它们定义在头文件 rand
  • 进程间的通信-信号量(C语言)

    目录 一 信号量 1 什么是信号 2 在linux下 xff0c 有哪些信号 3 在linux下 xff0c 这些信号究竟是由谁来发出 4 用户如何发送信号给进程 xff1f 二 信号的函数接口 1 如何发送信号给另外一个进程 2 如何捕捉
  • Python实现设计模式之工厂模式

    引言 设计模式是可重复使用的编程方案 xff0c 已被用于各种现实世界的环境中 xff0c 并被证明能产生预期的结果 在本文中 xff0c 我们将学习最常见的设计模式之一 xff1a 工厂模式 正如我们稍后将看到的 xff0c 这种模式使我
  • 地表最强AI 辅助编程工具——GitHub Copilot安装教程

    GitHub Copilot 文章目录 GitHub Copilot一 GitHub Copilot 介绍二 GitHub Copilot 通行证注册流程1 打开GitHub Copilot 网址 https copilot github
  • 【暑期每日一题】洛谷 P1605 迷宫

    题目链接 xff1a P1605 迷宫 洛谷 计算机科学教育新生态 luogu com cn 题目描述 给定一个 N M 方格的迷宫 xff0c 迷宫里有 T 处障碍 xff0c 障碍处不可通过 在迷宫中移动有上下左右四种方式 xff0c
  • 关于外网访问本地服务器

    我在网上查到的外网访问本地服务器的方式有两种 xff1a 第一种是通过内网穿透的技术实现的 第二种是通过申请域名 xff0c 申请空间 xff0c 申请云服务器 xff0c 搭建网站实现的 内网穿透的方式实现外网访问本地服务器 选择合适的内
  • Python基础知识点-- if 语句

    此文章为Python基础知识点 xff08 从入门到实践 xff09 if 语句 xff0c 此节Python基础知识点包括 xff1a 条件测试 if 语句 使用if 语句处理列表 设置 if 语句格式 目录 一 条件测试 1 1 检查是
  • SecureCRT 上传文件

    目录 一 xff0e 用SecureCRT来上传和下载文件 1 在使用SecureCRT上传下载之前需要给服务器安装lrzsz xff1a 2 命令sz rz的使用方法 xff1a 3 设置上传 下载文件的默认目录 二 使用TFP上传 一
  • 【错误解决】Segmentation fault (core dumped)爆栈解决

    大家好 xff0c 我是编程的赛赛 xff0c 专注于保姆级代码教程 说明 Segmentation fault core dumped 这个错误在Linux下运行程序时出现的原因多种多样 xff0c 本质大多是内存操作错误 xff0c 以
  • Debian10自签CA证书

    基础知识 1 3思路 想构建CA必须要了解CA构建的情况 请先参照加密解密方面博客 简单思路如下 构建私有CA 生成私钥 自签署证书 2 给节点发放证书 节点申请证书 生成私钥 生成证书签署请求 把请求文件发送给CA 3 CA签署证书 验正
  • Debian10安装教程

    Debian 10 Buster 安装过程图文详解 360doc com nbsp 需求 nbsp 步骤 由于比赛是最小安装 这里我们选择第二项 第一项是图像化界面 第二项是字符界面 语言 nbsp 根据赛题要求 这里选择语言为Englis
  • Questa-sim安装最后一步点了是之后,安装了hardlock.sys文件导致电脑无限蓝屏重启的解决方案

    学习FPGA xff0c 需要安装Questa sim仿真软件 xff0c 没有提前看安装教程 xff0c 在软件安装的最后一步 xff0c 本应该点击否 xff0c 我点了是以后电脑直接蓝屏无限重启 xff0c 真是反人类的设计 xff1
  • 用定时器计数器计算初值

    只需要输入晶振频率 定时时长和计时方式 一般选择方式1 即可 如晶振为12MHz 定时时长为50ms 方式1 xff0c 即可计算出初值为3CB0 xff0c 如下图所示 总结 xff1a 定时器在单片机有着极其重要的作用 xff0c 利用
  • Linux系统管理---xfs文件系统--centos7

    目录 一 XFS文件系统 xff1a 1 数据区 xff08 data section xff09 2 文件系统活动登录区 xff08 log section xff09 3 实时运行区 xff08 realtime section xff
  • 中文code:blocks安装(三分钟包安装成功,不成功你找我)

    目录 一 下载code bocks压缩包并解压 a 百度网盘下载压缩包 xff08 不需安装了 xff09 b 创键快捷方式并拉到桌面 二 一步完成汉化 xff0c 两步完成调试环境 a 打开上面创建在桌面上的快捷方式 b 一步汉化 c 两
  • 2021-2022年度第三届全国大学生算法设计与编程挑战赛(冬季赛)题解(7道题)

    只有 xff1a B xff0c D xff0c E xff0c G xff0c I xff0c K xff0c L 正文 B xff1a 题目链接 Error 题目 xff1a 思路 xff1a 二分 二分给出一个d xff0c 先考虑第
  • mysql jar包下载(直接链接下载)

    mysql connector java 8 0 23 jar的下载链接 xff1a mysql jar包下载 服务器一年后过期 xff0c 过期的话先用百度网盘下载吧 链接 xff1a https pan baidu com s 187w
  • Druid-1.1.12.jar下载 (链接下载+使用)

    链接下载 xff1a 下载链接 不行的话用网盘下载 网盘下载 xff1a 链接 xff1a https pan baidu com s 1VUvRj VuxCDd3fb uvA8Q pwd 61 1111 提取码 xff1a 1111 下载
  • 第十三届蓝桥杯c++b组2022年国赛决赛题解

    写的不是很好 xff0c 8000 43 浏览量后开的粉丝可见 xff0c 希望涨一点点粉 觉得还阔以的 xff0c 就不要取关了Fight xff4f 39 39 题目pdf下载 xff1a 第十三届蓝桥杯大赛软件赛决赛pdf下载 G题没