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【思维题】的更多相关文章

  1. AtCoder Regular Contest 094 D Worst Case

    Worst Case 思路: 使 a <= b 当 a == b 时 或者 a == b - 1 时,答案显然为 2 * (a - 1) 否则找到最大的 c ,使得 c * c < a * ...

  2. AtCoder Regular Contest 094

    AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...

  3. AtCoder Regular Contest 094 (ARC094) CDE题解

    原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...

  4. *AtCoder Regular Contest 094 F - Normalization

    $n \leq 200000$的abc字符串,现能进行如下变换零次或若干次:选一个$i<n$且$s_i \neq s_{i+1}$,把$s_i$和$s_{i+1}$替换成abc三个字母中除了这两 ...

  5. AtCoder Regular Contest 082 D Derangement

    AtCoder Regular Contest 082 D Derangement 与下标相同与下个交换就好了.... Define a sequence of ’o’ and ’x’ of lengt ...

  6. AtCoder Regular Contest 061

    AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...

  7. AtCoder Regular Contest 092

    AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...

  8. AtCoder Regular Contest 093

    AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...

  9. AtCoder Regular Contest 095

    AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...

随机推荐

  1. 014-unittest扩展

    unittest扩展 1. unittest框架里面---verbosity设置这里的verbosity是一个选项,表示测试结果的信息复杂度,有三个值: 0 (静默模式): 你只能获得总的测试用例数和 ...

  2. ECMAScript 5 新增 Object 接口

    对象 构造器 说明 Object getPrototypeOf 返回对象的原型 Object getOwnPropertyDescriptor 返回对象自有属性的属性描述符 Object getOwn ...

  3. 差分进化算法(DE)的C++面向对象方法实现

    代码来源于网络,写得非常棒 /*DE_test *对相应的Matlab程序进行测试 */ #include <iostream> #include <cmath> #inclu ...

  4. LOJ 6042 跳蚤王国的宰相

    LOJ 6042 跳蚤王国的宰相 题意 跳蚤王国爆发了一场动乱,国王在镇压动乱的同时,需要在跳蚤国地方钦定一个人来做宰相. 由于当时形势的复杂性,很多跳蚤都并不想去做一个傀儡宰相,带着宰相的帽子,最后 ...

  5. js 表格合并

    1.合并 function autoRowSpan(tbid, row, col) { var tb = document.getElementById(tbid); var lastValue = ...

  6. Django项目:CRM(客户关系管理系统)--20--12PerfectCRM实现King_admin分页上下页

    {#table_data_list.html#} {## ————————08PerfectCRM实现King_admin显示注册表的字段表头————————#} {% extends 'king_m ...

  7. LA4254 Processor

      题意:有n个任务,每个任务有三个参数ri,di和wi,表示必须在时刻[ri,di]之内执行,工作量为wi.处理器执行速度可以变化,当执行速度为s时,工作量为wi.处理器的速度可以变化,当执行速度为 ...

  8. TZ_14_Feign的客户端和Feign的负载均衡

    1.作用:Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样.你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做. 2.导入起步坐标 < ...

  9. MySQL数据库的全局锁和表锁

    1.概念 数据库锁设计的初衷是处理并发问题.作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则.而锁就是用来实现这些访问规则的重要数据结构. 2.锁的分类 根据加锁的范围, ...

  10. webpack4进阶配置

    移动端CSS px自动转换成rem 需要两步来实现: px2rem-loader 在构建阶段将px转换成rem lib-flexible 页面渲染时动态计算根元素的font-size值(手机淘宝开源库 ...