蓝桥杯练习题

devtools/2024/11/29 10:21:50/

目录

1.劲舞团

2.数字诗意

3.封闭图形个数

 4.回文数组


欢迎

1.劲舞团

0劲舞团 - 蓝桥云课

#include <iostream>
using namespace std;
int main()
{int num=1,M=0;long long c[1000000];int cnt=0;string a,b ;while(cin>>a>>b>>c[cnt++])//系统自动输入数据{if(cnt==1){continue;}if(a==b && c[cnt-1]-c[cnt-2]<=1000)//敲击字符正确,并且两个打出的字符之间的时间小于1s{num++;}else{M=max(num,M);//找出最长的连击num=1;}}cout<<M;return 0;
}

2.数字诗意

0数字诗意 - 蓝桥云课

 数字能够表示为连续正整数之和的条件是该数字不是2的幂

检查每个数字是否是 2 的幂

对于每个数字,小于3或者它是 2 的幂,则它不含有诗意,需要删除

#include <iostream>
using namespace std;
bool a(long long s)
{if(s<=0) return false;while(s%2==0){s/=2;}return s==1;//除到最后结果不为1就不是2的幂次方
}
int main()
{// 请在此输入您的代码long long n=0,m=0;cin>>n;int count=0;for(int j=0;j<n;j++){cin>>m;if( m<3 || a(m) ){count++;}}cout<<count;return 0;
}

3.封闭图形个数

0封闭图形个数 - 蓝桥云课

 

 ret函数:利用switch记录每个数字可以组成多少个封闭图形

a函数对应题目的意思确定排序规则:

  • 第一优先级:封闭图形的个数。
  • 第二优先级:数字的数值。

通过自定义函数来排序好

#include <iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;int ret(char s)
{switch (s){case '0':return 1;case '4':return 1;case '6':return 1;case '9':return 1;case '8':return 2;default:return 0;}
}
bool a(const std::string& a, const std::string& b)
{int countA=0, countB=0;for (char ch : a){countA += ret(ch);}for (char ch : b){countB += ret(ch);}if (countA != countB){return countA < countB;}return std::stoi(a) < std::stoi(b);//stoi函数:把字符转化成整数
}
int main()
{int n = 0;std::cin >> n;std::vector<std::string> nums(n);for (int i = 0; i < n; i++){std::cin >> nums[i];}std::sort(nums.begin(), nums.end(), a);for(const string& ch:nums){cout<<ch<<" ";}return 0;
}

 4.回文数组

 0回文数组 - 蓝桥云课

需要将数组的每一对 (a[i],a[n−i−1])(a[i],a[n−i−1]) 调整成相等,就是回文

对于每一对 a[i]a[i] 和 a[n−i−1]a[n−i−1],我们可以通过调整它们的值使它们相等。

每次调整的代价就是这两个数之间的绝对差值,即 ∣a[i]−a[n−i−1]∣∣a[i]−a[n−i−1]∣。

将所有不等的数对调整到相等时,最小的操作次数就是每一对的差值的总和。

#include <bits/stdc++.h>
using namespace std;const int N = 100100;long long a[N], b[N], sum = 0;int main() {int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];  // 逐个读取a数组的值,数组下标从1开始}// 对数组b进行赋值,数组b的前半部分是a数组的倒序差值for (int i = 1; i <= n / 2; i++) {b[i] = a[n - i + 1] - a[i];  // b[i]为a数组倒数第i个元素减去第i个元素的差}// 遍历b数组的前半部分,计算sum并做进一步处理for (int i = 1; i <= n / 2; i++) {sum += abs(b[i]);  // 将b[i]的绝对值累加到sum中// 如果b[i]和b[i+1]符号相同(即b[i] * b[i+1] > 0),则进行合并操作if (b[i] * b[i + 1] > 0) {// 如果b[i+1]的绝对值大于b[i],则b[i+1]减去b[i]if (abs(b[i + 1]) > abs(b[i])) {b[i + 1] -= b[i];  // 合并两个值} else {i++;  // 如果b[i]的绝对值较大,则跳过下一个元素,i自增}}}cout << sum;return 0;
}

本道题中的’合并操作‘解析:

因为一次操作可以指定相邻的两个数,同时加1或减1

分为两种情况

1. 同号:b[i+1]需减去b[i]的操作数,再加到sum中

2.异号:只需将b[i]的绝对值全部加到sum中

谢谢


http://www.ppmy.cn/devtools/137892.html

相关文章

【设计模式】【行为型模式(Behavioral Patterns)】之责任链模式(Chain of Responsibility Pattern)

1. 设计模式原理说明 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一种行为设计模式&#xff0c;它允许你将请求沿着处理者链进行发送。每个处理者都可以处理请求&#xff0c;或者将其传递给链上的下一个处理者。这种模式使得多个对象都有机会处理请…

力扣面试题 26 - 翻转数位

题目&#xff1a; 给定一个32位整数 num&#xff0c;你可以将一个数位从0变为1。请编写一个程序&#xff0c;找出你能够获得的最长的一串1的长度。 示例 1&#xff1a; 输入: num 1775(11011101111)输出: 8示例 2&#xff1a; 输入: num 7(0111)输出: 4 思路&#xff1a; …

flink学习(11)——state

state ————保存历史数据 有状态计算和无状态计算 - 无状态计算:- 不需要考虑历史数据, 相同的输入,得到相同的输出!- 如:map, 将每个单词记为1, 进来一个hello, 得到(hello,1),再进来一个hello,得到的还是(hello,1) - 有状态计算:- 需要考虑历史数据, 相同的输入,可能会…

探索天空中的“名字”——用Landsat影像记录你的名字形状!

大家好&#xff01;今天我发现了一个特别有趣的工具——NASA官网上有一个功能&#xff0c;允许你输入自己的名字&#xff0c;然后它会根据Landsat卫星影像显示出与你名字形状相符的地形图。是不是很酷&#xff1f;&#x1f389; &#x1f30d; Landsat影像的神奇之处Landsat是N…

Apache SSI 远程命令执行漏洞

目录 1、漏洞描述 2、访问页面 3、dirsearch工具爆破出上传目录 ​编辑 4、登录后台 5、上传shell.shtml一句话木马文件 6、拿到flag 1、漏洞描述 在测试任意文件上传漏洞的时候&#xff0c;目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持&a…

c语言中的const是什么

在 C 语言中&#xff0c;const 关键字用于声明一个常量&#xff0c;表示该变量的值不能被修改。一旦将某个变量声明为 const&#xff0c;该变量就变成了只读&#xff0c;不能被赋予新值&#xff0c;否则编译器会产生错误。const 关键字用于增强代码的可读性、安全性和可维护性&…

9.MySQL索引

目录 没有索引, 可能会有什么问题认识磁盘--硬件理解软件的理解建立共识(结论)索引的理解为什么选择B树而不选择B树呢?聚簇索引和非聚簇索引索引操作创建主键索引查询索引删除索引唯一索引的创建普通索引的创建复合索引的创建全文索引的创建索引创建原则 没有索引, 可能会有什…

集成量子光子学(IQP)

IQP 正在成为量子计算的可行替代方案量子源、波导和调制器等领域的研究使这成为可能与 CMOS 技术的兼容意味着工业可扩展性将更加容易 量子光子学的基本组成部分 IQP 系统的基本组成部分包括&#xff1a; 来源&#xff08;例如腔体中的 QD&#xff09; 波导定向耦合器&#…