• 蓝桥杯算法竞赛第一周题型总结


    本专栏内容为:蓝桥杯学习专栏,用于记录蓝桥杯的学习经验分享与总结。

    💓博主csdn个人主页小小unicorn
    ⏩专栏分类:C++
    🚚代码仓库:小小unicorn的代码仓库🚚
    🌹🌹🌹关注我带你学习编程知识

    三带一:

    题目来源:三带一
    题目描述:

    在这里插入图片描述
    在这里插入图片描述

    思路:

    排序+判断即可:
    在这里插入图片描述
    代码解决:

    #include 
    using namespace std;
    int main()
    {
      int t;
      cin>>t;
      while(t--)
      {
        string ch;
        cin>>ch;
        sort(ch.begin(),ch.end());
        if(ch[0]!=ch[3]&&(ch[0]==ch[2]||ch[1]==ch[3]))
        {
          cout<<"Yes"<<endl;
        }
        else
        cout<<"No"<<endl;
      }
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    数树树

    题目来源:数树数
    题目描述:

    在这里插入图片描述

    思路:

    考察树的基本知识,按照题目方式编号的话:左端点为2U-1右端点为2U;然后模拟即可。
    代码解决:

    #include 
    using namespace std;
    void solve()
    {
        int n=0;int m=0;
        cin>>n>>m;
        while(m--)
        {
            string s; cin>>s;
            int ret=1;
            for(int i=0;i<s.length();i++)
            {
                if(s[i]=='L') 
                ret=ret*2-1;
                else ret*=2;
            }
            cout<<ret<<endl;
        }    
        return ;
    }
    int main()
    {
      // 请在此输入您的代码
      solve();
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    分组:

    题目来源:分组
    题目描述:

    在这里插入图片描述

    思路:

    贪心+二分:
    首先对身高数组进行排序,然后二分查找。不断检查是否可以将n个同学分成K个队伍,使得每个队伍的身高差不大于mid。通过贪心的方式,从左到右遍历身高数组,尽可能将同学加入当前队伍,直到当前队伍的身高差大于mid,然后开始新的队伍。最终计算分组的数量,如果分组数量小于等于k,说明mid值偏大
    代码解决:

    #include 
    #include 
    #include 
    
    using namespace std;
    
    bool check(vector<int>& heights, int k, int max_diff) 
    {
        int cnt = 1, cur = heights[0], n = heights.size();
        for (int i = 1; i < n; i++)
        {
            if (heights[i] - cur > max_diff)
            {
                cnt++;
                cur = heights[i];
            }
        }
        return cnt <= k;
    }
    int main() 
    {
        int n, k;
        cin >> n >> k;
        vector<int> heights(n);
        for (int i = 0; i < n; ++i) cin >> heights[i];
        sort(heights.begin(), heights.end());
        int l = 0, r = heights[n - 1] - heights[0];
        while (l < r) 
        {
            int mid = l + (r - l) / 2;
            if (check(heights, k, mid)) r = mid;
            else l = mid + 1;
        }
        cout << l << endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
  • 相关阅读:
    1393. 股票的资本损益
    如何评价科大讯飞AI翻译笔P20系列,值得买吗?
    JSP webshell免杀——JSP的基础
    java通过代码给所有表的字段批量加索引
    面向对象分析与设计(第三版) 读书笔记
    Cookie 与 Session的区别
    B. DIV + MOD
    MyBatis框架使用过程中出现的问题以及解决方案
    unr #6day1 T2题解
    【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透
  • 原文地址:https://blog.csdn.net/weixin_72066135/article/details/134346976