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

蓝桥杯第22场小白入门赛

刚好牛客周赛和蓝桥杯周赛时间撞了,于是毅然决然选择了打牛客,结局是本蒟蒻被牛客薄纱/(ㄒoㄒ)/~~

好吧,然后第二天就来水一水蓝桥杯了(bushi),小白入门赛和前几次一样,6道题只能写5道(什么时候能让我AK,AK了我就不是小白了)


目录

1.变身

2.消灭卡片

​编辑 ​编辑

3.招募队员

4.能量晶石 

5.缺失的环节

6.召唤帝皇侠

 





1.变身

相信大家闭着眼睛也能写出来 /(ㄒoㄒ)/~~

 cout<<5<<endl;

2.消灭卡片

 

思路 :如果能被5整除就直接输出n/5,反之我们对3得个数从0开始枚举,如果n-3*i能够被5整除,就直接输出i+(n-3*i)/5,如果循环了10的6次方还没有那就直接输出-1,为什么要用3枚举呢,是因为我们要尽可能的是5的贡献更大,即组成这个数3的个数尽可能少,5的个数尽可能多,同理用5枚举的话要从大到小枚举,但这样耗时往往会比枚举3的多。

Code:

#include <iostream>
using namespace std;
int main()
{
  // 请在此输入您的代码
  int t;cin>>t;
  
  while(t--)
  {
    int sum=0;
    int n;cin>>n;
    if(n%5==0)
    {
      cout<<n/5<<endl;
    }
    else
    {
      int mind=1e9;
      for(int i=0;i<=n/3;i++)
      {
        int yu=n-3*i;
        if(yu%5) continue;
        else
        {
          mind=min(mind,i+yu/5);
          break;
        }

      }
      if(mind==1e9) cout<<-1<<endl;
      else cout<<mind<<endl;
    }
  }
  return 0;
}

3.招募队员

思路: 就是计算一个数字最多会连续出现几次,模拟就行了

Code:

#include <iostream>
#include <unordered_map>

using namespace std;

constexpr  int N = 1e5+5;

int cnt[N],ans[10],a[N][10];
unordered_map<int,int> mp;
int main()
{
  // 请在此输入您的代码
  int n;cin>>n;
  for(int i=1;i<=n;i++)
  {
    int b[6]={0};
    for(int j=1;j<=5;j++)
    {
      cin>>a[i][j];
      if(mp[a[i][j]]&&!b[a[i][j]])
      {
        cnt[a[i][j]]++;
        ans[a[i][j]]=max(ans[a[i][j]],cnt[a[i][j]]);
      }
      if(!mp[a[i][j]])
      {
        cnt[a[i][j]]=1;
        mp[a[i][j]]= 1;
        ans[a[i][j]]=max(ans[a[i][j]],cnt[a[i][j]]);
      }
      b[a[i][j]]=1;
    }
    for(int j=1;j<=5;j++)
    if(!b[j])
    {
      mp[j]=0;
      cnt[j]=0;
    }
  }
  for(int i=1;i<=5;i++) cout<<ans[i]<<' ';
  return 0;
}

4.能量晶石 

思路 :贪心+排序。要使次数最小,则数组的最大值要尽可能小,所以先将数组从小到大排序,从后面开始遍历,每次用后面的数字减去a[0],就是当前这个人要跑的次数,然后a[0]的大小就与当前这个数一样,而其他人增加的数就是这两个数的差值,所以我们只需要累加数组的所有数字更新后与a[0]的差值即可。

Code:

#include <iostream>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;

constexpr int N = 1e5+5;

int a[N],n;

int32_t main()
{
  // 请在此输入您的代码
  cin>>n;
  vector<int> v(n);
 for(auto &t:v) cin>>t;
 sort(v.begin(),v.end());
 //v.erase(unique(v.begin(),v.end()),v.end());
 int d=0;
 int len=v.size();
 for(int i=1;i<len;i++)
 {
   v[len-i]+=d;
  d+=v[len-i]-v[0];;
  v[0]=v[len-i];
 }
 cout<<d;
  return 0;
}

5.缺失的环节

思路: 因为是连续的字符串,所以我们只需要从0开始枚举,每次将十进制转换成二进制字符串,然后判断这个二进制字符串是不是S的子串,如果是的话说明S的某个区间可以组成这个数,反之则是S不存在的数。

Code:

#include <iostream>
#include <cstring>
#include <algorithm>
#define int long long
using namespace std;
int32_t main()
{
  // 请在此输入您的代码
  int n;cin>>n;
  string s;cin>>s;
  reverse(s.begin(),s.end());
  int sum=0;
  for(int i=0;i<=1000000;i++)
  {
    string temp="";
    if(i==0)
    {
      temp+="0";
    }
    else
    {
      int a=i;
      while(a)
      {
        temp+=a%2+'0';
        a/=2;
      }
      while(temp.back()=='0'&&temp.size()>1) temp.pop_back();
    }

    if(s.find(temp)==-1)
    {
      cout<<i;
      break;
    } 
  }
  
  
  return 0;
}

6.召唤帝皇侠

思路 :数学。这里附上某位大佬的题解

Code:

#include <iostream>
#include <cmath>
#include <unordered_map>
#define int long long
using namespace std;
constexpr int mod=998244353;

int32_t main()
{
  // 请在此输入您的代码
 int t;cin>>t;
 while(t--)
 {
   int x;cin>>x;
   int ed=floor(sqrt(x));
   int sum=0;
     sum=((sum+ed*ed%mod-1)*ed%mod)%mod;
   sum=(sum+ed*ed%mod)%mod;
   if(ed*ed+ed<=x)
   {
     sum=(sum+ed*ed+ed%mod)%mod;
   } 
   if(ed*ed+2*ed<=x)
   sum=(sum+ed*ed%mod+2*ed%mod)%mod;
   cout<<sum<<endl;
 }
  return 0;
}


http://www.kler.cn/a/402025.html

相关文章:

  • 架构师:使用 Atomix 实现分布式协调服务的技术指南
  • 网页抓取API,让数据获取更简单
  • 关于安卓模拟器或手机设置了BurpSuite代理和安装证书后仍然抓取不到APP数据包的解决办法
  • AI工具百宝箱|任意选择与Chatgpt、gemini、Claude等主流模型聊天的Anychat,等你来体验!
  • go-zero(七) RPC服务和ETCD
  • 计算机网络-MSTP基础实验一(单域多实例)
  • 使用docker安装rabbitmq
  • Python去除图像白色背景
  • 大数据新视界 -- Impala 性能突破:复杂数据类型处理的优化路径(上)(25 / 30)
  • 详细描述一下Elasticsearch索引文档的过程?
  • 基于Java Springboot出租车管理网站
  • 【时间之外】IT人求职和创业应知【35】-RTE三进宫
  • 后端web开发:处理前端操作
  • 微分方程(Blanchard Differential Equations 4th)中文版Exercise 5.3
  • 深入理解Rust的所有权和借用
  • 机器学习中的概率超能力:如何用朴素贝叶斯算法结合标注数据做出精准预测
  • 【Unity基础】认识Unity中的包
  • 自动化测试工具Ranorex Studio(三十七)-创建RANOREX快照文件
  • D2076——一款双通道音频功率放大器【青牛科技】
  • 基于51单片机的电子钟+秒表LCD1602仿真设计
  • 个人理财系统(源码+数据库+报告)
  • Linux常用命令学习
  • DataOps for LLM 的数据工程技术架构实践
  • <Sqlite><websocket>使用Sqlite与websocket,实现网页端对数据库的【读写增删】操作
  • mysql8.4+mysql router读写分离
  • 矩阵论在图像算法中的应用