题解 | #小A弹吉他

小A弹吉他

https://www.nowcoder.com/practice/1ea8f581cc1a4db9b098faf82a7b0850

题目要求: 的最大 值。

思路解析:

比方说 时,最小和为

  • 可以发现上述两个式子是等价的,当 的时候就在这个前提再加上 。这样的话我们提前预处理一下,最后结果再二分查找即可。

预处理阶段:

计算对于每个 ,和式的值是如何累积的。

这种结构的累加和可以通过递推方式计算。即每增加一个 ,就加上从 1 到 的和。例如:

  • 时,最小值为
  • 时,最小值为
  • 时,最小值为
  • 时,最小值为

二分查找:

直接查表二分即可.

代码如下:

#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<int>ans;
void solve() {
    int x;
    cin >> x;
    int mark = 0;
    mark = upper_bound(ans.begin() + 1, ans.end(), x) - ans.begin() - 1;
    cout << mark + 1 << "\n";
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    ans.resize(1817120 + 5);
    for (int i = 1; i <= 1817120; i++) {
        ans[i] = i * (i + 1) / 2 + ans[i - 1];
    }
    int t = 1;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}
print('Hello world!')
全部评论
博主tql!!!醍醐灌顶!!!Orz!!!!啊不,Or2!!!!!!!!!!,严肃被up的智商折服!!!!!这是拿xcpc牌子的脑回路吧!!!
2 回复 分享
发布于 2025-11-22 15:25 天津
orz!!!!!!!,天不生我L99,剑道万古长如夜!!!
点赞 回复 分享
发布于 2025-11-27 22:46 湖南

相关推荐

04-13 11:19
门头沟学院 HTML5
NullPointe...:27实习的都快结束了吧
点赞 评论 收藏
分享
评论
6
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务