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

【2024.10.31练习】123

题目描述


题目分析

数据量大的题目首先考虑二分。

将该数列写成下类似三角行列式形式:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
...

求数字位置,可以先求数字所在行数(二分查找),再求数字在第几列。

这里注意数据范围,一开始我将最大行数设为1e6,但是这样最多只能容纳5*10^11个数字。


我的代码

#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
#define int long long 
using namespace std;
const int MAX_ROW = 10000005;
int sum[MAX_ROW];
int s, t;
void init() {sum[0] = 0;for (int i = 1; i <= MAX_ROW; i++){sum[i] = sum[i - 1] + i * (i + 1) / 2;}
}
int binary_search(int x,int l,int r) {while (r - l > 1) {int mid = (r + l) / 2;if ((mid + 1) * (mid + 2) / 2 > x) {r = mid;}else {l = mid;}}return r;
}
int get_sum(int row, int x) {int e = x - row * (row + 1) / 2;return e * (e + 1) / 2 + sum[row];
}
signed main(void)
{init();int n;cin >> n;for (int i = 0; i < n; i++){cin >> s >> t;cout << get_sum(binary_search(t, -1, MAX_ROW), t) - get_sum(binary_search(s - 1, -1, MAX_ROW), s - 1) << endl;}return 0;
}


http://www.mrgr.cn/news/62693.html

相关文章:

  • 净水前置需要安装吗?
  • kafka-console-ui的简介及安装使用
  • 鸿蒙实现相机拍照及相册选择照片
  • 启智畅想集装箱箱号识别软件,应用原理
  • 非自适应性上下文
  • python的lambda实用技巧
  • 二分查找题目:搜索插入位置
  • 沈阳工业大学《2021年+2020年827自动控制原理真题》 (完整版)
  • Java - 手写识别; 如何用spring ai和大模型做手写识别教程
  • 监控pod日志
  • 集成学习(2)
  • Ethernet 系列(5)-- 物理层测试::PMA Test::MDI
  • 江协科技STM32学习- P28 USART串口数据包
  • 《暗河传》 顺利杀青,苏棋演绎“千面鬼”慕婴引期待
  • 微软办公三件套入局,苹果接力功能再升级!如何进一步提高跨平台协作效率?
  • 【C++】C++17结构化绑定、std::optional、std::variant、std::any
  • Vue全栈开发旅游网项目(3)-Vue路由配置
  • TransUNet 学习记录
  • 淘宝API接口(item_history_price- 淘宝商品历史价格信息查询)
  • idea git 设置Local Changes窗口
  • Python3 No module named ‘pymysql‘
  • SwiftUI(八)- 绑定对象与环境查询
  • vector的模拟实现
  • 【GO学习笔记 go基础】访问控制
  • 局域网实时监控电脑屏幕软件有哪些?8款优秀的局域网监控app!不看巨亏!
  • 使用Kubernetes自动化部署和管理容器化应用