蓝桥杯备战刷题one(自用)

news2025/1/25 4:26:47

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.coloradmin.cn/o/1474344.html

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

相关文章

Rust-windows安装环境

文章目录 前言一、Using rustup (Recommended)二、配置vscode解决办法&#xff1a;在终端依次运行如下两条指令&#xff1a; 总结 前言 Rust学习系列&#xff0c;之前介绍了macOS环境下的rust安装方式macOS rust安装。这篇学习windows的rust安装方式。 提示&#xff1a;以下是…

汇总版!美团搜索推荐算法面试题10道(含答案)

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今天我整…

跟着cherno手搓游戏引擎【25】封装2DRenderer,封装shader传参,自定义Texture

封装2DRenderer&#xff1a; Renderer.h: #include"ytpch.h" #include"Renderer.h" #include <Platform/OpenGL/OpenGLShader.h> #include"Renderer2D.h" namespace YOTO {Renderer::SceneData* Renderer::m_SceneData new Renderer::S…

JavaWeb——005 -- 请求响应 分层解耦(Postman、三层架构、IOC、DI、注解)

目录 一、请求 1、Postman&#xff08;接口测试工具&#xff09; 1.1、介绍 ②、安装 2、简单参数 1.1、原始方式 1.2、SpringBoot方法 ③、小结 3、实体参数 3.1、简单实体对象 3.2、复杂实体对象 3.3、小结 4、数组集合参数 ①、数组​编辑 ②、集合 ③、小结…

15-55V输入自动升降压 光伏MPPT自动跟踪充电方案 大功率300瓦

1.MPPT原理--简介 MPPT&#xff0c;全称为Maximum Power Point Tracking&#xff0c;即最大功点跟踪&#xff0c;它是一种通过调节电气模块的工作状态&#xff0c;使光伏板能够输出更多电能的电气系统能够将太阳能电池板发出的直流电有效地贮存在蓄电池中&#xff0c;可有效地…

python + selenium/appnium

Selenium 的自动化原理: selenium 自动化流程: 自动化程序调用Selenium 客户端库函数&#xff08;比如点击按钮元素&#xff09;客户端库会发送Selenium 命令 给浏览器的驱动程序浏览器驱动程序接收到命令后 ,驱动浏览器去执行命令浏览器执行命令浏览器驱动程序获取命令执行的…

Linux 不同架构、不同系统的问题

文章目录 一、麒麟V10&#xff08;kylin&#xff09;操作系统中&#xff0c;sudo执行程序后&#xff0c;其环境变量依然为用户家目录。&#xff08;1&#xff09;背景&#xff08;2&#xff09;原因&#xff08;3&#xff09;解决办法 二、统信&#xff08;UOS&#xff09;操作…

标准库中的String类 String(C++)【1】

学习String的时候我是对照https://legacy.cplusplus.com/这个网站进行理解 标准库中的String类 string类的基础String的特点String常用的接口&#xff08;黑框标记的是常用接口&#xff09;构造函数string类对象的访问及遍历操作第一种 下标[ ]第二种 迭代器第三种 范围for st…

OpenAI的Sora深度解析

计算机视觉算法分享。问题或建议&#xff0c;请文章私信或者文章末尾扫码加微信留言。sora 具体介绍和使用方法&#xff1a;OpenAI Sora 下一代生产力&#xff1a;最新小白必看教程 | 解剖Sora的前世今生 | Sora核心源码目前 openai 官方还未开放 sora 灰度&#xff0c;不过根据…

客户端订阅服务端事件的机制

一、场景描述 产业大脑平台是一个典型的审核系统&#xff0c;用户发布到平台的信息需要经过审核员审核后生效。 用户发布信息->审核员审核信息->用户信息生效&#xff0c;这一流程可能发生在用户的同一次登录周期内。为了使客户端能实时响应信息的状态变化&#xff0c;…

QML小案例 使用QML简单实现翻牌版扫雷游戏(二)

使用QML实现扫雷功能案例&#xff0c;使用QML界面实现翻牌特效&#xff0c;以及随机的&#xff0c;从左到右&#xff0c;从中心向两边加载界面的特效实现&#xff0c;简单的示例NumberAnimation&#xff0c;PropertyAnimation&#xff0c;SequentialAnimation实现动画的效果,QM…

Python接口自动化之Token详解及应用

以下介绍Token原理及在自动化中的应用。 一、Token基本概念及原理 1.Token作用 为了验证用户登录情况以及减轻服务器的压力&#xff0c;减少频繁的查询数据库&#xff0c;使服务器更加健壮。 2.什么是Token Token是服务端生成的一串字符串&#xff0c;以作客户端进行请求的一…

49.仿简道云公式函数实战-文本函数-Ip

1. Ip函数 获取当前用户的ip地址 注意是Ipv4的地址 2. 函数用法 IP() 3. 函数示例 获取当前用户的ip地址IP() 4. 代码实战 首先我们在function包下创建text包&#xff0c;在text包下创建IpFunction类&#xff0c;代码如下&#xff1a; package com.ql.util.express.sel…

python 基础知识点(蓝桥杯python科目个人复习计划51)

今日复习计划&#xff1a;做复习题 例题1&#xff1a;大石头的搬运工 问题描述&#xff1a; 在一款名为“大石头的搬运工”的游戏中&#xff0c;玩家需要 操作一排n堆石头&#xff0c;进行n - 1轮游戏。 每一轮&#xff0c;玩家可以选择一堆石头&#xff0c;并将其移动到任…

Doris——荔枝微课统一实时数仓建设实践

目录 一、业务介绍 二、早期架构及痛点 2.1 早期架构 2.2 架构痛点 三、技术选型 四、新的架构及方案 五、搭建经验 5.1 数据建模 5.2 数据开发 5.3 库表设计 5.4 数据管理 5.4.1 监控告警 5.4.2 数据备份与恢复 六、收益总结 七、未来规划 原文大佬这篇Doris腾…

科技创新引领零售商品部降本增效的未来

随着科技的不断发展和应用&#xff0c;零售行业也迎来了前所未有的变革。在这个竞争激烈的市场中&#xff0c;零售商品部如何利用科技手段降低成本、提高效率成为了企业关注的焦点。让我们一起探讨一下科技创新如何引领零售商品部降本增效的未来。 首先&#xff0c;利用大数据…

算法--动态规划(线性DP、区间DP)

这里写目录标题 tip数组下标从0开始还是从1开始 数学三角形介绍算法思想例题代码 最长上升子序列介绍算法思想例题代码 最长公共子序列介绍算法思想例题代码 tip 数组下标从0开始还是从1开始 如果代码中涉及到数组下标为i-1&#xff08;有时候哪怕不是同一个数组也符合情况&am…

sql-labs第46关 order by盲注

sql-labs第46关 order by盲注 来到了第46关进入关卡发现让我们输入的参数为sort&#xff0c;我们输入?sort1尝试&#xff1a; 输入?sort2,3,发现表格按照顺序进行排列输出&#xff0c;明显是使用了order by相关的函数。 我们将参数变成1进行尝试&#xff0c;就会报错&…

uni-app原生api的promise化以解决异步等待问题分析

相信各位在进行uni-app开发的时候会遇到各种关于异步回调问题&#xff0c;例如要传code给后端以换取session_key&#xff0c;在这之前需要先调用 uni.login&#xff0c;所以执行的顺序是必须同步等待的。在写这篇文章之前对于整体的流程概念需要做一个梳理&#xff0c;以便能更…

Laravel03 路由到控制器与连接数据库

Laravel03 路由到控制器与连接数据库 1. 路由到控制器2. 连接数据库 1. 路由到控制器 如下图一些简单的逻辑处理可以放在web.php中&#xff0c;也就是路由的闭包函数里面。但是大的项目&#xff0c;我们肯定不能这么写。 为什么保证业务清晰好管理&#xff0c;都应该吧业务逻辑…