基础算法集训第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 之前
银行中的激光束数量
移除元素
写字符串需要的行数
按符号重排数组

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

相关推荐
NAGNIP20 小时前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
NAGNIP20 小时前
一文搞懂激活函数!
算法·面试
董董灿是个攻城狮20 小时前
AI 视觉连载7:传统 CV 之高斯滤波实战
算法
爱理财的程序媛1 天前
openclaw 盯盘实践
算法
端平入洛1 天前
auto有时不auto
c++
MobotStone1 天前
Google发布Nano Banana 2:更快更便宜,图片生成能力全面升级
算法
颜酱1 天前
队列练习系列:从基础到进阶的完整实现
javascript·后端·算法
用户5757303346241 天前
两数之和:从 JSON 对象到 Map,大厂面试官到底在考察什么?
算法
程序猿追1 天前
“马”上行动:手把手教你基于灵珠平台打造春节“全能数字管家”
算法