当前位置: 首页 > news >正文

蓝桥杯——第 5 场 小白入门赛(c++详解!!!)

文章目录

  • 1 十二生肖
    • 基本思路:
  • 2 欢迎参加福建省大学生程序设计竞赛
    • 基本思路:
    • 代码:
  • 3 匹配二元组的数量
    • 基本思路:
    • 代码:
  • 4 元素交换
    • 基本思路:
    • 代码:
  • 5 下棋的贝贝
    • 基本思路:
    • 代码:
  • 6 方程
    • 思路:
    • 代码:


1 十二生肖

基本思路:

  • 签到题! 龙 -> 5

2 欢迎参加福建省大学生程序设计竞赛

基本思路:

  • 一道排序的题,先按题数排序,题树相等时,按罚时排序

代码:

#include<bits/stdc++.h>
using namespace std;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define endl "\n"
#define int long long 
const int N = 1e6+10, INF=1e18+10;
struct Node{int x,y;
};
vector<Node> a;
bool cmp(Node xx,Node yy){if(xx.x!=yy.x)return xx.x>yy.x;return xx.y<yy.y;
}void solve(){int n; cin>>n;for(int i=1;i<=n;i++){int x,y; cin>>x>>y;a.push_back({x,y});}sort(a.begin(),a.end(),cmp);int num=0,prex=-1,prey=-1;for(auto i:a){//计算不相同的次数if(i.x==prex&&i.y==prey) continue;num++;prex=i.x; prey=i.y;}cout<<num;
} signed main(){IOS;int T=1;
//	cin>>T;while(T--){solve();}return 0;
}

3 匹配二元组的数量

基本思路:

  • 一对二元组(i,j)下标需要满足两个条件,一个是i<j,另一个是ai/j==aj/i. 对于第二个条件,我们不妨变一下形,得到aii == ajj.
  • 每个数的值都乘以它的下标(下标从1开始),问题就变成了找到有多少个数相等,从这些数中任意选出两个组成一个匹配二元组,这不就是组合数吗,答案加上每个数个数的C(n,2),可以用哈希统计每个数有多少个!

代码:

#include<bits/stdc++.h>
using namespace std;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define endl "\n"
#define int long long 
const int N = 1e6+10, INF=1e18+10;
unordered_map<int,int> mp;
int n,ans;void solve(){cin>>n;vector<int> a(n+1);for(int i=1;i<=n;i++)cin>>a[i],mp[i*a[i]]++;for(auto i:mp)ans+=i.se*(i.se-1)/2;cout<<ans;} signed main(){IOS;int T=1;
//	cin>>T;while(T--){solve();}return 0;
}

4 元素交换

基本思路:

  • 2*N的二进制数组,其中0、1的个数各占一半,要求交换任意两个元素,使得最后的数组不存在连续的0或1
  • 我们可以发现最后数组只可能有两种状态:
  • 一个状态是010101…01
  • 另一个状态是101010…10
  • 我们只需统计当前数组与目标数组(目标数组为以上两种状态中的一种)有多少个不同的元素,假设有x个不同的元素,那么x/2即为操作次数,为什么呢?因为每交换一次,就有两个元素回到正确的位置。
  • 最后我们只需取两种情况中的最小值,即为最小操作次数!

代码:

#include<bits/stdc++.h>
using namespace std;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define endl "\n"
#define int long long 
const int N = 1e6+10, INF=1e18+10;
unordered_map<int,int> mp;
int ans=0;void solve(){int n;cin>>n;vector<int> a(2*n+1),b(2*n+1),c(2*n+1);for(int i=1;i<=2*n;i++){b[i]=0,c[i]=0;}for(int i=1;i<=2*n;i++)cin>>a[i];for(int i=1;i<=2*n;i++)//构造两个目标数组,其实也可以不用实现,判断奇偶即可if(i&1) b[i]=1;else c[i]=1;
//	for(int i=1;i<=2*n;i++) cout<<b[i]<<' ';cout<<endl;
//	for(int i=1;i<=2*n;i++) cout<<c[i]<<' ';cout<<endl;int ans=INF,n1=0,n2=0;for(int i=1;i<=2*n;i++){if(a[i]!=b[i]) n1++;if(a[i]!=c[i]) n2++;}cout<<min(n1/2,n2/2);
} signed main(){IOS;int T=1;
//	cin>>T;while(T--){solve();}return 0;
}

5 下棋的贝贝

基本思路:

  • 首先我们需要理解题意,两个点坐标的曼哈顿距离等于1,这两点就是邻居!求出所有棋子邻居数量总和的最大值是多少?
  • 画图的可能会更直观些在这里插入图片描述
  • 有图可以发现,我们更倾向于构造正方形,这样能才能保证邻居数量总和最大
  • 每个棋子的最多的邻居是4个,即上下左右都是邻居。还可以发现处于边界位置的方块可能有一个邻居,两个邻居或者三个邻居。
  • 我们不妨假设每个棋子都有4个邻居,那么所有棋子邻居数量总和就为4n,然后在减去每个棋子多出来的邻居,由图不难发现,只有处于边界的棋子的邻居数量是少于4的。
  • 我们知道如果是完整的矩形,位于矩形四个角的棋子会有2个邻居,其余处于边界的棋子都有3个邻居。我们可以把缺的部分补成一个矩形!那么多出来的邻居总数=矩形的长2+矩形的宽2。结合示意图模拟一下不难发现补出来的的棋子不会对多出的邻居总数产生影响。

代码:

void solve(){int n; cin>>n;int l,h,m;m=sqrt(n);//可以拼凑出的最大的正方形的边长 l=h=m;if(l*h<n) l++;//矩形长 if(l*h<n) h++;//矩形宽 cout<<4*n-2*l-2*h;
} 

6 方程

思路:

  • 我们直到了x+1/x = k, 求 x^(n) + 1/(x^n)
  • 我们不妨设f(n)= x^(n) + 1/(x^n) 是关于x的函数
  • 以下我粗糙的证明了一下递推公式:
    在这里插入图片描述
  • 我们虽然找到了递推公式,但是发现n,k的范围都是1e9,直接一项一项求的话肯定会超时的!这时我们就需要矩阵快速幂来优化!f(1)=k , f(2)=k*k-2; 构建矩阵第一行:(0,-1) 第二行(1,k)推得f(2),f(3)

代码:

#include<bits/stdc++.h>
using namespace std;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define endl "\n"
#define int long long 
const int N = 2e2+10, p=1e9+7;
int n=2,f[N+1],a[N+1][N+1];void aa(){//a*=a long long w[N+1][N+1];//临时存放a*a memset(w,0,sizeof(w));for(int i=1;i<=n;i++)for(int k=1;k<=n;k++)if(a[i][k])//优化,a[i][k]不为0 for(int j=1;j<=n;j++)if(a[k][j])//优化 w[i][j]+=a[i][k]*a[k][j],w[i][j]%=p;memcpy(a,w,sizeof(a));//放回a 
}void fa(){//f*=aint w[N+1];memset(w,0,sizeof(w));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)w[i]+=f[j]*a[j][i],w[i]%=p;memcpy(f,w,sizeof(f));
}void matrixpow(int k){//矩阵快速幂 while(k){if(k&1) fa();//f*=a;aa();//a*=a;k>>=1;}
}void solve(){int m,k;cin>>m>>k;f[1]=k,f[2]=((k*k-2)%p+p)%p;//f[1],f[2]  A^(m-1)  f[m] f[m+1]a[1][1]=0,a[1][2]=-1;//构建矩阵A a[2][1]=1,a[2][2]=k;matrixpow(m-1);//移m-1位 cout<<f[1]<<endl;//f[1]存的即为第m项 
} signed main(){
//	IOS;int T=1;cin>>T;while(T--){solve();}return 0;
}
/*
1
2 22
*/

相关文章:

蓝桥杯——第 5 场 小白入门赛(c++详解!!!)

文章目录 1 十二生肖基本思路&#xff1a; 2 欢迎参加福建省大学生程序设计竞赛基本思路&#xff1a;代码&#xff1a; 3 匹配二元组的数量基本思路&#xff1a;代码: 4 元素交换基本思路&#xff1a;代码&#xff1a; 5 下棋的贝贝基本思路&#xff1a;代码&#xff1a; 6 方程…...

Codeforces Round 303 (Div. 2)C. Kefa and Park(DFS、实现)

文章目录 题面链接题意题解代码总结 题面 链接 C. Kefa and Park 题意 求叶节点数量&#xff0c;叶节点满足&#xff0c;从根节点到叶节点的路径上最长连续1的长度小于m 题解 这道题目主要是实现&#xff0c;当不满足条件时直接返回。 到达叶节点后统计答案&#xff0c;用…...

797. 差分

Problem: 797. 差分 文章目录 思路解题方法复杂度Code 思路 这是一个差分数组的问题。差分数组的主要适用场景是频繁对原始数组的某一个区间进行增减操作。这种操作是区间修改操作&#xff0c;在这种操作下&#xff0c;差分数组只需要对区间的两个端点进行操作&#xff0c;时间…...

2024.2.5 vscode连不上虚拟机,始终waiting for server log

昨天还好好的&#xff0c;吃着火锅&#xff0c;做着毕设&#xff0c;突然就被vscode给劫了。 起初&#xff0c;哥们跟着网上教程有模有样地删除了安装包缓存&#xff0c;还删除了.vscode-server&#xff0c;发现没卵用&#xff0c;之前都是搜那个弹窗报错。 后来发现原来是vsco…...

CSS基础---新手入门级详解

CSS:层叠样式表 CSS&#xff08;Cascading Style Sheets,层叠样式表&#xff09;&#xff0c;是一种用来为结构化文档添加样式&#xff08;字体、间距和颜色&#xff09;的计算机语言&#xff0c;css扩展名为.css。 实例: <!DOCTYPE html><html> <head><…...

Python中Pymysql库的常见用法和代码示例

关注B站可以观看更多实战教学视频&#xff1a;肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) pymysql是一个用于连接MySQL数据库的Python库&#xff0c;它允许你执行SQL查询并处理返回的结果。以下是pymysql库的一些常见用法和代码示例&#xff1a; 1. 安装…...

使用 WPF + Chrome 内核实现高稳定性的在线客服系统复合应用程序

对于在线客服与营销系统&#xff0c;客服端指的是后台提供服务的客服或营销人员&#xff0c;他们使用客服程序在后台观察网站的被访情况&#xff0c;开展营销活动或提供客户服务。在本篇文章中&#xff0c;我将详细介绍如何通过 WPF Chrome 内核的方式实现复合客服端应用程序。…...

fastapi mysql 开发restful 3

pip install mysql-connector-python pymysql 数据库链接 创建src目录&#xff0c;里面创建db.py 代码如下&#xff1a; # 导入mysql.connector模块&#xff0c;该模块提供了与MySQL数据库进行连接和交互的功能。 import mysql.connector # 定义一个函数get_db_connectio…...

【Uniapp uni-app学习与快速上手——详细讲解】

Uniapp uni-app学习与快速上手——详细讲解 1. 介绍2. Uni-app 学习资源3. 快速上手4. 开始第一个项目5. 调试和发布 1. 介绍 Uni-app 是一个使用 Vue.js 编写多端应用的前端框架。开发者可以编写一份代码&#xff0c;然后发布到iOS、Android、网页&#xff08;响应式&#xf…...

剑指offer——旋转数组的最小数字

目录 1. 题目描述2. 分析思路2.1 示例分析 3. 更完美的做法 1. 题目描述 把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;我们称之为数组的旋转。输入一个递增排序的数组的一个旋转&#xff0c;输出旋转数组的最小元素。例如数组{3.4,5,1.2}为{1.2,3,4,5}的一个旋转&a…...

盘点数据可视化大屏焦点图十种样式

所谓焦点图就是大屏中居于中心位置的图&#xff0c;是视觉的中心&#xff0c;本位列举了十种焦点图样式供大家参考。 地球作为焦点图 图片来自网络 地图作为焦点图 图片来自网络 城市作为焦点图 图片来自网络 园区做焦点图 图片来自网络 建筑做焦点图 图片来自网络 生产线…...

问题 G: 老鼠和猫的交易

题目描述 小老鼠准备了M磅的猫粮&#xff0c;准备去和看守仓库的猫做交易&#xff0c;因为仓库里有小老鼠喜欢吃的五香豆。 仓库有N个房间&#xff1b; 第i个房间有J[i] 磅的五香豆&#xff0c;并且需要用F[i]磅的猫粮去交换&#xff1b; 老鼠不必交换该房间所有的五香豆&…...

HiveSQL——借助聚合函数与case when行转列

一、条件函数 if 条件函数 if函数是最常用到的条件函数&#xff0c;其写法是if(xn,a,b), xn代表判断条件&#xff0c;如果xn时&#xff0c;那么结果返回a ,否则返回b。 selectif(age < 25 or age is null, 25岁以下, 25岁以上) as age_cnt,count(1) as number from table…...

冒泡排序,判断回文,以及12-24小时制

6-7 定义函数&#xff0c;完成冒泡排序算法。 本题定义一个冒泡排序算法的函数&#xff0c;调用函数后实现数组的升序排序&#xff0c;其数组长度为任意长度。 函数接口定义&#xff1a; 在这里描述函数接口。例如&#xff1a; void sort(int arr[],int n); 在这里解释接口…...

【Vue】computed与watch

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue⛺️稳重求进&#xff0c;晒太阳 计算属性 概念&#xff1a;基于现有的数据&#xff0c;计算出来新的属性&#xff0c;依赖的数据变化&#xff0c;自动重新计算 语法&#xff1a; 声明…...

探索设计模式的魅力:捕捉变化的风-用观察者模式提升用户体验

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、引言 核心概念 应用场景 可以解决的问题 二、场景案例 2.1 不用设计模式实现 2.2 存在问题 2.3 使用设计模式实现 2.4 成功克服 三、工作原理 3.1 结构图和说明 3.2 工作原理详解 3.3 实现步骤 四、 优…...

SpringCloud-高级篇(十九)

我们已经学过使用 SpringAMQP去收和发消息&#xff0c;但是发和收消息是只是MQ最基本的功能了&#xff0c;在收发消息的过程中&#xff0c;会有很多的问题需要去解决&#xff0c;下面需要学习rabbitMQ的高级特性去解决 死信交换机&#xff1a;这个可以帮助我们实现消息的延迟的…...

Junit常用断言

0.断言简介 断言:assert Q:断言的作用 更方便的对结果进行判定 "有针对性"的if判断 针对两个变量值是否相同 使用assertEquals针对两个对象是否相同 使用assertSame针对返回值是否为True 使用assertTrue 1.断言的参数 assertXXX(”断言失败时提升的信息“&#x…...

docker 实现 mysql:8.3.0 主从复制(2024年2月13日最新版本)

环境为 CentOS 7.6&#xff0c; 具体操作请看MySQL主从复制01-主从复制概述及原理_哔哩哔哩_bilibili 1、配置主服务器 # 启动主服务器 docker run -p 3306:3306 --name mysql_master -e MYSQL_ROOT_PASSWORDnmnmnm67890890 -v /docker/mysql_master/conf:/etc/mysql/conf.d…...

STM32 + ESP8266,连接阿里云 上报/订阅数据

&#xff08;文章正在编辑中&#xff0c;一点点地截图操作过程&#xff0c;估计要拖拉两三天&#xff09; 一、烧录MQTT固件 ESP8266出厂时&#xff0c;默认是AT固件。连接阿里云&#xff0c;需要使用MQTT固件。 1、独立EPS8266模块的烧录方法 2、魔女开发板&#xff0c;板载…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法&#xff0c;由约翰冯诺伊曼在1945年提出。其核心思想包括&#xff1a; 分割(Divide)&#xff1a;将待排序数组递归地分成两个子…...