首先,容易证明满足条件的$ip_{i}$必然是一个前缀

将其看成一张二分图,$i$向满足$ip_{i}<xy$的$p_{i}$连边,即找到一个前缀满足其有完美匹配

二分枚举前缀长度$k$,根据hall定理,即要求$\forall S\in [1,k],\lfloor\frac{xy-1}{\min_{i\in S}i}\rfloor\ge |S|$,很明显$S$是一个后缀时最难满足,换言之即要求$\forall 1\le i\le k,\lfloor\frac{xy-1}{i}\rfloor\ge k-i+1$($S=[i,k]$)

这又等价于$xy>ik-i^{2}+i$,后者是一个关于$i$的二次函数,求最大值即可判定

还有一个特殊的问题,左边的$x$和右边的$y$都不能被选入答案,换言之,即当$i\le x$,右式应为$k-i$;当$\lfloor\frac{xy-1}{\min_{i\in S}i}\rfloor\ge y$,左式(即该式)应为$\lfloor\frac{xy-1}{\min_{i\in S}i}\rfloor-1$

同时对于第二种情况,可以对$|S|$分类讨论,若$|S|<y$则减1无影响,若$|S|\ge y$则必然要减1(若该值小于$y$减1同样无影响),减1也可以看作对$|S|$加1,即$|S|\ge y$时可以加1

更具体的,对$i$作以下分类讨论:

1.对于$1\le i\le \min(x-1,k-y+1)$,求出$-i^{2}+(k+1)i$的最大值;

2.若$x\le k-y+1$,则对于$x<i\le k-y+1$,求出$-i^{2}+(k+2)i$的最大值;若$k-y+1<x$,则对于$k-y+1<i\le \min(x-1,k)$,求出$-i^{2}+ki$的最大值;

3.若$\max(x,k-y+1)<i\le k$,求出$-i^{2}+(k+1)i$的最大值

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define ll long long
4 int t;
5 ll x,y;
6 ll get_mx(ll b,ll l,ll r){
7 if (l>r)return 0;
8 if (b%2==0){
9 if ((l<=b/2)&&(b/2<=r))return b*b/4;
10 return max((b-l)*l,(b-r)*r);
11 }
12 if ((l<=b/2)&&(b/2<=r)||(l<=b/2+1)&&(b/2+1<=r))return (b/2)*(b/2+1);
13 return max((b-l)*l,(b-r)*r);
14 }
15 bool pd(ll k){
16 if (get_mx(k+1,1,min(x-1,k-y+1))>=x*y)return 0;
17 if (get_mx(k+2,x+1,k-y+1)>=x*y)return 0;
18 if (get_mx(k,k-y+2,min(x-1,k))>=x*y)return 0;
19 if (get_mx(k+1,max(x,k-y+1)+1,k)>=x*y)return 0;
20 return 1;
21 }
22 int main(){
23 scanf("%d",&t);
24 while (t--){
25 scanf("%lld%lld",&x,&y);
26 if (x>y)swap(x,y);
27 ll l=0,r=2e9;
28 while (l<r){
29 ll mid=(l+r+1>>1);
30 if (pd(mid))l=mid;
31 else r=mid-1;
32 }
33 printf("%lld\n",l-(l>=x));
34 }
35 }

[atARC094D]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. LightOJ - 1322 - Worst Case Trie(DP)

    链接: https://vjudge.net/problem/LightOJ-1322 题意: In Computer Science Trie or prefix tree is a data st ...

  3. 进阶篇:5.1)极值法(Worst Case ,WC)

    本章目的:了解极值法,运用极值法: 1.极值法定义 极值法(WC,Worse Case):极值法是考虑零件尺寸最不利的情况,通过尺寸链中尺寸的最大值或最小值来计算关键尺寸的值: 计算公式: 2.极值法 ...

  4. AtCoder Regular Contest 094 D Worst Case【思维题】

    https://arc094.contest.atcoder.jp/tasks/arc094_b 题意: 在2次超多人的比赛中,你取得的成绩依次为第A名和第B名.一个人的成绩为a和b时,当且仅当ab& ...

  5. 算法最坏,平均和最佳情况(Worst, Average and Best Cases)-------geeksforgeeks 翻译

    最坏,平均和最佳运行时间(Worst, Average and Best Cases) 在上一篇文章中,我们讨论到了渐进分析可以解决分析算法的问题,那么在这一篇中,我们用线性搜索来举例说明一下如何用渐 ...

  6. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  7. [LeetCode] Guess Number Higher or Lower II 猜数字大小之二

    We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...

  8. Linux CGroup之freezer分析与应用

    Linux Kernel:4.4.17 CGroup的freezer子系统对于成批作业管理系统很有用,可以成批启动/停止任务,以达到及其资源的调度. freezer子系统也有助于针对运行一组任务设置检 ...

  9. Uva 11732 strcmp() Anyone?

    strcmp() Anyone? Time Limit: 2000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu [Subm ...

随机推荐

  1. JVM详解(三)——运行时数据区

    一.概述 1.介绍 类比一下:红框就好比内存的运行时数据区,在各自不同的位置放了不同的东西.而厨师就好比执行引擎. 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的 ...

  2. VMware Tanzu社区版初体验

    VMware Tanzu社区版 VMware Tanzu Community Edition 是一个功能齐全.易于管理的 Kubernetes 平台,供学习者和用户使用. 它是一个免费的.社区支持的. ...

  3. python使用Django框架开发简单项目

    一. (1)使用idea生成一个python项目,安装Django框架: pip install django==1.8.2 (2)初始化项目: django-admin startproject x ...

  4. Less-(5~7) error based

    Less-5: 核心语句: 我们注意到,当输入正确时,并不能获得有价值的回显.好在出现错误时,会爆出错误内容: 于是,使用报错注入: 1'  and updatexml(1,concat(0x7e,( ...

  5. JVM:Java中的引用

    JVM:Java中的引用 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 在原来的时候,我们谈到一个类的实例化 Person p = new Person() 在 ...

  6. 牛客网 剑指Offer 索引

    二维数组中的查找 替换空格 从尾到头打印链表 重建二叉树 用两个栈实现队列 旋转数组的最小数字 斐波那契数列 跳台阶 变态跳台阶 矩形覆盖 二进制中1的个数 数值的整数次方 调整数组顺序使奇数位于偶数 ...

  7. Java基础语法5-运算符

    运算符 基本运算符(算术.赋值.关系.逻辑等)不再赘述 位运算符 位运算符&.|.^.~.<<.>> &与 |或 ~非 ^异或 <<左移 >& ...

  8. Matlab 中 arburg 函数的理解与实际使用方法

    1. 理解 1.1 Matlab 帮助: a = arburg(x,p)返回与输入数组x的p阶模型相对应的归一化自回归(AR)参数. 如果x是一个向量,则输出数组a是一个行向量. 如果x是矩阵,则参数 ...

  9. APP 自动化之appium元素定位(三)

    APP自动化测试关键环节--元素定位,以下我们来了解appium提供的元素定位方法! 1. id定位,id一个控件的唯一标识,由开发人员在项目中指定,如果一个元素有对应的resource-id,我们就 ...

  10. Windows 防火墙

    本文防火墙配置是基于 Windows Server 2008 R2 服务器进行叙述,其他Windows服务器版本仅供参考 防火墙安全策略 定义 :安全策略按照一定规则检查数据流是否可以通过防火墙的基本 ...