蓝桥杯备战刷题(自用)

1.被污染的支票

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
int main()
{int n;cin>>n;vector<int>L;map<int,int>mp;bool ok=0;int num;for(int i=1;i<=n;i++){cin>>num;if(mp[num]==1)ok=1;else{mp[num]=1;L.push_back(num);}}sort(L.begin(),L.end());int x=L.back()*2;//?????vector<int>L2;for(int i=2;i<x;i++){if(x%i==0)L2.push_back(i);}if(L!=L2)ok=1;if(ok){cout<<-1<<endl;}else{cout<<x<<endl;} return 0;
}

2.日期统计

#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main()
{int ans=0;int num[100]={5, 6, 8, 6, 9, 1, 6, 1, 2, 4,9, 1, 9, 8, 2, 3, 6, 4, 7, 7, 5, 9, 5, 0, 3, 8, 7, 5, 8, 1,5, 8, 6, 1, 8, 3, 0, 3, 7, 9,2, 7, 0, 5, 8, 8, 5, 7, 0, 9,9, 1, 9, 4, 4, 6, 8, 6, 3, 3,8, 5, 1, 6, 3, 4, 6, 7, 0, 7,8, 2, 7, 6, 8, 9, 5, 6, 5, 6,1, 4, 0, 1, 0, 0, 9, 4, 8, 0,9, 1, 2, 8, 5, 0, 2, 5, 3, 3};int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};for(int mon=1;mon<=12;mon++){for(int day=1;day<=days[mon];day++){int temp[8]={2,0,2,3,mon/10,mon%10,day/10,day%10};int k=0;for(int i=0;i<100;i++){if(num[i]==temp[k]){k++;}if(k==8){ans++;break;}}}}cout<<ans<<endl;return 0;
}

3.01串的熵

#include <iostream>
#include <cmath>
using namespace std;
int main()
{int n=23333333;for(int i=0;i<=n/2;i++)//0的次数{double a=(i*1.0)/n;double b=((n-i)*1.0)/n;double ans=0;ans-=(a*log2(a)*i+b*log2(b)*(n-i));if(fabs(ans-11625907.5798)<0.0001){cout<<i<<endl;break;}}return 0;
}

(注意浮点数,double,以及比较大小时使用1e-4) 

4.冶炼金属

#include <iostream>
using namespace std;
#define ll long long
int main()
{ll n,a,b,minn,maxx;maxx=1e9;//要满足最小的minn=0;//要满足最大的cin>>n;for(ll i=0;i<n;i++){cin>>a>>b;minn=max(minn,a/(b+1)+1);maxx=min(maxx,a/b);}cout<<minn<<" "<<maxx;return 0;
}
//二分
#include <iostream>
using namespace std;
int a[10000+5];
int v[10000+5];
int n;
bool check_min(int x)
{for(int i=1;i<=n;i++){if(a[i]/x>v[i])return false;}return true;
}
bool check_max(int x)
{for(int i=1;i<=n;i++){if(a[i]/x<v[i])return false;}return true;
}
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i]>>v[i];}int L=1,R=1000000000,minn=0;while(L<=R){int mid=(L+R)>>1;if(check_min(mid)){minn=mid;R=mid-1;}else L=mid+1;}int maxx=0;L=1,R=1000000000;while(L<=R){int mid=(L+R)>>1;if(check_max(mid)){maxx=mid;L=mid+1;}else R=mid-1;}cout<<minn<<" "<<maxx<<endl;return 0;
}

5.飞机降落

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct node
{int t,d,l;
};
bool ok=0;
vector<node>v;
vector<int>vis;
int n;
void dfs(int cnt,int last)
{if(cnt==n){ok=1;return;}for(int i=0;i<n;i++){if(!vis[i]&&v[i].t+v[i].d>=last)//可以降落{vis[i]=1;dfs(cnt+1,max(last,v[i].t)+v[i].l);vis[i]=0;//恢复}}
}
int main()
{int t;cin>>t;while(t--){cin>>n;v.clear();vis.clear();for(int i=1;i<=n;i++){//t d l (t/t+d -- l)int x,y,z;cin>>x>>y>>z;v.push_back({x,y,z});vis.push_back(0);}ok=0;dfs(0,0);//0架飞机,0需要时间if(!ok)cout<<"NO"<<endl;else cout<<"YES"<<endl;}return 0;
}

6.接龙数列

这道题其实本质就是求解出数列中最长的接龙数列,计算出最长的接龙数列长度,数列总长度-最长接龙数列长度等于最少删除次数。这就是一个求最优解的问题,然而看到这道题的数据量可以发现,暴力求解一定会超时,因此考虑动态规划。 动态规划最重要的就是状态转移方程,而这个题目就可以定义状态为当前最长接龙数列长度,则dp[i]就是以i为数字最后一位的最长接龙数列长度,设x为当前数字的第一位(如果为接龙数列,也就是前一位数的最后一位),y为当前数字的最后一位,则转移方程可以写为dp[y]=max(dp[x]+1,dp[y])

#include <iostream>
using namespace std;
int f[10];//表示在i=0-9中,f[i]为以i数字为连接的最长接龙数列的长度
int main()
{int n;cin>>n;int ans=0;string s;for(int i=0;i<n;i++){cin>>s;int pre=s[0]-'0',nex=s[s.size()-1]-'0';f[nex]=max(f[nex],f[pre]+1);ans=max(ans,f[nex]);}cout<<n-ans<<endl;//总的-最长长度=删去的return 0;
}

7.岛屿个数

搜索出所有岛屿,这个不难做到。由于岛屿之间互相隔离,则如果岛屿的一个格子在一个环内,那么整个岛屿也都在环内。遍历所有的岛屿,选中当前岛屿的第一个格子,搜索周围海洋,若能搜索到地图的边界外,则此岛屿不在任何一个环内;否则,此岛屿在某个环内,岛屿数量减一。

#include <iostream>
#include <queue>
#include <vector>
#include <string>
using namespace std;
#define pii pair<int,int>
const int N=100;
int n,m,ans;
vector<vector<bool>>vis;
string s[N];
int dx[8]={-1,1,0,0,-1,1,-1,1};
int dy[8]={0,0,-1,1,-1,1,1,-1};
bool inmap(int x,int y)
{if(x<1||x>n||y<1||y>m)return 0;return 1;
}
//bfs统计岛屿的情况
void bfs(int x,int y)
{vis[x][y]=1;queue<pii>q;q.push({x,y});while(!q.empty()){auto t=q.front();q.pop();for(int i=0;i<4;i++){int xx=t.first+dx[i];int yy=t.second+dy[i];if(!inmap(xx,yy)||vis[xx][yy]||s[xx][yy]!='1')continue;vis[xx][yy]=1;q.push({xx,yy});}}
}
bool check(int x,int y)//是否不在环内,即周围是海洋(用是否到边界判断)
{vector<vector<bool>>fin(n+1,vector<bool>(m+1,0));fin[x][y]=1;queue<pii>q;q.push({x,y});while(!q.empty()){auto t=q.front();q.pop();//到达边界,证明不在环中if(t.first==1||t.first==n||t.second==1||t.second==m)return 1;for(int i=0;i<8;i++){int xx=t.first+dx[i];int yy=t.second+dy[i];if(!inmap[xx][yy]||fin[xx][yy]||s[xx][yy]!='0')continue;fin[xx][yy]=1;q.push({xx,yy});}}return 0;
}
int main()
{int t;cin>>t;while(t--){ans=0;cin>>n>>m;for(int i=1;i<=n;i++){cin>>s[i];s[i]='2'+s[i];}vis=vector<vector<bool>>(n+1,vector<bool>(m+1,0));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(!vis[i][j]&&s[i][j]=='1'){bfs(i,j);if(check(i,j))ans++;}}}cout<<ans<<endl;}return 0;
}

 8.子串简写

#include <iostream>
using namespace std;
int main()
{int k;//最小可以简写的长度cin>>k;string s;char st,ed;cin>>s>>st>>ed;long long ans=0;int st_num=0;for(int i=0,j=k-1;j<s.size();i++,j++){if(s[i]==st)st_num++;if(s[j]==ed)ans+=st_num;}cout<<ans<<endl;return 0;
}
//4
//abababdb a b

 (注意规律,开long long)

 9.整数删除

#include<bits/stdc++.h>
using namespace std;
//优先队列+双向链表
const int N=5e5+10;
#define ll long long
#define val first
#define pos second
#define pli pair<ll,int>
int n,k;
ll a[N],pre[N],nxt[N];
priority_queue<pli,vector<pli>,greater<pli>>q;//小根堆
int main()
{cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];q.push({a[i],i});pre[i]=i-1;nxt[i]=i+1;}pre[1]=-1;nxt[n]=-1;while(k--){pli now;do{now=q.top();q.pop();}while(a[now.pos]!=now.val);//保证弹出同一个int PRE=pre[now.pos];int NXT=nxt[now.pos];if(PRE!=-1){a[PRE]+=now.val;q.push({a[PRE],PRE});nxt[PRE]=NXT;}if(NXT!=-1){a[NXT]+=now.val;q.push({a[NXT],NXT});pre[NXT]=PRE;}a[now.pos]=-1;}for(int i=1;i<=n;i++){if(a[i]!=-1)cout<<a[i]<<" ";}return 0;
}

 10.景区导游

 

//最近公共祖先。倍增做法 (深搜)
#include <iostream>
#include <vector>
#define ll long long
using namespace std;
const int N=1e5+10;
vector<int>e[N],w[N];
int n,k;
ll dep[N],fa[N][20],dist[N],b[N];void dfs(int u,int father){fa[u][0]=father;dep[u]=dep[father]+1;for(int i=1;i<20;i++){fa[u][i]=fa[fa[u][i-1]][i-1];}for(int i=0;i<e[u].size();i++){int v=e[u][i];int t=w[u][i];if(v!=father){dist[v]=dist[u]+t;dfs(v,u);}}
}int lca(int u,int v){if(dep[u]<dep[v]) swap(u,v);for(int i=19;i>=0;i--){if(dep[fa[u][i]]>=dep[v])u=fa[u][i];}if(u==v) return v;for(int i=19;i>=0;i--){if(fa[u][i]!=fa[v][i]){u=fa[u][i],v=fa[v][i];}}return fa[u][0];
}ll sol(int x,int y){if(!x||!y) return 0;return dist[x]+dist[y]-2*dist[lca(x,y)];
}
int main(){    cin>>n>>k;for(int i=1;i<n;i++){int x,y,t;cin>>x>>y>>t;e[x].push_back(y);e[y].push_back(x);w[x].push_back(t);w[y].push_back(t);}dfs(1,0);ll Dis=0;for(int i=1;i<=k;i++){cin>>b[i];Dis+=sol(b[i],b[i-1]);}for(int i=1;i<=k;i++){cout<<Dis-sol(b[i-1],b[i])-sol(b[i],b[i+1])+sol(b[i-1],b[i+1])<<" ";}return 0;
}

 11.砍树

 

#include <iostream>
#include <vector>
using namespace std;
const int N=1e5+10;
vector<int>e[N],num[N];
int n,m,dep[N],fa[N][21],s[N],ans;
void dfs(int u,int Fa)
{dep[u]=dep[Fa]+1;fa[u][0]=Fa;for(int i=1;i<=20;i++){fa[u][i]=fa[fa[u][i-1]][i-1];}for(auto &v:e[u]){if(v==Fa)continue;dfs(v,u);}
}
int LCA(int u,int v)
{if(dep[u]<dep[v])swap(u,v);for(int i=20;i>=0;i--){if(dep[fa[u][i]]>=dep[v]){u=fa[u][i];}}if(u==v)return u;for(int i=20;i>=0;i--){if(fa[u][i]!=fa[v][i]){u=fa[u][i];v=fa[v][i];}}return fa[u][0];
}
void dfs2(int u,int Fa)
{for(int i=0;i<e[u].size();i++){int v=e[u][i],p=num[u][i];if(v==Fa)continue;dfs2(v,u);s[u]+=s[v];if(s[v]==m)ans=max(ans,p);}
}
int main()
{cin>>n>>m;for(int i=1;i<n;i++){int x,y;cin>>x>>y;e[x].push_back(y);e[y].push_back(x);num[x].push_back(i);num[y].push_back(i);}dfs(1,0);for(int i=1;i<=m;i++){int a,b;cin>>a>>b;s[a]++;s[b]++;s[LCA(a,b)]-=2;}dfs2(1,0);cout<<ans;return 0;
}

 

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

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

相关文章

ChatGPT为什么会被热炒?

2023年上半年&#xff0c;ChatGPT引起了广泛的热议&#xff0c;对于ChatGPT有多热&#xff0c;不需要我重复了&#xff0c;你可能在网上看到了很多报道&#xff0c;标题如《ChatGPT揭开AI战幔&#xff1a;杀死黄页一样摧毁Google&#xff1f;》和《ChatGPT强势来袭&#xff0c;…

【技术分享】使用nginx完成动静分离➕集成SpringSession➕集成sentinel➕集成seata

&#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于技术点的相关分享吧 目录 &#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 一、 使用nginx完成动静分离 1.下载…

springboot/ssm高校物品捐赠管理系统Java校园爱心捐赠管理系统web

springboot/ssm高校物品捐赠管理系统Java校园爱心捐赠管理系统web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xf…

JAVA毕业设计129—基于Java+Springboot+thymeleaf的物业管理系统(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootthymeleaf的物业管理系统(源代码数据库)129 一、系统介绍 本项目前后端分离&#xff0c;本系统分为管理员、小区管理员、用户三种角色 1、用户&#xff1a; 登…

可持久化线段树 2

推荐在 cnblogs 上阅读。 可持久化线段树 前言 这个东西之前讲过&#xff0c;但是用得少&#xff0c;很快就忘了。 我又看了我之前的那篇笔记&#xff0c;简直就是胡言乱语。所了解的太浅了。 最近在刷数据结构&#xff0c;于是决定再写一篇。 但是&#xff0c;之前那篇不…

一种简易的多进程文件读写器

目录 1. 前言2. 初步实现3. ParallelFileProcessor 1. 前言 在数据清洗场景下&#xff0c;我们可能需要对一个 .jsonl 文件清洗以得到另一个 .jsonl 文件。一种直观的做法就是逐行读取&#xff0c;逐行清洗&#xff0c;然后逐行写入&#xff0c;这一流程的示意图如下&#xff…

【wails】(6):使用wails做桌面应用开发,使用gin+go-chatglm.cpp进行本地模型运行,在windows上运行成功

1&#xff0c;整体架构说明 主要使用&#xff0c;参考的开源项目是&#xff1a; https://github.com/wailsapp/wails 前端项目&#xff1a; https://github.com/Chanzhaoyu/chatgpt-web 运行模型&#xff1a; https://github.com/Weaxs/go-chatglm.cpp 参考代码&#xff1a; h…

深度神经网络中的计算和内存带宽

深度神经网络中的计算和内存带宽 文章目录 深度神经网络中的计算和内存带宽来源原理介绍分析1&#xff1a;线性层分析2&#xff1a;卷积层分析3&#xff1a;循环层总结 来源 相关知识来源于这里。 原理介绍 Memory bandwidth and data re-use in deep neural network computat…

五.AV Foundation 视频播放 - 标题和字幕

引言 本篇博客主要介绍使用AV Foundation加载视频资源的时候&#xff0c;如何获取视频标题&#xff0c;获取字幕并让其显示到播放界面。 设置标题 资源标题的元数据内容&#xff0c;我们需要从资源的commonMetadata中获取&#xff0c;在加载AVPlayerItem的时候我们已经指定了…

Sentinel微服务流量治理组件实战上

目录 分布式系统遇到的问题 解决方案 Sentinel 是什么&#xff1f; Sentinel 工作原理 Sentinel 功能和设计理念 流量控制 熔断降级 Sentinel工作主流程 Sentinel快速开始 Sentinel资源保护的方式 基于API实现 SentinelResource注解实现 Spring Cloud Alibaba整合…

AIGC 架构:RAG (retrieval augumented generation) 应用可以使用 PostgreSQL 作为向量数据库组件吗?

是的&#xff0c;RAG&#xff08;检索增强生成&#xff09;应用程序可以绝对地使用 PostgreSQL 作为向量数据库&#xff01;事实上&#xff0c;它是一个流行的选择&#xff0c;因为有以下几个优点&#xff1a; 使用 PostgreSQL 和 pgvector 的优点&#xff1a; 集成解决方案&…

【颠覆旧知识】JS的原型链搜索原则;

最近准备面试&#xff0c;梳理以前的知识&#xff0c;发现我以前对原型链的搜索原则理解一直不完全对。 以前的理解&#xff1a; “在当前对象未找到该属性&#xff0c;就一直向上查找&#xff0c;找到就停止并返回该数据&#xff0c;如果直到object的原型也没找到&#xff0c…

介绍 PIL+IPython.display+mtcnn for 音视频读取、标注

1. nn.NLLLoss是如何计算误差的? nn.NLLLoss是负对数似然损失函数&#xff0c;用于多分类问题中。它的计算方式如下&#xff1a;首先&#xff0c;对于每个样本&#xff0c;我们需要将其预测结果通过softmax函数转换为概率分布。softmax函数可以将一个向量映射为一个概率分布&…

第四节:Vben Admin登录对接后端getUserInfo接口

系列文章目录 第一节&#xff1a;Vben Admin介绍和初次运行 第二节&#xff1a;Vben Admin 登录逻辑梳理和对接后端准备 第三节&#xff1a;Vben Admin登录对接后端login接口 第四节&#xff1a;Vben Admin登录对接后端getUserInfo接口 文章目录 系列文章目录前言一、回顾Vben…

RK3568平台 阻塞IO和非阻塞IO

一.IO 模型的分类 IO 模型根据实现的功能可以划分为为阻塞 IO、非阻塞 IO、信号驱动IO&#xff0c;IO多路复用和异步 IO。根据等待 IO 的执行结果进行划分&#xff0c;前四个 IO 模型又被称为同步IO. 同步IO与异步IO&#xff1a; 以现实生活去餐馆吃饭为例&#xff0c;根据菜…

Alibaba分布式事务组件Seata实战

Alibaba分布式事务组件Seata实战 事务 本地事务 对于操作单一数据库的场景下的事务&#xff0c;ACIO特性是数据库直接支持的 分布式事务 在分布式情况下&#xff0c;需要的操作资源分布在多个资源服务上&#xff0c;而应用需要保证对于多个资源服务器的数据操作要么全部成…

Linux——缓冲区封装系统文件操作

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、FILE二、封装系统接口实现文件操作1、text.c2、mystdio.c3、mystdio.h 一、FILE 因为IO相…

Typora结合PicGo + 使用Github搭建个人免费图床

文章目录 一、国内图床比较二、使用Github搭建图床三、PicGo整合Github图床1、下载并安装PicGo2、设置图床3、整合jsDelivr具体配置介绍 4、测试5、附录 四、Typora整合PicGo实现自动上传 每次写博客时&#xff0c;我都会习惯在Typora写好&#xff0c;然后再复制粘贴到对应的网…

基于springboot+vue的校园社团信息管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

自定义搭建管理系统

最近使用自己搭建的脚手架写了一个简易管理系统&#xff0c;使用webpackreactantd&#xff0c;搭建脚手架参考&#xff1a; 使用Webpack5搭建项目&#xff08;react篇&#xff09;_babel-preset-react-app-CSDN博客 搭建的思路&#xff1a; 1. 基建布局&#xff0c;使用antd的…