题解 2618: 蓝桥杯2021年第十二届国赛真题-123

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

123 二分+数学

```//a[n]=(n)*(n+1)/2,随着x的增大,一定存在一个a【i】的位数是小于x的最大值,因为==x情况也满足》a【i】,st》x数更是大于ai,所以满足二分条件,寻找到小于x的最大值为l,所以答案为s【l】+a【x-a【l】】#includeusingnamespacestd;typed

(公式+upper_bound())(100%正确)

[题目链接](https://www.dotcpp.com/oj/problem2618.html)这题的主要难度在于求数据规模太大,暴力求解前缀和肯定是会超时的,但是可以明显看出最终问题是需要求解出公式的,所以接下来我们来看如何求解公式当一个数列{an}最大数为N时,那它后面的数肯定都小于N,

蓝桥杯第十二届国赛真题-123 二分+公式

解题思路:直接暴力枚举求解,无论是时间还是空间上都不允许。但本题涉及到等差数列,因此考虑**等差数列求和公式**求解。按照如下思路:1.分别求出l和r对应哪一段(记为pl,pr);2.求出分别是那一段的第几个(记为no_l,no_r);3.求出pl段从no_l到末尾(即pl)的和+pr段1到no_r的