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

《算法每日一题(1)--- 第31场蓝桥算法挑战赛》

《算法每日一题(1)— 第31场蓝桥算法挑战赛》


🔥小龙报:个人主页
🎬作者简介:C++研发,嵌入式,机器人方向学习者
❄️个人专栏:《C语言》《算法》KelpBar海带Linux智慧屏项目

永远相信美好的事情即将发生

文章目录

  • 《算法每日一题(1)--- 第31场蓝桥算法挑战赛》
  • 前言
  • 一、零食接龙
    • 1.1题目
    • 1.2算法原理
  • 二、 成员划分
    • 2.1题目
    • 2.2算法原理
    • 2.3代码
  • 三、 程序辩论
    • 3.1题目
    • 3.2算法原理
    • 3.3代码
      • 3.3.1使用二分答案
      • 3.3.2模拟
  • 总结


前言

本系列为笔者的练习分享,题目难度适中适合刚入门(笔者也是刚入门)算法的同学学习,希望能和大家见证算法编程和逻辑思维的进步
注:算法赛我们只讲解前三题涉及基础算法的后三题涉及高阶数据结构和算法我们以后在探究

在这里插入图片描述
赛事链接:赛事链接

一、零食接龙

1.1题目

在这里插入图片描述

1.2算法原理

这道题的逻辑很简单,我们直接上代码

二、 成员划分

2.1题目

在这里插入图片描述

2.2算法原理

(1)首先此题的题是眼按顺序划分成若干个连续的小组(即子区间),并且要满足区间内奇偶数数量相等,那我们便可以使用前缀和数组ans,遇到奇数:+1 ,遇到偶数:-1 ,则一个合法区间仅为满⾜条件当且仅当ans = 0
(2)划分最多的子区间:我们可以使用贪心,从 i=1 到 n 遍历当奇偶数量一致时就划分为一个子区间说明从上⼀个切割点到当前 i 形成了⼀个最短的平衡⼦数组。

2.3代码

#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N];int main()
{int n;cin >> n;int ans = 0;int ret = 0;for (int i = 1; i <= n; i++){cin >> a[i];if (a[i] % 2 != 0)ans += 1;elseans -= 1;if (ans == 0) //划分一组的条件ret++;}if (ans != 0)cout << -1 << endl;elsecout << ret << endl;return 0;
}

三、 程序辩论

3.1题目

在这里插入图片描述

3.2算法原理

首先:这道题要求获胜的小蓝最小的正整数初始程序设计能力值,最佳策略:优先与能力值最小的对手辩论故要排序
(1)我想到的第一个方法是二分答案,设题目要求的答案为ret
如图:

在这里插入图片描述
(2)这道题的第二个方法就是模拟:获胜的条件便是大于等于当前值加上当前值的一半大于等于当前值的下一个值既 x + a[i] / 2 >= a[i+1] 通过移项想让x最小,a[i + 1] - (a[i] / 2)要最大;

3.3代码

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;const int N = 1e5 + 10;
LL a[N];int main()
{int n;cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];sort(a + 1, a + 1 + n);LL ret = 0;LL x = 0;for (int i = 1; i <= n; i++){ret = max(ret,a[i] - x);x += a[i] / 2;}cout << ret << endl;return 0;
}

3.3.1使用二分答案

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 1e5 + 10;
LL n, a[N];bool check(LL x)
{for (int i = 1; i <= n; i++){if (x < a[i])return false;x += a[i] / 2;}return true;
}
int main()
{cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];sort(a + 1, a + 1 + n);  //排序LL l = 1, r = 1e9;while (l < r){LL mid = (l + r) / 2;if (check(mid))r = mid;elsel = mid + 1;}cout << l << endl;return 0;
}

3.3.2模拟

总结

今天就到这里,大家明天见
在这里插入图片描述

http://www.dtcms.com/a/511585.html

相关文章:

  • 低代码开发平台有哪些:数字化深水区的核心基建与品牌全景
  • 二元 LDPC码的Tanner图表示方法
  • 基于大数据的股票推荐系统 协同过滤推荐算法 数据分析可视化 Django框架 金融数据分析(源码+文档)✅
  • diffusion model(0.4.2) 为什么$\nabla_x \log p(x)$指向概率密度更高的区域?
  • Linux小课堂: 文件归档与压缩技术之从 tar 到 gzip、bzip2 与 zip/rar 详解
  • IT科技资讯新闻类织梦网站模板定制化网站开发
  • 编程 网站建设一站式快速网站排名多少钱
  • 工厂防护鞋穿戴检测预防足部伤害 防护鞋穿戴检测 未佩戴防护鞋实时报警 基于YOLOv8的防护鞋识别算法
  • 「日拱一码」126 机器学习路线
  • react学习笔记【一】
  • Drawnix - 开源白板工具
  • 网站制作是怎么学的WordPress博客右边设置
  • go build -tags的其他用法
  • 【Unity开发】try-finally 与 try-catch 的区别详解
  • PHP数据库操作全攻略
  • 标准解读——GB/T 46353—2025《信息技术 大数据 数据资产价值评估》国家标准
  • Herm详解
  • 重庆网站建设哪家公司那家好winserver2008上用iis发布网站
  • HTML-CSS项目练习
  • 如何编写自动化测试用例?
  • 【Vibe Coding】001-前端界面常用布局
  • webview 中 cursor:pointer无效是由于-webkit-app-region导致的
  • 【C++】哈希表的实现【开放定址法vs链地址法】
  • 【业务逻辑漏洞】认证漏洞
  • 做网站在哪深圳做网站 汉狮网络
  • 修改k8s的镜像源为国内镜像源
  • Arbess从入门到实战(15) - 使用Arbess+GitHub实现Docker项目自动化构建部署
  • 【MySQL】从零开始了解数据库开发 ---mysql事务机制(一)
  • 网站建设明细盐都建设局网站
  • 基于单片机的气象站labview上位机监测系统