首页 > 其他分享 >ARC094D题解

ARC094D题解

时间:2022-08-16 20:14:38浏览次数:83  
标签:std 匹配 比赛 int 题解 sqrt 第一场 ARC094D

设 \(A<B\),\(C=\max(\sqrt{AB-1},A)\),答案为:

\[C-1+\frac{AB-1}{C+1} \]

如果 \(A>B\) 时显然可以互换,接下来称 \(A\) 所在的比赛为第一场比赛,\(B\) 所在的比赛为第二场比赛。

显然一个人对应的两个名次相当于在匹配第一场和第二场比赛的两个名次。

首先,令 \(A-d\) 匹配 \(B+d\) 一定能够得到 \(A\) 组匹配。

对于第一场比赛中名次更大的。我们知道对于整除分块而言,当 \(i>\sqrt{n}\) 后 \(\lfloor\frac{n}{i}\rfloor\) 都会是连续的,因为 \(i\) 只能匹配 \(\lfloor\frac{AB-1}{i}\rfloor\) 及以下的,对于第二场比赛中排名为 \([1,C]\) 的而言一定能找到一个在第一场比赛的匹配。

而对于第一场比赛中间剩下的没匹配上的一定也能找到,因为对于 \(i<\sqrt{n}\) 有 \(\lfloor\frac{n}{i}\rfloor-\lfloor\frac{n}{i+1}\rfloor>=2\),所以一定能找到解。

而第一场剩下的人,编号最大的就是 \(C\)。

upd:傻逼sqrt掉精度还给我弄WA了,只能手写一个/fn

#include<iostream>
inline int sqrt(const long long&n){
	int L(1),R(1000000000),mid,ans(0);while(L<=R)mid=L+R>>1,1ll*mid*mid<=n?L=mid+1,ans=mid:R=mid-1;return ans;
}
signed main(){
	int T,A,B,C;std::cin>>T;
	while(T--)std::cin>>A>>B,A>B&&(std::swap(A,B),0),C=std::max(int(sqrt(1ll*A*B-1)),A),std::cout<<C-1+(1ll*A*B-1)/(C+1)<<'\n';
}

标签:std,匹配,比赛,int,题解,sqrt,第一场,ARC094D
From: https://www.cnblogs.com/lmpp/p/16592808.html

相关文章

  • 题解 [ZJOI2010]排列计数
    好题。%你赛考到了不会摆烂,后来发现原来有向下取整,题面没有。。。(就算有我也做不出来啦qAq首先我们会发现这个长得就是小根堆,答案就变成了小根堆的计数。首先最小的......
  • ubuntu16.04中文乱码问题解决
    1、先输入locale-a,查看一下现在已安装的语言2、若不存在如zh_CN之类的语言包,进行中文语言包装:apt-getinstalllanguage-pack-zh-hans3、安装好后我们可以进行临时修......
  • LeetCode 反转链表算法题解 All In One
    LeetCode反转链表算法题解AllInOnejs/ts实现反转链表反转链表原理图解双指针,swap交换//反转双指针//swap:a=b;c=a;b=c;letprev:List......
  • 洛谷P1714切蛋糕题解
    P1714切蛋糕题目描述今天是小Z的生日,同学们为他带来了一块蛋糕。这块蛋糕是一个长方体,被用不同色彩分成了\(n\)个相同的小块,每小块都有对应的幸运值。小Z作......
  • 【题解】【Shopping】【树上依赖型背包】
    很厉害的题。在任务计划里躺了一年。。。题目传送门思考之路题目要让我们在付出不超过m的代价在树上找到一个权值最大的连通块。容易想到树形dp,设\(f_{i,j}\)表示选的......
  • "蔚来杯"2022牛客暑期多校训练营7 题解
    C.ConstructiveProblemsNeverDie对于出现次数大于1的数字,用出现次数为0的数字填充。剩下的数字一定两两互不相同,对这些数循环移位,最后进行判断即可。#include<bits/......
  • CF1712B Woeful Permutation 题解
    题目传送门题目简介给定一个正整数\(n\),构造一个数列\(p\),使\(1\)到\(n\)中每一个数都出现且只出现\(1\)次。求最大的\(\sum\limits_{i=1}^n\operatorname......
  • Codeforces Round #813 (Div. 2) 题解A~E2
    https://codeforces.com/contest/1712估计也就我赛中才D都写不出来了A题题意:给你一个数组和一个正整数\(k\),每次可以选择数组的任意两个数交换,问你最少交换多少次能使......
  • CF1714C 题解
    题目大意找到最小的数字,使该数字每一位上的数字的和等于给定的数字\(s\),且其中的所有数字都不同,即所有数字都是唯一的。解法这题的数据很水,暴力就能过,从小到大枚举每......
  • ubuntu dpkg问题解决
    问题今天玩ubuntu发现以下报错:dpkgwasinterrupted,youmustmanuallyrunsudodpkg–configure-atocorrecttheproblem 解决sudorm/var/lib/apt/lists/l......