题目如下:

T o k i t s u k a z e Tokitsukaze Tokitsukaze 有一个函数
f ( x ) = ⌊ x n ⌋ + x − 1 f(x)=⌊\frac{x}{n}⌋+x−1 f(x)=⌊nx​⌋+x−1
她想在区间 [ L , R ] [L,R] [L,R] 中找到一个最小的整数 t t t, 使函数 f ( t ) f(t) f(t) 的值最小。

输入描述:

第一行包含一个整数 T T T ( 1 ≤ T ≤ 2 ∗ 1 0 5 ) (1 \le T \le 2*10^5) (1≤T≤2∗105), 表示测试数据组数。
每组测试数据包含三个整数 n , L , R n,L,R n,L,R ( 1 ≤ n ≤ 1 0 18 (1 \le n \le 10^{18} (1≤n≤1018; 1 ≤ L ≤ R ≤ 1 0 18 ) 1 \le L \le R \le 10^{18}) 1≤L≤R≤1018)。

输出描述:

对于每组测试数据,输出最小的 t t t ( L ≤ t ≤ R ) (L \le t \le R) (L≤t≤R), 使 f ( t ) f(t) f(t) 的值最小。

示例1

输入
链接:https://ac.nowcoder.com/acm/contest/46810/E
来源:牛客网11
9 1 1
9 1 2
9 1 3
9 1 4
9 1 5
9 5 6
9 5 7
9 5 8
9 5 9
1145141919810 114514 1919810
8 1 8
输出
1
2
2
2
2
5
5
5
5
1069123
3
说明

n = 9 n = 9 n=9 时, f ( 1 ) = 9 , f ( 2 ) = 5 , f ( 3 ) = 5 , f ( 4 ) = 5 , f ( 5 ) = 5 , f ( 6 ) = 6 , f ( 7 ) = 7 , f ( 8 ) = 8 , f ( 9 ) = 9 f(1) = 9, f(2) = 5, f(3) = 5, f(4) = 5, f(5) = 5, f(6) = 6, f(7) = 7, f(8) = 8, f(9) = 9 f(1)=9,f(2)=5,f(3)=5,f(4)=5,f(5)=5,f(6)=6,f(7)=7,f(8)=8,f(9)=9

题解 or 思路:

首先我们可以发现这个函数是 凹函数

赛时写了个三分 w a wa wa 了, 为什么呢?
应为这个题中的 x x x 正整数, 我们只能保证 在实数上这个函数是凹函数 有且只有 应该峰, 但如果取值是正整数,我们无法保证其的单调性。

我们可以知道这个函数在 s q r t ( n ) sqrt(n) sqrt(n) 处取得最小值,但我们不确定是在 n \sqrt{n} n ​ 还是在 ⌊ n ⌋ ⌊\sqrt{n}⌋ ⌊n ​⌋ 处。

我们可以分类去求解:

  • L > n L > \sqrt{n} L>n ​ 答案就是 L L L
  • 其他情况
    令 f ( t 0 ) f(t_0) f(t0​) 为最小的 f ( x ) f(x) f(x),现在要求最小的 t t t。显然在 [ 1 , t 0 ] [1,t_0] [1,t0​] 内的 f f f 是单调递减的,所以我们可以在 [ L , t 0 ] [L,t_0] [L,t0​] 范围内二分求出 t t t。时间复杂度 O ( T ⋅ l o g n ) O(T · log n) O(T⋅logn)

AC 代码如下:

/*
Make it simple and keep self stupid
author:Joanh_Lan
*/
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <numeric>
#include <cstring>
#include <cmath>
#include <map>
#include <unordered_map>
#include <bitset>
#include <set>
#include <random>
#include <ctime>
#include <queue>
#include <stack>
#include <climits>
#define buff                     \ios::sync_with_stdio(false); \cin.tie(0);
// #define int long long
#define ll long long
#define PII pair<int, int>
#define px first
#define py second
typedef std::mt19937 Random_mt19937;
Random_mt19937 rnd(time(0));
using namespace std;
const int mod = 1e9 + 7;
const int inf = 2147483647;
const int N = 100009;
// int Mod(int a,int mod){return (a%mod+mod)%mod;}
// int lowbit(int x){return x&-x;}//最低位1及其后面的0构成的数值
// int qmi(int a, int k, int p){int res = 1 % p;while (k){if (k & 1) res = Mod(res * a , p);a = Mod(a * a , p);k >>= 1;}return res;}
// int inv(int a,int mod){return qmi(a,mod-2,mod);}
// int lcm(int a,int b){return a*b/__gcd(a,b);}
ll n, l, r;
void solve()
{cin >> n >> l >> r;auto cal = [](ll x){return n / x + x - 1;};ll x = sqrt(n);if (l > x){cout << l << '\n';return;}if (r > x)r = x + (cal(x) >= cal(x + 1));ll mn = cal(r);ll ans = r;while (l < r){ll mid = l + r >> 1;if (cal(mid) <= mn)ans = mid, r = mid;elsel = mid + 1;}cout << ans << '\n';
}
int main()
{buff;int _;cin >> _;while (_--)solve();
}

2023牛客寒假算法基础集训营2 -- E-Tokitsukaze and Function(数学 二分)相关推荐

  1. 2023牛客寒假算法基础集训营5(通过ABCDHIKL) I题有详解(F已补)

    其他题待补中-- 链接:2023牛客寒假算法基础集训营5 简单题 A 小沙の好客(贪心,前缀和,二分) 题意思路 给定 n n n个商品的价值, q q q次询问,每次询问 k , x k, x k, ...

  2. 2023牛客寒假算法基础集训营4_20230130「向上取整」「夹逼dp」「lowbit科学+树状数组性质」「搜索」「倍增跳表」「莫队」

    6/13 教育场是有被教育到.(预计会鸽几题. 已过非太水的题们 //B //https://ac.nowcoder.com/acm/contest/46812/B//小构造小数学#include & ...

  3. 2023牛客寒假算法基础集训营1_20230116「典dp」「典set」「小思维+bfs」「小思维+构造+码力」「位运算博弈(人类智慧)」

    6/13 打得不好,这两天家里也很不好,跟做梦一样,脑子好像被僵尸吃掉了,前两个小时胡乱瞎写交题只过样例,wa了再看,什么b错都能写出来. M. M-本题主要考察了找规律_2023牛客寒假算法基础集训 ...

  4. 2023牛客寒假算法基础集训营4 赛时思路+正解

    今天的训练营全是图论题,实属遇到了自己不会的场了,只能凑合凑合打了,可能这把要上黄了,寒假算法基础训练营系列也有可能到此完结了. 今天的场我觉得应该是一个值得补题的一场,有很多题并不难但是比较典型的题 ...

  5. 2023牛客寒假算法基础集训营6

    A-阿宁的签到题 链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 这是一道签到题,想必大家都可以顺利签到吧?!!! 在这次寒假集训营中每一个题都有一个难度评分xxx. 题目分为以下等级: ...

  6. 2023牛客寒假算法基础集训营3(8/11)

    不断减损的时间 贪心,负数只会越除越大,所以只操作正偶数 AC代码: #include <bits/stdc++.h> using namespace std; using LL = lo ...

  7. 2023牛客寒假算法基础集训营1

    A模拟 World Final? World Cup! (I) 题意:A.B两队轮流罚球,共10局,告诉你罚球的结果,进球多的队伍获胜,问在哪一局就可以知道最终结果. 思路:枚举每一轮i,计算后面A. ...

  8. 2023牛客寒假算法基础集训营3 -- E-公平守望的灯塔(向量 简单几何)

    题目如下: 示例1 输入 1 0 0 1 输出 0 0 说明 输出1 1也是可以的. 思路 or 题解: 我们可以迅速找到 CCC 有两个位置满足题意,但 CCC 的坐标不一定是整数,我们需要 che ...

  9. 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱

    今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...

最新文章

  1. 上传图片截图预览控件不显示cropper.js 跨域问题
  2. Python2.7编程基础(博主推荐)
  3. 爬虫之Xpath的使用
  4. 40. 后台模块开发(5)
  5. db2查询字段备注_SQL基础7:SQLSERVER、ORACLE、DB2中SQL语句查询表字段名、注释、字段类型...
  6. 三星android驱动程序错误,android系统的三星手机插入电脑无法识别
  7. 肌营养不良最新研究进展(2021年)
  8. python回归分析
  9. 实现财务自由 之 你不可不知的投资股票、基金、房地产、REITs等指数指标查询必备网址(市盈率、国债收益率、派息率等等)
  10. 10分钟帮你全面了解ASO
  11. iOS牛顿摆 小球撞击 物理学仿真模拟
  12. 小象大数据全套视频教程
  13. f5 gtm 工作原理_F5 LTM工作原理.ppt
  14. 在类方法中可 用this来调用本类的类方法
  15. BZOJ4872 [SHOI2017]分手是祝愿
  16. excel文件导入hive乱码_hive 从Excel中导入数据
  17. 5G-NR非连续接收DRX参数配置详解
  18. IDL CMIP6 NC格式数据处理
  19. lower_bound和upper_bound的区别
  20. [Games104笔记] 游戏中的渲染管线,后处理

热门文章

  1. 「PAT乙级真题解析」Basic Level 1089 狼人杀-简单版 (问题分析+完整步骤+伪代码描述+提交通过代码)
  2. 有关html,css的实用知识点总结(一)
  3. 【模板/经典题型】闵可夫斯基和
  4. 怎么实现手机端网页页面自适应调整
  5. springboot实现邮箱发送
  6. cas20205-29-2|2,3,3-三甲基-1-丙基-3H-吲哚碘|2,3,3-trimethyl-1-propylindol-1-ium,iodide齐岳生物
  7. hanoi塔递归算法c语言,递归算法 Hanoi(汉诺)塔问题
  8. 不要让畸变毁了你的照片 - ACR/Lightroom基本校正
  9. 电脑显示器有波纹怎么回事
  10. Android——Button的颜色