【冲刺蓝桥杯的最后30天】day4

news/2024/11/7 18:45:42/

大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨‍💻,断更了整整一年,又开始恢复CSDN更新,从今天开始更新备战蓝桥30天系列,一共30天,如果对你有帮助或者正在备战蓝桥杯的小伙伴可以支持一下哦!~不能说肯定是干货,但会让你有所收获!💓💓💓

课又多,讲的又水,纯纯恶心人,不去还随机点名+位置签到,这就是我前18岁一直期盼的大学生活吗😭😭😭既浪费想真正学习的人的时间,又影响不想学习人家玩手机的体验😭😭😭
🍭🍭我们总是在生活扮演各种角色,却唯独很少扮演自己🍭🍭

山 - 蓝桥云课 (lanqiao.cn)

思路:暴力+双指针,因为有限制的回文判定,需要在判断回文的条件下再单独加些条件,因为暴力+数据太大,导致编译器要跑一段时间,很正常,比赛的时候遇到这种情况也不要慌,去看或者做下一道题,在五分钟内能跑完就是合格的代码!这段代码要跑三四分钟的,不要急。
    public static void main(String[] args) {int ans = 0;for (int i = 2022; i <= 2022222022; i++) {//考虑操作一长段整数的时候转换成字符串再转换成字符数组是非常好用简单的一个思路//当然这段思路不是高效快速的,但一定好想char[] s = (i+"").toCharArray();int l = 0, r = s.length-1;boolean flag = true;while (l < r){//判断既是回文的同时就要让人家左右看来都是递增的,这个段代码不用考虑奇偶//我看CSDN很多题解都是一模一样的,没有什么非常新颖的,只能自己把自己想法写下来if(s[l+1] < s[l] || s[r-1] < s[r] || s[l] != s[r]){flag = false;break;}l++;r--;}if(flag) ans++;}System.out.println(ans);//3138}

最少刷题数 - 蓝桥云课 (lanqiao.cn)

思路:这道题是非常经典的前缀和+二分,常见的考法,比较基本也比较重要的两个算法知识,务必要掌握好,才能更好有希望冲击省一。具体细节代码上都有标注,大概就是要创建一个数组用来存储每个刷题量都有多少学生人数,并求出这个数组的前缀和,之后循环判断每一个学生刷题数是否已经满足条件用这个前缀和数组O1来查找判断,如果不满足就用二分去查找这个前缀和数组找到左边界,刷题数比他少的学生人数刚好大于等于刷题量比他多的学生人数,得到这个刷题数后减去目前已经刷的,得到还需要刷多少道题才能满足题目条件。

    static int N = 100010;static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));//a存储每个同学刷题的数量,b存储的是每个刷量的个数对应学生有多少人static int[] a = new int[N];static int[] b = new int[N];public static void main(String[] args) throws IOException {String[] s = br.readLine().split(" ");int n = Integer.parseInt(s[0]);s = br.readLine().split(" ");for (int i = 0; i < n; i++) {a[i] = Integer.parseInt(s[i]);//存储下标为刷题数的学生是多少,对应++b[a[i]]++;}//对刷题数进行前缀和,可以知道刷题数的时候,等于,小于,大于该刷题数的学生是多少人//一共N最大就是1e5,我们不知道具体每个学生刷多少道题,只有个范围,只能用最大值求前缀和了for (int i = 1; i <= 100000; i++) {b[i] += b[i - 1];}//求每个学生至少还要刷多少道题可以满足  比自己刷题多的学生数 小于等于 刷题比他少的学生数for (int i = 0; i < n; i++) {//前面表示刷题量比自己多的学生  后面表示刷题量比自己少的学生,因为学生可以刷0道题,如果刷题数比自己小的学生都是刷0道题就会导致a[i-]-1为负数//b[-1]就会越界导致报错,所以要最后和0取个最大值//这个if条件就是刷题数比他少的学生数量大于等于刷题量比他多的学生,此时已经满足条件,直接输出就行了,该学生不用再刷题了if (b[100000] - b[a[i]] <= b[Math.max(0, a[i]-1)]) {out.print(0 + " ");continue;}//二分b数组找一个点,该点满足左边刷题数少的学生 刚好大于等于 右边刷题比他少的学生int l = a[i] + 1, r = 100000;while (l < r) {int mid = (l+r)>>1;//左边表示刷题数小于a[mid]的人用b[mid-1]表示,因为第一个if没进去,才到了这个循环里面,那么每次用mid查找的时候,自己就是属于刷题数小于a[mid]的人//因为要求的是数量大小的比较,自己这个时候已经被抽出去了,看要刷多少题才能插入到满足条件的地方,所以要算(左边刷题数少的学生 刚好大于等于 右边刷题比他少的学生)//的人数的时候,要把自己减掉才可以,所以左边刷题数少的学生表示为b[mid]-1if (b[mid - 1] - 1 >= b[100000] - b[mid]) r = mid;else l = mid + 1;}//还要刷多少道题out.print((r - a[i]) + " ");}out.flush();}

http://www.ppmy.cn/news/30873.html

相关文章

proteus光敏电阻电路的arduino仿真

虽然Fritzing0.9.10有了仿真的功能&#xff0c;但都是测试板&#xff0c;能够仿真的很有限&#xff0c;所以还是要借助proteus来仿真。这里&#xff0c;我们来实先一个简单的光明电阻的仿真电路。本篇博文&#xff0c;重点演示proteus仿真arduino光敏电阻&#xff0c;arduino采…

C++中的类简要介绍

文章目录前言一、什么是类什么是对象1.类的概述2.对象的概述二、如何创建使用类三、class和struct创建类时的区别1.访问级别2.继承方式总结前言 本篇文章讲给大家介绍一个C中重要的概念&#xff0c;了解了这个概念大家就明白了为什么C会叫做面向对象编程了。 一、什么是类什么…

三八妇女节快乐----IT女神活动随笔

献丑了&#xff0c;一首小小散文诗&#xff0c;请大家轻喷 O(≧口≦)O 我的答案 天下芸芸众生&#xff0c;好似夜幕漫天繁星。 与你相识&#xff0c;只是偶然。 简单的一个招呼&#xff0c;于是开始了一段故事。 我们或是诉说&#xff0c;或是分享&#xff1b; 我们彼此倾听&…

Espressif-IDE v2.8.0 新增功能及开发方向

在乐鑫最近发布的 Espressif-IDE 2.8.0 版本中&#xff0c;我们推出了分区表编辑器和 NVS 分区编辑器功能&#xff0c;优化现有调试器的配置功能并修复多项 Bug &#xff0c;进一步为用户提升了插件质量以及稳定性。 用户可以点此获取最新版本。 • 若您的设备为 Windows 系统…

【Hello Linux】进程控制 (内含思维导图)

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;简单介绍下进程的控制 包括进程启动 进程终止 进程等待 进程替换等概念 进程控制介绍进程创建fork函数fork函数的返回值fork函数的使用…

yolov8行人识别教程(2023年毕业设计+源码)

yolov8识别视频直接上YOLOv8的结构图吧&#xff0c;小伙伴们可以直接和YOLOv5进行对比&#xff0c;看看能找到或者猜到有什么不同的地方&#xff1f; Backbone&#xff1a;使用的依旧是CSP的思想&#xff0c;不过YOLOv5中的C3模块被替换成了C2f模块&#xff0c;实现了进一步的轻…

2020蓝桥杯真题反倍数 C语言/C++

题目描述 给定三个整数 a,b,c&#xff0c;如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍&#xff0c;则这个数称为反倍数。 请问在 1 至 n 中有多少个反倍数。 输入描述 输入的第一行包含一个整数 n。 第二行包含三个整数a,b,c&#xff0c;相邻两个数之…

10 Wifi网络的封装

概述 Wifi有多种工作模式,比如:STA模式、AccessPoint模式、Monitor模式、Ad-hoc模式、Mesh模式等。但在IPC设备上,主要使用STA和AccessPoint这两种模式。下面分别进行介绍。 STA模式:任何一种无线网卡都可以运行在此模式,这种模式也是无线网卡的默认模式。在此模式下,无线…