AtCoder Regular Contest 094 D Worst Case【思维题】
https://arc094.contest.atcoder.jp/tasks/arc094_b
题意:
在2次超多人的比赛中,你取得的成绩依次为第A名和第B名。一个人的成绩为a和b时,当且仅当ab<AB时,他会在综合排名中排在你前面。
显然同一次比赛的同一个名次只能被一个人拥有。
现在问综合排名排在你前面的最多有多少人?
题解:
这是官方答案:
想了好久,略有所悟>_<. 为便于叙述,令第一次比赛排名为a,第二次比赛排名为b。则必有a*b<A*B且a!=A,b!=B.
首先,考虑A=B的情况:
此时a=1到A-1 都能找到和他们相配的b,而且把a,b互换后答案也成立,所以此时有2*(A-1)种结果。而当a>A时,与其相配的数必然小于A,这样必然与前面的某个结果重复。所以ans=2*(A-1)
而当A、B相差1时,不妨令B=A+1:
同理a=1到A-1时也都能找到匹配的b,而当a=A+1时,b必然小于A,又会有和前面重复的情况。所以ans=2*(A-1)
在一般情况中,还令A<B:
令C为最大的C,满足C*C<A*B. 由于必然有A<=B<C,所以要去掉a=B的非法结果,所以a=1到C除了B都可以找到匹配的b。
对于a=C来说,若C*(C+1)<A*B ,那么a就可以取到C+1。,所以 ans=2*(C)-1。 对于为什么a不能取到C+2,我是这么想的,既然找的C已经是最大的C满足C*C<A*B,那么必然会有(C+1)*(C+1)>=A*B。其实对于a可以取的最大值,对应的b一定是可以取值的最小值。如果a能取到C+2,那么必然能取到C+1,显然a=C+1最大只能和C配,那么C+2最大能和C-1配。好像没毛病??我觉得这里我分析的有问题。。反例 A=2 B=7 不用取到C=4就有5种结果。。。。。。。。
否则a最多只能取到C,则有ans=2*(C-1)-1。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; int main() {
int q;
ll a, b;
scanf("%d", &q);
while (q--) {
scanf("%lld%lld", &a, &b);
if (a > b) swap(a, b);
ll ans=;
ll c=a*b;
ll d=sqrt(c);
if(d*d==c) d--;
if(a==b||a==b+)
ans=*a-;
else if(d*(d+)>=a*b)
ans=*d-;
else ans=*d-;
cout<<ans<<endl;
}
return ;
}
AtCoder Regular Contest 094 D Worst Case【思维题】的更多相关文章
- AtCoder Regular Contest 094 D Worst Case
Worst Case 思路: 使 a <= b 当 a == b 时 或者 a == b - 1 时,答案显然为 2 * (a - 1) 否则找到最大的 c ,使得 c * c < a * ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- *AtCoder Regular Contest 094 F - Normalization
$n \leq 200000$的abc字符串,现能进行如下变换零次或若干次:选一个$i<n$且$s_i \neq s_{i+1}$,把$s_i$和$s_{i+1}$替换成abc三个字母中除了这两 ...
- AtCoder Regular Contest 082 D Derangement
AtCoder Regular Contest 082 D Derangement 与下标相同与下个交换就好了.... Define a sequence of ’o’ and ’x’ of lengt ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
随机推荐
- Leetcode131. Palindrome Partitioning分割回文串
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. 示例: 输入: "aab" 输出: [ ["aa",&quo ...
- 如何在 Flink 1.9 中使用 Hive?
Apache Flink 从 1.9.0 版本开始增加了与 Hive 集成的功能,用户可以通过 Flink 来访问 Hive 的元数据,以及读写 Hive 中的表.本文将主要从项目的设计架构.最新进展 ...
- light7结合jquery实现开关按钮
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- vmware三种网络模式配置(转载)
虚拟机系统安装的是Linux系统 首先,在本机上查看所有网络配置连接,使用命令:ipconfig Microsoft Windows [版本 6.1.7600]版权所有 (c) 2009 Micros ...
- 磁力搜索网站 BT torrent search engine 推荐 2019/12/25日更新
btkitty 知名的BT磁力搜索,资源很多,中文友好 btdb 知名的BT磁力搜索,资源很多,中文友好 838888 不错的 BT 磁力搜索引擎,资源很多,中文友好 idope.se 资源丰富的BT ...
- cmd下带参数执行python文件
在一个文件下下创建程序代码, sys.argv 即后续cmd中需要传入的参数列表, sys.argv[0]即要执行的文件名 sys.argv[n]即参数的字符串 # -*- c ...
- day38 06-MyEclipse配置Schema约束
- Uva1252 Twenty Questions
Twenty Questions https://odzkskevi.qnssl.com/15b7eb4cd1f75f63cee3945b0b845e4f?v=1508411736 [题解] dp[S ...
- Vue.js NPM 安装方法
由于 npm 安装速度慢,本教程使用了淘宝的镜像及其命令 cnpm,安装使用介绍参照:使用淘宝 NPM 镜像. npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 $ npm -v ...
- jquery源码学习(三)—— jquery.prototype主要属性和方法
上次我们学习了jquery中的主要对象jQuery和一些变量,现在我们开始学习jquery的原型 98行声明了jQuery.fn = jQuery.prototype = {} 285行jQuery. ...