基础算法集训第01天:线性枚举

目录

成绩分析

存在连续三个奇数的数组

最大连续1的个数

有序数组中的单一元素

[P12163 [蓝桥杯 2025 省 C/Java A] 2025](#P12163 [蓝桥杯 2025 省 C/Java A] 2025)

三元组中心问题

企业组织结构优化

单词分析

成绩统计

[P12162 [蓝桥杯 2025 省 C/Java A/研究生组] 数位倍数](#P12162 [蓝桥杯 2025 省 C/Java A/研究生组] 数位倍数)

其他题目


成绩分析

cpp 复制代码
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
  int MAX=0;
  int MIN=100;
  double x=0;
  int n;
  cin>>n;
  int t;
  for(int i=0;i<n;i++){
    cin>>t;
    MAX=max(MAX,t);
    MIN=min(MIN,t);
    x+=t;
  }
  x/=(double)n;
  cout<<MAX<<endl<<MIN<<endl;
  printf("%.2lf",x);
  return 0;
}

存在连续三个奇数的数组

cpp 复制代码
class Solution {
public:
    bool threeConsecutiveOdds(vector<int>& arr) {
        int sum=0;
        for(int i=0;i<arr.size();i++){
            if(arr[i]%2==1){
                sum++;
                if(sum>=3){
                    return true;
                }
            }
            else {
                sum=0;
            }
        }
        return false;
    }
};

最大连续1的个数

cpp 复制代码
class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {
        int res = 0;
        int sum = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] == 1) {
                sum++;
                res = max(res, sum);
            } else {
                sum = 0;
            }
        }
        return res;
    }
};

有序数组中的单一元素

cpp 复制代码
class Solution {
public:
    int singleNonDuplicate(vector<int>& nums) {
        int res=0;
        for(int i=0;i<nums.size();i++){
            res^=nums[i];
        }
        return res;
    }
};

P12163 [蓝桥杯 2025 省 C/Java A] 2025

cpp 复制代码
#include <iostream>
using namespace std;
int main()
{
    int res = 0;
    for (int i = 1000; i <= 20250412; i++)
    {
        int n = i;
        int a[11] = {0};
        while (n)
        {
            a[n % 10]++;
            n /= 10;
        }
        if (a[0] >= 1 && a[2] >= 2 && a[5] >= 1)
        {
            res++;
        }
    }
    cout << res;
    return 0;
}

三元组中心问题

cpp 复制代码
#include <iostream>
using namespace std;
int j;
int res;
int a[1010];
int n;
void jud(){
    for(int i=0;i<j;i++){
        if(a[i]<a[j]){
            for(int k=j+1;k<n;k++){
                if(a[j]<a[k]){
                    res++;
                    return ;
                }
            }
            return ;
        }
    }
}
int main()
{
  cin>>n;
  for(int i=0;i<n;i++){
      cin>>a[i];
  }
  for(j=1;j<n-1;j++){
      jud();
  }
  cout<<res;
  return 0;
}

企业组织结构优化

cpp 复制代码
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
  int t;cin>>t;
  int res=0;
  while(t--){
      int n;cin>>n;
      int t=0;
      int k;
      for(int i=0;i<n;i++){
          cin>>k;
          t=max(t,k);
      }
      res+=t;
  }
  cout<<res;
  return 0;
}

单词分析

cpp 复制代码
#include <iostream>
#include<cstring>
using namespace std;
int main()
{
  string s;cin>>s;
  int a[27]={0};
  for(int i=0;i<s.size();i++){
      a[s[i]-'a']++;
  }
  int max=a[0];
  char t='a';
  for(int i=0;i<27;i++){
      if(a[i]>max){
          max=a[i];
          t='a'+i;
      }
  }
  cout<<t<<endl<<max;
  return 0;
}

成绩统计

如何四舍五入?

浮点数+0.5然后转化为int

cpp 复制代码
#include <iostream>
using namespace std;
int main()
{
  int n;
  cin>>n;
  int t;
  double jige=0;
  double youxiu=0;
  for(int i=0;i<n;i++){
      cin>>t;
      if(t>=60)jige++;
      if(t>=85)youxiu++;
  }
  jige*=100;
  youxiu*=100;
  jige/=(double)n;
  youxiu/=(double)n;
  int j=jige+0.5;
  int y=youxiu+0.5;
  cout<<j<<"%"<<endl<<y<<"%";
  return 0;
}

P12162 [蓝桥杯 2025 省 C/Java A/研究生组] 数位倍数

cpp 复制代码
#include <iostream>
using namespace std;
int main()
{
    int res = 0;
    for (int i = 1; i <= 202504; i++)
    {
        int n = i;
        int sum = 0;
        while (n)
        {
            sum += n % 10;
            n /= 10;
        }
        if (sum % 5 == 0)
        {
            res++;
        }
    }
    cout << res;
    return 0;
}

其他题目

P12175 [蓝桥杯 2025 省 Python B] 园艺 - 洛谷

桥接字符
消失的蓝宝
逛商场
门牌制作
A Mathematical Curiosity
Ignatius and the Princess IV
Financial Management
猜数字

数组中两元素的最大乘积
寻找旋转排序数组中的最小值
寻找旋转排序数组中的最小值 II
第三大的数
三个数的乘积
从数组中移除最大值和最小值
使数组变成交替数组的最小操作数
K 个元素的最大和
拿硬币

值相等的最小索引
删除有序数组中的重复项
将找到的值乘以 2
检查是否所有 A 都在 B 之前
银行中的激光束数量
移除元素
写字符串需要的行数
按符号重排数组

数组元素和与数字和的绝对差
数组能形成多少数对
两个数组的交集
两个数组间的距离值
最大交换
至少在两个数组中出现的值
子数组范围和
统计上升四元组

相关推荐
茉莉玫瑰花茶15 小时前
CMake 工程指南 - 工程场景(4)
服务器·c++·cmake
Java面试题总结15 小时前
Go图像处理基础: image包深度指南
图像处理·算法·golang
C羊驼15 小时前
C 语言:哥德巴赫猜想
c语言·开发语言·人工智能·经验分享·笔记·算法·课程设计
田梓燊15 小时前
算法题学习题单
学习·算法
Sunsets_Red15 小时前
乘法逆元的 exgcd 求法
c++·学习·数学·算法·c#·密码学·信息学竞赛
季明洵15 小时前
预处理详解(上)
linux·c语言·数据结构·预定义
阿Y加油吧15 小时前
力扣打卡——接雨水、无重复字符的最长子串
算法·leetcode·职场和发展
米啦啦.15 小时前
函数模板,namespace名字空间,动态内存管理,C++11新特性,
c++·动态内存管理·函数模板·c++新特性·名字空间
茉莉玫瑰花茶15 小时前
CMake 工程指南 - 工程场景(5)
开发语言·c++·cmake