2022蓝桥杯省赛C++A组初尝试

news2024/11/17 11:34:25

前言

耗时三个半小时,看看自己不懂的有多少,以便明确后续备赛2023方向

耗时3个半小时,只拿了18分,没学过,时间再多也做不出来,有奥数那感觉了 

据说蓝桥杯省3得做对 2填空 + 2大题(30分),省2要 2填空 + 3大题(45分),省1需要 2填空 + 4大题(60分)

题目

1,2021: [蓝桥杯2022初赛] 裁纸刀        耗时10分钟,到手5分

题目

小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。
小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来,下图给出了一种裁法

在上面的例子中,小蓝的打印机没办法打印到边缘,所以边缘至少要裁4次。
另外,小蓝每次只能裁一张纸,不能重叠或者拼起来裁。
如果小蓝要用一张纸打印出 20 行 22 列共 440 个二维码,他至少需要裁多少次? 

分类:入门题,模拟

我的代码          

口口口   此时行数n = 2, 列数m = 3, 由题目可知第一步裁掉边缘要4次
口口口

IIIIIIIIII>>>>>>   第二步:竖着裁成这样子

口    口    口
口    口    口      要裁 4 + 2 次,2 = m - 1,第三步:

口    口    口

口    口    口  把每条裁开,要裁 4 + 2 + 3 次,3 = m(n - 1)

再在草稿纸上画出n = 3, m = 4裁掉的过程,可以验证正确

∴ 一共要裁 4 + (m - 1) + m(n - 1) = mn + 3 次,代入n = 20, m = 22可得443

2,2022: [蓝桥杯2022初赛] 灭鼠先锋        耗时50分钟,到手5分

题目

灭鼠先锋是一个老少咸宜的棋盘小游戏,由两人参与,轮流操作。
灭鼠先锋的棋盘有各种规格,本题中游戏在两行四列的棋盘上进行。
游戏的规则为:两人轮流操作,每次可选择在棋盘的一个空位上放置一个棋子,或在同一行的连续两个空位上各放置一个棋子,放下棋子后使棋盘放满的一方输掉游戏
小蓝和小乔一起玩游戏,小蓝先手,小乔后手。小蓝可以放置棋子的方法很多,通过旋转和翻转可以对应如下四种情况:
 

XOOO XXOO OXOO OXXO
OOOO OOOO OOOO OOOO

其中 O 表示棋盘上的一个方格为空,X 表示该方格已经放置了棋子。
请问,对于以上四种情况,如果小蓝和小乔都是按照对自己最优的策略来玩游戏,小蓝是否能获胜。
如果获胜,请用 V 表示,否则用 L 表示。
请将四种情况的胜负结果按顺序连接在一起提交。
这是一道结果填空的题,你只需要算出结果后输出即可。
本题的结果为一个长度为 4 的由大写字母 V 和 L 组成的字符串,如 VVLL,在提交答案时只需输出这个字符串

分类:基础题,博弈

我的代码          

         首先小蓝先手(看草稿纸,假设小蓝为o,小乔为x),两行四列共8格子,所以当一次放 2 棋子的次数为0,2,4时,必然小乔放满结束游戏,此时小蓝赢。由于都有最优策略,4次 2 棋子的情况不会有,所以注意0次2棋子和2次2棋子即可。

        然后我对照着四种情况,假设自己是小乔,努力找小蓝必输的情况,所有情况试一遍找不到小蓝必输,则默认必赢,也就是V。同时,基于上面找到的规律,小蓝下一步棋子我可以往后看3步,大大节省了时间。同时注意 2棋子 只能放于同一行连续两个,这又是个限制条件,只需占据中间两竖即可限制对方。

        所以最后推出LLLV

3,2023: [蓝桥杯2022初赛] 求和        耗时20分钟,到手7分 

题目

给定n个整数a[1],a[2],...,a[n],求两两相乘再相加的和,即
S=a[1]·a[2]+a[1]·a[3]+...+a[1]·a[n]+a[2]·a[3]+...+a[2]·a[n]+...+a[n-1]·a[n]

输入

第一行为正整数n,第二行为n个整数。
30%的数据:2≤n≤1000,1≤a[i]≤100。
100%的数据:2≤n≤200000,1≤a[i]≤1000。

输出

输出一个数字表示答案S。

输入

4
1 3 6 9

输出

117

分类:基础题,思维题 

我的代码          Accepted 70%   

#include<iostream>
using namespace std;

int a[200020];

int main()
{
    int n;
    cin>>n;
    for(int i = 0; i < n; ++i)
        cin>>a[i];
    long long sum = 0;
    for(int i = 0; i < n - 1; ++i)
        for(int j = i + 1; j < n; ++j) {
            sum  = sum + a[i] * a[j];
        }
    cout<<sum<<endl;

    return 0;
}

别人代码 Accepted 100%

#include<iostream>
using namespace std;

int a[200020];

int main()
{
    int n;
    cin>>n;
    for(int i = 0; i < n; ++i)
        cin>>a[i];//输入数组
    long long sum = 0, temp = 0;

    for(int i = 0; i < n; ++i) {
        sum += temp * a[i];
        temp += a[i];//保存上一个数据
    }//通过中间变量temp,我们不用打两层for循环
    cout<<sum<<endl;

    return 0;
}

4,2024: [蓝桥杯2022初赛] 选数异或        耗时2小时,到手1分

题目

给定一个长度为 n 的数列A1,A2,... , An 和一个非负整数 x
给定 m 次查询, 每次询问能否从某个区间 [l, r] 中选择两个数使得他们的异或等于 x

输入

输入第一行包含三个整数n,m,x
第二行包含n个整数A1,A2,...,An
接下来m行,每行两个整数l,r表示询问区间[l, r]
20%的测试数据:1≤n,m≤100;
40%的测试数据:1≤n,m≤1000;
100%的测试数据:1≤n,m≤100000,0≤x,Ai<2^20,1≤l≤r≤n;

输出

对于每个询问, 如果该区间内存在两个数的异或为 x 则输出yes, 否则输出no

输入

4 4 1
1 2 3 4
1 4
1 2
2 3
3 3

输出

yes
no
yes
no

分类:进阶题,线段树,ST表 

我的代码  Accepted 10%  

#include<iostream>
using namespace std;

int a[100010];

int main()
{
    long long n, m, x;//n个整数, m行查询, 能否异或等于x
    cin>>n>>m>>x;
    long long left, right;

    for(int i = 1; i <= n; ++i)
        cin>>a[i];//输入n个整数

    while(m) {
        int flag = 1;
        cin>>left>>right;//表示区间[left, right]
        for(int i = left; i < right; ++i) {//外层for
            int temp = a[i]^x;
            for(int j = i + 1; j <= right; ++j) {//内层for
                if(temp == a[j]) {
                    cout<<"yes"<<endl;
                    flag = 0;
                }
            }//内层for
            if(i == right - 1 && flag == 1)//遍历完且未输出yes
                    cout<<"no"<<endl;
        }//外层for
        m--;

        //补充两个整数相等的情况
        if(left == right && x == 0)
            cout<<"yes"<<endl;
        if(left == right && x != 0)
            cout<<"no"<<endl;
    }

    return 0;
}

解题基本思路是

若 a^b == x,则 a^x == b 且 b^x == a

#include<iostream>
using namespace std;

int main()
{
    int a = 3^5;
    int b = a^3;
    int c = a^5;
    cout<<b<<endl<<c<<endl;

    return 0;
}

 输出

5
3

 但我还是不会,看看答案代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 100000 + 10;
int tree[maxn << 2];
int Left[maxn], pos[(1 << 20) + 10];
int a[maxn], n, m, x;

//线段树模板
void build(int o, int l, int r)
{
    if(l == r)
    {
        tree[o] = Left[l];
        return;
    }
    int mid = (l + r) >> 1;
    build(o << 1, l, mid);
    build(o << 1 | 1, mid + 1, r);
    tree[o] = max(tree[o << 1], tree[o << 1 | 1]);
}
int query(int o, int l, int r, int L, int R)
{
    if(L <= l && r <= R)return tree[o];
    int mid = (l + r) >> 1;
    int ans = 0;
    if(L <= mid)ans = max(ans, query(o << 1, l, mid, L, R));
    if(R > mid)ans = max(ans, query(o << 1 | 1, mid + 1, r, L, R));
    return ans;
}

int main()
{
    scanf("%d%d%d", &n, &m, &x);
    for(int i = 1; i <= n; i++) //预处理Left数组
    {
        scanf("%d", &a[i]);
        Left[i] = pos[a[i] ^ x];
        pos[a[i]] = i;
    }
    build(1, 1, n);//线段树建树
    while(m--)
    {
        int l, r;
        scanf("%d%d", &l, &r);
        if(query(1, 1, n, l, r) >= l)//查询区间最值
            printf("yes\n");
        else
            printf("no\n");
    }
    return 0;
}

总结 

容易发现,2022年的题目普遍难于往年,尤其是A组,最难,比研究生组都难,,,

然后我统计了下2022Python,C++,Java的A,B,G组题目中,每个类型出现的次数:

考的最多的是:

模拟,数论,线段树,动态规划

里面比较简单而目前未掌握的有:

二分,差分,贪心,链表,博弈,枚举

多余的解释 - 许嵩 - 单曲 - 网易云音乐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PMP®项目管理|不同场景使用不同沟通方式

不同沟通方式的确有适用场景和不适用场景。无效沟通的重要原因之一就是错误选择沟通方式。 我们会在工作中用到很多沟通方式&#xff0c;每种沟通方式都有适用的场合&#xff0c;也有不适用的场合&#xff0c;错误选择将使沟通变得低效甚至无效。 沟通方式主要有三种&#xf…

一百种语言的LOVE

2023年快要到来啦&#xff0c;很高兴这次我们又能一起度过~ 目录 一、前言 二、详细介绍 三、效果展示 四、代码编写 index.html script.js style.css 五、获取代码 需要源码&#xff0c;可以私信我(⊙o⊙)&#xff1f;关注我&#xff1f; 一、前言 时光荏苒&#xf…

vue element-ui 手机号校验 验证码校验 获取验证码倒数60秒无样式实现

这段时间被迫搞前端搞裂开了&#xff0c;记录一下手机号验证码校验登录的极简无样式前端实现 巨丑&#xff01;希望大佬们不介意 下面是先演示效果 点击登陆后显示校验信息 输入手机号点击获取验证码 输入符合校验的内容后点击登录提示成功 无后端交互&#xff01;&#…

从档案信息管理到档案知识管理

今年6月份的时候&#xff0c;笔者发过一篇文章《DIKW模型在档案信息资源开发中的应用》&#xff0c;简要阐述了知识管理领域非常著名的DIKW模型&#xff0c;即从数据&#xff08;Data&#xff09;→信息&#xff08;Information&#xff09;→知识&#xff08;Knowledge&#x…

基于SpringBoot和微信小程序的餐馆点餐系统的设计和实现

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

Android 学习笔记

目录一.Android入门1.Android 概述2.Android Studio3.创建模拟器4.使用外部模拟器5.第一个app二.app开发基础1.开发语言2.app工程目录结构3.文本控件TextView(1)设置文本内容(2)设置文本大小(3)设置文本颜色(4)设置背景颜色(5)设置视图宽高(6)设置视图间距(7)设置视图对齐方式4…

fpga实操训练(硬件乘法器)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 fpga上面的资源一般分成lut、pin、dff、dsp、pll。至于rom、ram、fifo&#xff0c;一般也是基于dff和lut来创建的&#xff0c;之前我们也讨论过。今…

ABAP 之ALV展示及下钻弹窗数据页面

序 HELLO, 这里是百里一个学习中的ABAPER,这里记录工作学习中遇到的bug,知识内容等内容.今天讲的是在工作中经常会使用的数据下钻,通过跳出小界面的方式展示关联数据.今天结合工作经验这里做下技术总结. 下钻简介 在ALV报表展示中.会出现关键字段下钻,展示某个界面或者系统自…

C语言基础--操作符详解

文章目录一、操作符1. 算数操作符2. 移位操作符&#xff08;1&#xff09;右移操作符举例补充&#xff08;2&#xff09;左移操作符举例分析&#xff08;3&#xff09;警告3.位操作符&#xff08;1&#xff09;按位与&#xff08;2&#xff09;按位或&#xff08;3&#xff09;…

小程序之后台交互--个人中心

目录一、微信登录流程简介二、微信用户信息获取1、index.js2、index.wxml三、微信登录流程代码详解1、后台准备①导入微信小程序SDK②application.yml③WxProperties④WxConfig⑤WxAuthController1、登录-小程序①login.js②user.js③util.js四、emoji的存储1、修改配置文件my.…

ArcGIS基础实验操作100例--实验24提取栅格独立格网面

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验24 提取栅格独立格网面 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;…

VMware 中 克隆多台虚拟机 快速创建虚拟机集群

我们在实际开发中可能会涉及到多台虚拟机&#xff0c;所以我们这里就模仿企业的方式进行多台虚拟机的操作方法&#xff1a; 我们现在就来学习一下如何用一台已有的虚拟机克隆出多台虚拟机。 我们第一步先来进行虚拟机的克隆&#xff1a; 我们现在就有了3太虚拟机了。 启动第一…

excel超链接应用:快速生成目录的几个方法-下

在上篇文章中&#xff0c;我们说到了基本的制作目录的方法&#xff0c;以及用宏表函数和超链接函数制作目录、用快捷键CTRLF制作目录的方法。今天我们要分享的另外三种方法&#xff0c;保证小伙伴们闻所未闻见所未见&#xff0c;一个公式都不用&#xff0c;就能完成目录的制作&…

镜头分辨率的计算和理解

镜头分辨力 计算和理解 1、镜头分辨率 镜头的分辨率是指在成像平面上 1 毫米间距内能分辨开的黑白相间的线条对数&#xff0c;单位是“线对/毫米”&#xff08; lp/mm&#xff0c;line-pairs/mm &#xff09; 最小能分辨的尺寸是线对数的2倍倒数。 例如&#xff1a;镜头分辨率…

Spark 3.0 - 16.ML SVD 奇异值分解理论与实战

目录 一.引言 二.奇异值分解理论 1.行矩阵 RowMatrix 2.奇异值分解算法 三.奇异值分解实战 1.构建 RowMatrix 2.奇异值分解 SVD 四.总结 一.引言 奇异值分解是矩阵分解计算的一种常用方法&#xff0c;矩阵分解主要用于数据降维&#xff0c;通过将高维的数据映射到低维…

Navicat 16 中改进了的协同合作

几年前&#xff0c;当 Navicat 团队加入 Navicat Cloud 协同合作工具时&#xff0c;几乎没有人知道一个全球大流行的疫情会使协同合作成为大多数组织的重要组成部分&#xff0c;尤其是那些提供任何信息技术&#xff08;IT&#xff09;相关服务的组织。在 2021 年的最后几天&…

ArcGIS基础实验操作100例--实验26创建多分辨率DEM

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验26 创建多分辨率DEM 目录 一、实验背景 二、实验数据 三、实验步骤 方法一&#xff…

嵌入式C语言设计模式 --- 关于工厂模式的总结

前面三篇关于工厂模式的文章,主要介绍了三种工厂模式,分别是:简单工厂模式、工厂方法模式、抽象工厂模式。 关于这三种工厂模式,都各有利弊,应该根据不同的业务开发场景进行选择使用。 图片来源:网络 简单工厂模式 是最容易理解的一种设计模式,简单工厂模式不属于23种…

Spring循环依赖探究

1. 前言 Spring在较新版本中已经默认不允许bean之间发生「循环依赖」了&#xff0c;如果检测到循环依赖&#xff0c;容器启动时将会报错&#xff0c;此时可以通过配置来允许循环依赖。 spring.main.allow-circular-referencestrue什么是循环依赖&#xff1f; 循环依赖也叫循环…

【Python百日进阶-数据分析】Day143 - plotly箱线图:px.box()实例

文章目录四、实例4.1 plotly.express箱线图4.1.1 基本箱线图4.1.2 为 x的每个值绘制一个箱线图4.1.3 显示基础数据4.1.4 选择计算四分位数的算法4.1.5 四分位数算法之间的区别4.1.6 风格箱线图4.1.7 Dash中的箱线图四、实例 箱线图是变量通过其四分位数分布的统计表示。盒子的…