2023牛客寒假算法基础集训营2 -- E-Tokitsukaze and Function(数学 二分)
题目如下:
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(数学 二分)相关推荐
- 2023牛客寒假算法基础集训营5(通过ABCDHIKL) I题有详解(F已补)
其他题待补中-- 链接:2023牛客寒假算法基础集训营5 简单题 A 小沙の好客(贪心,前缀和,二分) 题意思路 给定 n n n个商品的价值, q q q次询问,每次询问 k , x k, x k, ...
- 2023牛客寒假算法基础集训营4_20230130「向上取整」「夹逼dp」「lowbit科学+树状数组性质」「搜索」「倍增跳表」「莫队」
6/13 教育场是有被教育到.(预计会鸽几题. 已过非太水的题们 //B //https://ac.nowcoder.com/acm/contest/46812/B//小构造小数学#include & ...
- 2023牛客寒假算法基础集训营1_20230116「典dp」「典set」「小思维+bfs」「小思维+构造+码力」「位运算博弈(人类智慧)」
6/13 打得不好,这两天家里也很不好,跟做梦一样,脑子好像被僵尸吃掉了,前两个小时胡乱瞎写交题只过样例,wa了再看,什么b错都能写出来. M. M-本题主要考察了找规律_2023牛客寒假算法基础集训 ...
- 2023牛客寒假算法基础集训营4 赛时思路+正解
今天的训练营全是图论题,实属遇到了自己不会的场了,只能凑合凑合打了,可能这把要上黄了,寒假算法基础训练营系列也有可能到此完结了. 今天的场我觉得应该是一个值得补题的一场,有很多题并不难但是比较典型的题 ...
- 2023牛客寒假算法基础集训营6
A-阿宁的签到题 链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 这是一道签到题,想必大家都可以顺利签到吧?!!! 在这次寒假集训营中每一个题都有一个难度评分xxx. 题目分为以下等级: ...
- 2023牛客寒假算法基础集训营3(8/11)
不断减损的时间 贪心,负数只会越除越大,所以只操作正偶数 AC代码: #include <bits/stdc++.h> using namespace std; using LL = lo ...
- 2023牛客寒假算法基础集训营1
A模拟 World Final? World Cup! (I) 题意:A.B两队轮流罚球,共10局,告诉你罚球的结果,进球多的队伍获胜,问在哪一局就可以知道最终结果. 思路:枚举每一轮i,计算后面A. ...
- 2023牛客寒假算法基础集训营3 -- E-公平守望的灯塔(向量 简单几何)
题目如下: 示例1 输入 1 0 0 1 输出 0 0 说明 输出1 1也是可以的. 思路 or 题解: 我们可以迅速找到 CCC 有两个位置满足题意,但 CCC 的坐标不一定是整数,我们需要 che ...
- 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱
今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...
最新文章
- 上传图片截图预览控件不显示cropper.js 跨域问题
- Python2.7编程基础(博主推荐)
- 爬虫之Xpath的使用
- 40. 后台模块开发(5)
- db2查询字段备注_SQL基础7:SQLSERVER、ORACLE、DB2中SQL语句查询表字段名、注释、字段类型...
- 三星android驱动程序错误,android系统的三星手机插入电脑无法识别
- 肌营养不良最新研究进展(2021年)
- python回归分析
- 实现财务自由 之 你不可不知的投资股票、基金、房地产、REITs等指数指标查询必备网址(市盈率、国债收益率、派息率等等)
- 10分钟帮你全面了解ASO
- iOS牛顿摆 小球撞击 物理学仿真模拟
- 小象大数据全套视频教程
- f5 gtm 工作原理_F5 LTM工作原理.ppt
- 在类方法中可 用this来调用本类的类方法
- BZOJ4872 [SHOI2017]分手是祝愿
- excel文件导入hive乱码_hive 从Excel中导入数据
- 5G-NR非连续接收DRX参数配置详解
- IDL CMIP6 NC格式数据处理
- lower_bound和upper_bound的区别
- [Games104笔记] 游戏中的渲染管线,后处理
热门文章
- 「PAT乙级真题解析」Basic Level 1089 狼人杀-简单版 (问题分析+完整步骤+伪代码描述+提交通过代码)
- 有关html,css的实用知识点总结(一)
- 【模板/经典题型】闵可夫斯基和
- 怎么实现手机端网页页面自适应调整
- springboot实现邮箱发送
- cas20205-29-2|2,3,3-三甲基-1-丙基-3H-吲哚碘|2,3,3-trimethyl-1-propylindol-1-ium,iodide齐岳生物
- hanoi塔递归算法c语言,递归算法 Hanoi(汉诺)塔问题
- 不要让畸变毁了你的照片 - ACR/Lightroom基本校正
- 电脑显示器有波纹怎么回事
- Android——Button的颜色