【2024年莆田市第四期C++专项第三轮选拔真题(初中组) 】买米问题 题解

2024年莆田市第四期C++专项第三轮选拔真题(初中组) 买米问题 题解

P2646 买米问题
在这里插入图片描述
在这里插入图片描述

初始代码分析

  1. 首先将店铺的初始米价进行排序。

  2. 使用一个循环找到初始时最多可以购买的店铺数量pos,即sum + a[pos+1]不超过m的最大pos。

  3. 然后进入另一个循环,每天增加day,并累加当天能购买的米袋数pos到res中。

  4. 在每天结束后,检查sum + day * pos是否超过m,如果超过,则减少pos,并调整sum。

问题分析

该代码的思路是正确的,但在处理大规模数据时会超时,原因在于:

  1. 时间复杂度较高:外层循环最多进行n次,内层循环在最坏情况下也可能进行n次,导致时间复杂度接近O(n2),对于n=2×105来说,这样的复杂度无法在时间限制内完成。

  2. 逐天模拟效率低:虽然模拟每一天的购买情况直观,但对于大范围的day来说,逐天计算显然不够高效。

C++ 70分代码

#include <bits/stdc++.h>
#define ll long long
using namespace std;

int a[200005];
int main() {
   
    ll n,m;
    cin >> n >> m;
    for(int i=1;i<=n;i++){
   
    	cin >> a[i];
	}
	sort(a+1,a
目前尚未有2024第十四届蓝桥杯大赛软件赛国赛C/C++大学B组的真题题解发布,因为该赛事的时间线可能还未到达公布阶段[^1]。然而,可以基于以往的比赛形式和内容推测其考察的知识点范围以及提供一些常见的练习方向。 以下是关于如何准备此类比赛的一些指导: ### 准备指南 #### 一、熟悉基础算法 掌握基本的数据结构和经典算法对于参赛者至关重要。这包括但不限于数组、链表、栈、队列等数据结构的应用;排序(快速排序、归并排序)、查找(二分法)、动态规划等问题解决方法的学习与实践。 ```cpp // 快速排序实现 (C++) void quickSort(int arr[], int low, int high){ if(low < high){ int pi = partition(arr,low,high); quickSort(arr, low, pi-1); quickSort(arr, pi+1, high); } } int partition (int arr[], int low, int high){ int pivot = arr[high]; int i = (low - 1); for (int j = low; j <= high- 1; j++){ if (arr[j] < pivot){ i++; swap(&arr[i], &arr[j]); } } swap(&arr[i + 1], &arr[high]); return (i + 1); } ``` ```java // 快速排序实现 (Java) public static void quickSort(int[] array, int start, int end) { if(start >= end) return; int pivotIndex = partition(array, start, end); quickSort(array, start, pivotIndex - 1); quickSort(array, pivotIndex + 1, end); } private static int partition(int[] array, int start, int end) { int pivotValue = array[end]; int index = start; for(int i=start;i<end;i++) { if(array[i]<pivotValue) { swap(array,i,index++); } } swap(array,end,index); return index; } ``` #### 二、深入理解编程语言特性 无论是使用C++还是Java参加竞赛,都需要深入了解所选语言的特点及其标准库的功能。例如,在C++中熟练运用STL容器类如vector、map等能够极大提高编码效率;而在Java里,则需熟知Collections框架下的各类集合类型及其实现原理。 #### 三、模拟实战训练 通过历试题进行反复演练是非常有效的备考方式之一。虽然现在无法获取到最新的2024具体题目,但是可以通过分析往的考题来预测可能出现的新颖考点,并针对性加强薄弱环节。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值