蓝桥杯2023真题(2)

news2024/10/6 8:40:57

1.硬币兑换

在这里插入图片描述

#include <iostream>
using namespace std;
int main()
{
  int a[5000] = {0}, ans = 0;
  //coin1
  for(int i = 1; i <= 2023; i++){
    //coin2
    for(int j = i + 1; j <= 2023; j++){
      a[i + j] += i;
      ans = max(ans, a[i + j]);
    }
  }
  cout<<ans;
  return 0;
}

2.更小的数

在这里插入图片描述

//暴力枚举
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
  string s;
  cin>>s;
  int n = s.size(), ans = 0;
  for(int i = 0; i < n; i++){
    for(int j = i + 1; j < n; j++){
      string t = s;
      //反转[i, j + 1)的字符
      reverse(t.begin() + i, t.begin() + j + 1);
      if(t < s) ans++;
    }
  }
  cout<<ans;
  return 0;
}

//区间dp
#include <iostream>
using namespace std;
const int N = 5005;
int f[N][N], a[N]; //f[i][j]: [i, j]是否可以反转

int main()
{
  string s;
  cin>>s;
  int n = s.size(), ans = 0;
  //字符转化成数字
  for(int i = 1; i <= n; i++) a[i] = s[i - 1] - '0';
  //区间长度
  for(int len = 1; len < n; len++){
    //区间两个端点
    for(int i = 1, j = i + len; j <= n; i++, j = i + len){
      if(a[i] == a[j]){
        //长度小于等于3,首位相同,反转了值一样
        if(j - i == 1 || j - i == 2) f[i][j] = 0;
        //如果长度大于3,那就往里面扩展,判断是否满足
        else f[i][j] = f[i + 1][j - 1];
      }
      if(a[i] > a[j]) f[i][j] = 1;
      if(a[i] < a[j]) f[i][j] = 0;
      if(f[i][j]) ans++;
    }
  }
  cout<<ans;
  return 0;
}

3.颜色平衡树

在这里插入图片描述

#include<iostream>
#include<cstring>
#include<unordered_map>
using namespace std;
const int N = 2e5 + 10;
int h[N], e[N], ne[N], idx;
int n, c[N], ans;
unordered_map<int, int> mp; //根节点存储所有的颜色和数量

void add(int x, int y){
  e[idx] = y;
  ne[idx] = h[x];
  h[x] = idx;
  idx++;
}

//m存储的是父节点,必须加引用
void dfs(int u, unordered_map<int, int> &m){
  //如果是叶子节点,就返回
  if(h[u] == -1){
    //cout<<u<<endl;
    m[c[u]]++;
    ans++;
    return;
  }
  //存储当前节点加他的子节点的颜色和数量
  unordered_map<int, int> t;
  t[c[u]]++;
  //遍历当前节点的子节点
  for(int i = h[u]; i != -1; i = ne[i]){
    int j = e[i];
    //cout<<j<<endl;
    dfs(j, t);
  }
  
  int pre = 0, f = 1;
  //遍历父节点加子节点
  for(auto it : t){
    //父节点加上当前节点和当前节点的子节点
    m[it.first] += it.second;
    //如果有颜色,且当前节点和他的子节点中有颜色数量不同的
    if(pre && pre != it.second) f = 0;
    pre = it.second; 
  }
  if(f){
    //cout<<u<<endl;
    ans++;
  }
}

int main(){
  memset(h, -1, sizeof(h));
  scanf("%d", &n);
  int x, y;
  for(int i = 1; i <= n; i++){
    scanf("%d%d", &x, &y);
    add(y, i);
    c[i] = x;
  }
  //传入根节点
  dfs(1, mp);
  printf("%d", ans);
  return 0;
}

4.买瓜

在这里插入图片描述

#include<iostream>
#include<algorithm>
using namespace std;
double a[35], b[35];
int n, m, ans = 1e9, f;

bool cmp(const double &p, const double &q){
  return p > q;
}

//第几个瓜,切了几刀,总和多少
void dfs(int u, int cnt, double sum){
  //如果当前总和大了,或者小了,就减枝
  if(sum > m || sum + b[u] < m) return;
  if(sum == m){
    f = 1;
    ans = min(ans, cnt);
    return;
  }
  //这个判断要放在后面,防止最后一个数没算上就返回了
  if(u > n) return;
  dfs(u + 1, cnt, sum + a[u]);
  dfs(u + 1, cnt + 1, sum + a[u] / 2);
  dfs(u + 1, cnt, sum);
}

int main()
{
  cin>>n>>m;
  for(int i = 1; i <= n; i++) cin>>a[i];
  //降序排列,先加重量大的
  sort(a + 1, a + n + 1, cmp);
  //存储后缀和,用来减枝
  for(int i = n; i > 0; i--) b[i] = b[i + 1] + a[i];
  dfs(1, 0, 0);
  if(!f) printf("-1");
  else printf("%d", ans);
  return 0;
}

5.网络稳定性

在这里插入图片描述

give up

6.异或和之和

在这里插入图片描述

//暴力枚举
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N], n;
long long ans;

int main()
{
    scanf("%d", &n);
    for(int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    for(int i = 0; i < n; i++){
        int res = 0;
        for(int j = i; j < n; j++){
            res ^= a[j];
            ans += res;
        }
    }
    printf("%lld", ans);
    return 0;
}

//位运算
//a ^ b = c -> b ^ c = a, a ^ c = b
//[l, r]的异或和 = pre[r] ^ pre[l - 1], pre是前缀异或和
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N], cnt[25][5], n; //cnt[i][j]: 第i位j的个数
long long ans;

int main()
{
  scanf("%d", &n);
  for(int i = 1; i <= n; i++){
    scanf("%d", &a[i]);
    //异或前缀和
    a[i] ^= a[i - 1];
  }

  //[i, j]的异或和 = a[j] ^ a[i - 1],因为 a ^ b = c,a ^ c = b
  // for(int i = 1; i <= n; i++)
  //   for(int j = i; j <= n; j++)
  //     ans += a[j] ^ a[i - 1];
  //下面就是优化这个步骤

  //遍历二进位每一位
  for(int i = 0; i <= 20; i++)
    //遍历每一个数,j从0开始是因为计算前缀异或和要用到a[0]
    for(int j = 0; j <= n; j++)
      cnt[i][(a[j] >> i) & 1]++;
  //乘法原理,把所有情况乘起来
  for(int i = 0; i <= 20; i++){
    ans += (long long)cnt[i][0] * cnt[i][1] * (1 << i);
  }
  printf("%lld", ans);
}

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

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

相关文章

idea中vue文件如何快捷打出html标签结构,不写<

例如写一个<button></button>标签&#xff1a;快捷键如下 先写一个button&#xff0c;然后再按tab键即可自动生成一对标签。 演示&#xff1a; 步骤一&#xff1a; 步骤二&#xff1a;

【Java程序设计】【C00271】基于Springboot的地方美食分享网站(有论文)

基于Springboot的地方美食分享网站&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的地方美食分享网站 本系统分为系统功能模块、管理员功能模块、以及用户功能模块。 系统功能模块&#xff1a;网站首页可以查看首…

揭秘外观模式:简化复杂系统的关键设计策略

前言 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它隐藏了系统的复杂性&#xff0c;并向客户端提供了一个可以访问系统的接口。这种类型的设计模式向现有的系统添加一个接口&#xff0c;来隐藏系统的复杂性。这种模式涉及到一个单一的类…

Android的常用Drawable讲解

今天来讲讲Android开发中水都绕不开的东西----drawable。最常使用的莫过于通过XML所声明的Drawable作为View背景&#xff0c;通过代码创建的应用场景则较少。其有着使用简单&#xff0c;比自定义view的成本要低的特点。同时&#xff0c;非图片类型的drawable占用空间较小&#…

【项目日记(九)】项目整体测试,优化以及缺陷分析

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

Linux|centos7下的编译|ffmpeg的二进制安装

Windows版本的ffmpeg&#xff1a; ###注意&#xff0c;高版本可能必须要windows10以及以上才支持&#xff0c;win7估计是用不了的 下载地址&#xff1a;Builds - CODEX FFMPEG gyan.dev 或者这个下载地址&#xff1a;https://github.com/BtbN/FFmpeg-Builds/releases 这两个…

如何升级至ChatGPT Plus:快速指南,ChatGPT的秘密武器GPT4.0是什么?

提到 ChatGPT。想必大家都有所耳闻。自从 2022 年上线以来&#xff0c;就受到国内外狂热的追捧和青睐&#xff0c;上线2个月&#xff0c;月活突破1个亿&#xff01;&#xff01;&#xff01; 而且还在持续上涨中。因为有很多人都在使用 ChatGPT 。无论是各大头条、抖音等 App、…

嵌入式Qt 第一个Qt项目

一.创建Qt项目 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框&#xff0c;选择Qt Widgets Application 选择【Choose】按钮&#xff0c;弹出如下对话框 设置项目名称和路径&#xff0c;按照向导进行下一步 选…

vue3 腾讯tdesign 后台管理框架的使用

1.介绍 TDesign 是具有包容性的设计体系&#xff0c;它强调为业务提供产品、服务等过程中&#xff0c;追求以人为本、人人受益的包容性&#xff0c;要求搭建过程中&#xff0c;了解业务底层&#xff0c;理解业务场景的多样性&#xff0c;并在繁杂的业务场景中寻找共性和特性&a…

论文阅读:GamutMLP A Lightweight MLP for Color Loss Recovery

这篇文章是关于色彩恢复的一项工作&#xff0c;发表在 CVPR2023&#xff0c;其中之一的作者是 Michael S. Brown&#xff0c;这个老师是加拿大 York 大学的&#xff0c;也是 ISP 领域的大牛&#xff0c;现在好像也在三星研究院担任兼职&#xff0c;这个老师做了很多这种类似的工…

unity2017 遇到visual studio 2017(社区版) 30日试用期到了

安装unity2017 遇到visual studio 2017 30日试用期到了&#xff0c;网上百度搜了好多方法都没有成功。 最后用了这个方法&#xff1a; 1)启动vs2017&#xff0c;在弹出要登录的窗口之前&#xff0c;迅速的点击工具-》选项-》账户&#xff0c;勾选在添加账户或对账户重新进行身…

Netty应用(九) 之 编解码器概念 Netty常见的编解码器

目录 22.编解码器 22.1 编解码的概念 22.2 netty中的编解码 22.3 序列化 23.编解码器在使用过程中的两部分核心内容 23.1 序列化协议&#xff08;编码格式&#xff09;&#xff08;传输数据的格式&#xff09; 23.1.1 Java默认的序列化与反序列化 23.1.2 XML的序列化与反…

LeetCode 0987.二叉树的垂序遍历:遍历时存节点信息,遍历完自定义排序

【LetMeFly】987.二叉树的垂序遍历&#xff1a;遍历时存节点信息&#xff0c;遍历完自定义排序 力扣题目链接&#xff1a;https://leetcode.cn/problems/vertical-order-traversal-of-a-binary-tree/ 给你二叉树的根结点 root &#xff0c;请你设计算法计算二叉树的 垂序遍历…

Java语法学习反射

Java语法学习反射 大纲 基本介绍class的介绍 具体案例 1. 基本介绍 流程图&#xff08;程序在计算机的阶段&#xff09; 反射的主要的类 这个提高效率不大 2. class的介绍 对于第三点&#xff1a;首先类只会加载一次&#xff0c;得到的class的对象&#xff0c;也只有一…

Python爬虫之Ajax数据爬取基本原理

前言 有时候我们在用 requests 抓取页面的时候&#xff0c;得到的结果可能和在浏览器中看到的不一样&#xff1a;在浏览器中可以看到正常显示的页面数据&#xff0c;但是使用 requests 得到的结果并没有。这是因为 requests 获取的都是原始的 HTML 文档&#xff0c;而浏览器中…

【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…

Apache 神禹(shenyu)源码阅读(一)——Admin向Gateway的数据同步(Admin端)

源码版本&#xff1a;2.6.1 单机源码启动项目 启动教程&#xff1a;社区新人开发者启动及开发防踩坑指南 源码阅读 前言 开了个新坑&#xff0c;也是第一次阅读大型项目源码&#xff0c;写文章记录。 在写文章前&#xff0c;已经跑了 Divide 插件体验了一下&#xff08;体…

Java的常见api以及异常情况-2

目录 1、equals方法源码解读 2、replace替换方法 3、split分割方法 4、indexOf方法 5、常见的api 1、equals方法源码解读 public class API_test04 {public static void main(String[] args) {String str1 "rx";String str2 "rx";System.out.prin…

模态、模式和真实发生

模态和模式均是用来描述某一对象或系统可能出现的特性、状态或行为&#xff0c;它们既包括逻辑上的抽象可能性&#xff0c;也涵盖现实中具体的现象和事件结构。模态更多地关联于逻辑可能性和必然性&#xff0c;而模式则侧重于现象的重复性和规律性&#xff0c;两者都可以反映真…

【Java程序设计】【C00269】基于Springboot的漫画网站(有论文)

基于Springboot的漫画网站&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的漫画网站 本系统分为系统功能模块、管理员功能模块、以及用户功能模块。 系统功能模块&#xff1a;在系统首页可以查看首页、漫画投稿、…