蓝桥杯——第 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
*/

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

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

相关文章

推荐在线图像处理程序源码

对于喜爱图像编辑的朋友们来说&#xff0c;Photoshop无疑是处理照片的利器。然而&#xff0c;传统的Photoshop软件不仅需要下载安装&#xff0c;还对电脑配置有一定的要求&#xff0c;这无疑增加了使用的门槛。 现在&#xff0c;我们为您带来一款革命性的在线PS修图工具——基…

大话设计模式——1.模板方法模式(Template Method Pattern)

定义&#xff1a;定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 例子&#xff1a;比较重大的考试往往有A、B两套试卷&#xff0c;其中一套出现问题可以立马更换另一套。 定义基…

java Servlet 云平台教学系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc

一、源码特点 JSP 云平台教学系统是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助 系统采用serlvet dao bean&#xff0c;系统具有完整的源代码和数据库 &#xff0c;系统主要采用B/S模式开发。开发 环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据…

使用 IDEA 开发一个简单易用的 SDK

目录 一、什么是 SDK 二、为什么要开发 SDK 三、开发 SDK 的详细步骤 四、导入 SDK 进行测试 附&#xff1a;ConfigurationProperties 注解的介绍及使用 一、什么是 SDK 1. 定义&#xff1a;软件开发工具包 Software Development Kit 2. 用于开发特定软件或应用程序的工…

[JavaWeb玩耍日记]Maven的安装与使用

目录 一.作用 二.安装 三.使用 2.对项目使用compile命令进行编译,看看新的文件会在哪里产生&#xff1f; 3.需要认识的命令 4.Maven对项目执行不同命令的生命周期特点&#xff1f; 5.如何导入工程外的Maven&#xff1f; 6.如何直观地查看Maven导入了哪些工程或哪些jar包…

Hive SQL编译成MapReduce任务的过程

一、 Hive 底层执行架构 1.1 Hive底层架构 1 &#xff09;用户接口&#xff1a; Client CLI &#xff08; command-line interface &#xff09;、 JDBC/ODBC(jdbc 访问 hive) 、 WEBUI &#xff08;浏览器访问 hive &#xff09; 2 &#xff09;元数据&#xff1a; Metas…

WordPress修改所有用户名并发送邮件通知的插件Easy Username Updater

前面跟大家介绍了『如何修改WordPress后台管理员用户名&#xff1f;推荐2种简单方法』一文&#xff0c;但是对于有很多用户的站长来说&#xff0c;操作有点复杂&#xff0c;而且无法发邮件通知对方&#xff0c;所以今天boke112百科向大家推荐一款可以直接在WordPress后台修改所…

HarmonyOS 开发学习笔记

HarmonyOS 开发学习笔记 一、开发准备1.1、了解ArkTs语言1.2、TypeScript语法1.2.1、变量声明1.2.2、条件控制1.2.3、函数1.2.4、类和接口1.2.5、模块开发 1.3、快速入门 二、ArkUI组件2.1、Image组件2.2、Text文本显示组件2.3、TextInput文本输入框组件2.4、Button按钮组件2.5…

【JS逆向三】逆向某某网站的sign参数,并模拟生成仅供学习

逆向日期&#xff1a;2024.02.06 使用工具&#xff1a;Node.js 类型&#xff1a;webpack 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 可使用AES进行解密处理&#xff08;直接解密即可&#xff09;&#xff1a;AES加解密工具 1、打开某某…

MySQL-运维

一、日志 1.错误日志 错误日志是MySQL中最重要的日志之一&#xff0c;它记录了当mysql启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关性息。当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 该日志是默认开启的&#xf…

线性判别分析(LDA)

一、说明 LDA 是一种监督降维和分类技术。其主要目的是查找最能分隔数据集中两个或多个类的特征的线性组合。LDA 的主要目标是找到一个较低维度的子空间&#xff0c;该子空间可以最大限度地区分不同类别&#xff0c;同时保留与歧视相关的信息。 LDA 是受监督的&#xff0c;这意…

EMC学习笔记(二十四)降低EMI的PCB设计指南(四)

降低EMI的PCB设计指南&#xff08;四&#xff09; 1.电路板分区2.信号走线2.1 电容和电感串扰2.2 天线2.3 端接和传输线2.4输入端的阻抗匹配 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 1.电路板分区 电路板分区与电路板平面规划具有相同的基本含义&#x…

PyCharm2023.3.2配置conda环境

重点在于Path to conda这一步&#xff0c;需要找到conda.bat这个文件&#xff0c;PyCharm才能识别出现有的conda环境。

互联网加竞赛 基于深度学习的行人重识别(person reid)

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的行人重识别 该项目较为新颖&#xff0c;适合…

Flink从入门到实践(三):数据实时采集 - Flink MySQL CDC

文章目录 系列文章索引一、概述1、版本匹配2、导包 二、编码实现1、基本使用2、更多配置3、自定义序列化器4、Flink SQL方式 三、踩坑1、The MySQL server has a timezone offset (0 seconds ahead of UTC) which does not match the configured timezone Asia/Shanghai. 参考资…

Structured Streaming

目录 一、概述 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;两种处理模型 &#xff08;三&#xff09;Structured Streaming和Spark SQL、Spark Streaming关系 二、编写Structured Streaming程序的基本步骤 &#xff08;一&#xff09;实现步骤 &…

人工智能|深度学习——使用多层级注意力机制和keras实现问题分类

代码下载 使用多层级注意力机制和keras实现问题分类资源-CSDN文库 1 准备工作 1.1 什么是词向量? ”词向量”&#xff08;词嵌入&#xff09;是将一类将词的语义映射到向量空间中去的自然语言处理技术。即将一个词用特定的向量来表示&#xff0c;向量之间的距离&#xff08;例…

【 buuctf--刷新过的图片】

前言&#xff1a;这题主要运用到了新的工具F5-steganography由于 java 环境不合适的原因&#xff0c;我不得不重新配java11.0.18。 具体思路&#xff1a;非常帅气的一张图片。。。用 binwalk&#xff0c;stegsolve&#xff0c;zsteg&#xff0c;exiftool 等工具无果后&#xf…

【Java程序设计】【C00253】基于Springboot的在线考试管理系统(有论文)

基于Springboot的在线考试管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的在线考试系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块&#xff1a;系统登录&#xff0c;管理…

【Django】Django文件上传

文件上传 1 定义&场景 定义&#xff1a;用户可以通过浏览器将图片等文件上传至网站。 场景&#xff1a; 用户上传头像。 上传流程性的文档[pdf&#xff0c;txt等] 2 上传规范-前端[html] 文件上传必须为POST提交方式 表单 <form> 中文件上传时必须带有 enctype…