第十四届蓝桥杯C++A组(A/B/C/D/E/H)

文章目录

  • A.幸运数
  • B.有奖问答
  • C.平方差
  • D.更小的数
  • E.颜色平衡树
  • H.异或和之和

A.幸运数

在这里插入图片描述

/*纯暴力*/
#include <bits/stdc++.h>using namespace std;void solve()
{int sum = 0;for(int i = 1; i <= 100000000; i ++ ){int n = i;int a[11];int j = 1;for(; n != 0; j ++ ){a[j] = n % 10;n = n / 10;}j --;if(j % 2 == 0){int sum1 = 0, sum2 = 0;for(int u = 1; u <= j / 2; u ++ ){sum1 = sum1 + a[u];sum2 = sum2 + a[j/2 + u];}if(sum1 == sum2) sum ++ ;}}cout << sum;
}int main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);solve();cout << ans << endl;return 0;
}
/*dfs搜索*/
#include <bits/stdc++.h>using namespace std;int ans;void dfs(int x, int l, int r)
{if(l != 0 && l == r) ans ++ ; //非0且相等才可以,卡掉刚开始进入时的dfs(0, 0, 0)if(x == 4) return; //递归出口for(int i = 0; i <= 9; i ++ ){if(l == 0 && i == 0) continue; //从高位开始枚举,所以第一次l不可以是0,i也不是0for(int j = 0; j <= 9; j ++ )dfs(x + 1, l + i, r + j);}
}int main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);dfs(0,0,0);cout << ans << endl;return 0;
}

B.有奖问答

在这里插入图片描述

#include<bits/stdc++.h>using namespace std;int ans = 0;void bfs(int step, int score)
{if(score == 70) ans ++ ; //达到70分可以停止记为一次成功if(score == 100 || step == 30) return; //递归出口:满分立即停止,满30次立即停止bfs(step + 1, score + 10); //答对bfs(step + 1, 0); //答错
}int main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);bfs(0, 0);cout << ans << endl;return 0;
}

C.平方差

在这里插入图片描述

#include<bits/stdc++.h>using namespace std;/*****思路:*****//*
y方 - z方 = (y - z)(y + z)
y-z和y+z始终是同奇偶的
奇*奇 = 奇
偶*偶 = 偶(且该数必然是4的倍数)
*//*
x方 - (x-1)方 = 2x - 1则所有奇数满足拆分
x方 - (x-2)方 = 4x - 4则所有4的倍数满足拆分
*//*
所以如果要查找1~n中满足的x则***return (x + 1)/2 + x/4***即可
*/int calc(int x)
{//(x + 1)/2是奇数乘以奇数部分,x/4是偶数乘以偶数部分return (x + 1)/2 + x/4;
}int main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);int l,r;cin >> l >> r;cout << calc(r) - calc(l - 1) << endl;return 0;
}

D.更小的数

在这里插入图片描述

#include<bits/stdc++.h>using namespace std;const int MAX = 5020;
int dp[MAX][MAX]; //dp[len][i]表示从i开始长度为len的子串反转是否可以满足,满足为1,不满足为0
int ans = 0;//dp动态规划
void solve()
{string s;cin >> s;int n = s.length();for(int len = 2; len <= n; len ++ ) //遍历每种长度for(int l = 0; l + len - 1 < n; l ++ ) //遍历每个起点{//每次比较最边缘两个,如果不满足则各向中间靠一位再比较(可以直接使用dp)if(s[l] > s[l + len - 1]) dp[l][l + len - 1] = 1;else if(s[l] == s[l + len - 1]) dp[l][l + len - 1] = dp[l + 1][l + len - 2];ans += dp[l][l + len - 1]; //累加答案}cout << ans << endl;
}int main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);solve();return 0;
}

E.颜色平衡树

在这里插入图片描述

#include<bits/stdc++.h>using namespace std;const int N = 2e5 + 5;
int n, ans;
map<int, int>col[N],num[N]; //col[N]每个颜色多少数量,num[N]每个数量有几组
vector<int> e[N];void dfs(int u) //从上到下,u为此时树的根节点
{for(auto &v:e[u]) //所有遍历一遍,自顶向下再自底向上{dfs(v);//合并两树if(col[u].size() < col[v].size()) //u是保持的,v要更新,所以让u更大耗时更少{col[u].swap(col[v]);num[u].swap(num[u]);}for(auto it = col[v].begin();it != col[v].end(); it ++ ){int v_col = it->first, v_num = it->second;if(col[u].count(v_col)) //u树中含有v中该颜色,则要更新num颜色数量组{int u_num = col[u][v_col];num[u][u_num] -- ;if(num[u][u_num] == 0) num[u].erase(u_num);num[u][u_num + v_num] ++ ;}else num[u][v_num] ++ ; //u树不含有则直接添加col[u][v_col] += v_num; //更新col}map<int, int> tmp1, tmp2; //释放vcol[v].swap(tmp1);num[v].swap(tmp2);}if(num[u].size() == 1) ans ++ ; //最大最小都是在一个num上则是满足的
}int main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;for(int u = 1; u <= n; u ++ ){int c, fa;cin >> c >> fa;e[fa].push_back(u); //父节点向子节点连一条边col[u][c] ++ ; //此时u节点树中,只有c一种颜色,且只要一个,first是颜色,second是数量num[u][1] ++ ; //此时u节点树中,只有1种颜色的,且其只有一个,first是数量,second是该数量有几套颜色}dfs(1);cout << ans;return 0;
}

H.异或和之和

在这里插入图片描述

#include<bits/stdc++.h>using namespace std;/*****思路:*****//*
从前往后遍历
每次遍历该值的所有前缀异或和的每一位的累加值
可以使用i - cnt[j]来表示
最后按位累加即可
*/typedef long long LL;
int cnt[21];//cnt[i]表示第i位为1的可能情况有多少种void solve()
{int n;cin >> n;LL ans = 0;for(int i = 1; i <= n; i ++ ) //从前往后遍历每一个数{int a;cin >> a;for(int j = 0; j <= 20; j ++ ) //遍历每一位{if((1 << j) & a) cnt[j] = i - cnt[j]; //只有该位是1的时候才会有此异或变化ans += 1ll * (1 << j) * cnt[j];}}cout << ans;return;
}int main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);solve();return 0;
}

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

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

相关文章

C++ 友元函数

目录 如果觉得有用的话&#xff0c;给小弟点个赞吧&#xff01;哈哈哈哈&#xff0c;谢谢嘞&#xff01; 概念&#xff1a; 如何理解&#xff1f; 概念&#xff1a; 友元&#xff1a;慎用&#xff08;突破封装&#xff09; 友元函数&#xff1a;在函数前加friend的函数称为…

网页代理ip怎么设置的

众所周知&#xff0c;现在网络安全和隐私保护是我们非常关注的问题。为了更好地保护自己的隐私&#xff0c;提高上网的安全性&#xff0c;使用代理IP成为了很多人的首选。 那么&#xff0c;网页代理IP是怎么设置的呢&#xff1f;下面&#xff0c;就让我来一一为大家介绍。 一、…

CMake学习笔记(二)从PROJECT_BINARY_DIR看外部编译和内部编译

目录 外部编译 内部编译 总结 外部编译 看如下例子&#xff1a;我在EXE_OUT_PATH中建立了文件夹build、文件夹src2 和 文件CMakeLists.txt 其中EXE_OUT_PATH/CMakeLists.txt的内容如下&#xff1a; PROJECT(out_path) ADD_SUBDIRECTORY(src2 bin2) MESSAGE(STATUS "m…

uniapp中实现canvas超出屏幕滚动查看(全网唯一可行方案)

亲爱的小伙伴&#xff0c;当你需要在uniapp中使用canvas绘制一个超长图&#xff0c;就类似于横向的流程图时&#xff0c;这个canvas超出屏幕部分拖动屏幕查看会变得十分棘手。我查阅了大量资料&#xff0c;甚至是问了无数遍AI&#xff0c;得到的结果只有很敷衍的监听touch,然后…

(一)whatsapp 语音通话基本流程

经过了一整年的开发测试&#xff0c;终于将whatsapp 语音通话完成&#xff0c;期间主要参考webrtc的源码来实现.下面简要说一下大致的步骤 XMPP 协商 发起或者接受语音通话第一步是发起XMPP 协商&#xff0c;这个协商过程非常重要。下面是协商一个包 <call toxxxs.whatsap…

【大模型基础】什么是KV Cache?

哪里存在KV Cache&#xff1f; KV cache发生在多个token生成的步骤中&#xff0c;并且只发生在decoder中&#xff08;例如&#xff0c;decoder-only模型&#xff0c;如 GPT&#xff0c;或在encoder-decoder模型&#xff0c;如T5的decoder部分&#xff09;&#xff0c;BERT这样…

USB - 通过configfs配置Linux USB Gadget

Linux USB gadget configured through configfs Overview USB Linux 小工具是一种具有 UDC&#xff08;USB 设备控制器&#xff09;的设备&#xff0c;可连接到 USB 主机&#xff0c;以扩展其附加功能&#xff0c;如串行端口或大容量存储功能。 A USB Linux Gadget is a device…

数据分析面试题(21~30)

21、简单说一下说说置信区间、置信度。 ①置信区间是指由样本统计量所构成的总体参数的估计区间。通常以一个样本统计量的估计值为中心&#xff0c;加减一个标准误差的倍数&#xff0c;构成一个区间。 ②置信度是对置信区间的信心程度的度量&#xff0c;通常以百分比的形式表…

Protocol Buffers设计要点

概述 一种开源跨平台的序列化结构化数据的协议。可用于存储数据或在网络上进行数据通信。它提供了用于描述数据结构的接口描述语言&#xff08;IDL&#xff09;&#xff0c;也提供了根据 IDL 产生代码的程序工具。Protocol Buffers的设计目标是简单和性能&#xff0c;所以与 XM…

(执行上下文作用域链)前端八股文修炼Day4

一 作用域作用域链 作用域&#xff08;Scope&#xff09;是指程序中定义变量的区域&#xff0c;作用域规定了在这个区域内变量的可访问性。在 JavaScript 中&#xff0c;作用域可以分为全局作用域和局部作用域。 全局作用域&#xff1a;在代码中任何地方都可以访问的作用域&am…

基于Springboot的狱内罪犯危险性评估系统的设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的狱内罪犯危险性评估系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#…

宝塔部署项目

如何在云服务器上使用宝塔 登录到你的云服务器后&#xff0c;执行宝塔面板安装命令&#xff0c;阿里云服务器网使用的CentOS操作系统&#xff0c;命令如下 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh …

题。。。。

O - 胜利大逃亡(续) 题目分析 bfs状态压缩&#xff08;在bfs的基础上&#xff0c;存储持有不同钥匙时&#xff0c;此点位是否走过的情况&#xff09;&#xff1b; -----状态压缩使用二进制实现&#xff0c;同时通过位运算修改是否转移至另一状态&#xff08;详情见代码及注释…

解决 Xshell 等工具连接虚拟机失败

这里以 Xshell 等工具连接 Linux 虚拟机为例 对于我们使用 Xshell 等工具连接虚拟机失败&#xff0c;我们可以从以下的几个方面进行检查和解决 检查连接工具中的连接会话配置是否正确 对于这方面&#xff0c;我们要检查连接工具中连接会话配置的虚拟机 IP 地址和端口号是否正…

理解Harris角点检测的数学原理

Harris角点检测的数学原理 Harris角点检测基于图像的局部自相似性,它通过分析图像窗口在各个方向上移动时灰度变化的程度来识别角点,它通过计算每个像素点的Harris响应值来评估该点是否为角点。数学上,这种变化可以通过构建一个二次型函数来量化,该函数基于图像在x和y方向上…

Postman核心功能解析-参数化和测试报告

一、参数化处理 参数化&#xff1a;针对于某一个接口&#xff0c;有大量的的测试数据需要批量验证&#xff0c;一个一个的更改请求参数太耗时耗力&#xff0c;使用参数化批量处理数据会比较高效&#xff0c;常规通过文档参数化实现。 创建文件 格式CSV 文件内第一行信息 需要…

Ansible Playbook 精髓:书写与应用全攻略

Ansible Playbook 精髓&#xff1a;书写与应用全攻略 在当今的自动化运维领域&#xff0c;Ansible 以其简洁高效的特点受到了广泛欢迎。Playbook 作为 Ansible 的核心组件&#xff0c;允许我们使用人类可读的语言来描述配置和应用部署的过程。本文将深入探讨 Ansible Playbook…

音频干扰检测(时域方法)

请注意注释掉的代码&#xff1a;逐个包络比对就不能加窗了。 import librosa import numpy as np from scipy.signal import windows import matplotlib.pyplot as plt # 读取音频文件 audio_file sine.wav signal, sample_rate librosa.load(audio_file, srNone, mono…

操作系统的理解|冯·若依曼体系结构|进程的状态

操作系统的理解 冯诺伊曼体系结构为什么必须通过内存然后到cpu存储金字塔冯诺伊曼结构的改进在哪&#xff1f;我们可不可以全部用寄存器来做存储器在硬件数据流动角度学以致用&#xff1a;解释程序运行为什么要加载到内存程序没被运行之前存在哪里&#xff1f; 操作系统概念广义…

应急响应实战笔记04Windows实战篇(2)

第2篇&#xff1a;蠕虫病毒 0x00 前言 ​ 蠕虫病毒是一种十分古老的计算机病毒&#xff0c;它是一种自包含的程序&#xff08;或是一套程序&#xff09;&#xff0c;通常通过网络途径传播&#xff0c;每入侵到一台新的计算机&#xff0c;它就在这台计算机上复制自己&#xff…