首先,容易证明满足条件的$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. java链接并操作数据库

    链接准备 MySQL数据库驱动(连接器).mysql-connector-java-x.x.xx.jar会在MySQL安装时提供,若Mysql是默认安装路径,则连接器在:C:\Program File ...

  2. L1-027 出租 (20 分) java题解

    下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破.其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对 ...

  3. 苹果应用内购 ios 开发者根据用户提供的邮件中的订单号查看该订单是否支付成功

    苹果应用内购 ios 开发者根据用户提供的邮件中的订单号查看该订单是否支付成功 这是苹果wwdc2021 推出的新功能 参考官网链接 App Store Server API | Apple Deve ...

  4. 力扣 - 剑指 Offer 45. 把数组排成最小的数

    题目 剑指 Offer 45. 把数组排成最小的数 思路1 将整数数组转化成字符串数组 然后使用Arrays工具类的sort方法帮助我们排序 代码 class Solution { public St ...

  5. 【c++ Prime 学习笔记】第6章 函数

    6.1 函数基础 函数定义包括:返回类型.函数名字.由0个或多个形参组成的列表以及函数体 通过调用运算符()来执行函数,它作用于一个表达式,该表达式是函数或函数指针.圆括号内是一个逗号隔开的实参列表, ...

  6. 灵光一闪!帮你使用Vue,搞定无法解决的“动态挂载”

    在一些特殊场景下,使用组件的时机无法确定,或者无法在Vue的template中确定要我们要使用的组件,这时就需要动态的挂载组件,或者使用运行时编译动态创建组件并挂载. 今天我们将带大家从实际项目出发, ...

  7. [敏捷软工团队博客]Beta阶段事后分析

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件要解决的问题是:现在的软工课程的作业分布在博客园.GitHub上,没有一个集成多种功能的一体化 ...

  8. Scrum Meeting 5.26

    Scrum Meeting Beta 1 日期:2021年5月23日&2021年5月24日 会议主要内容概述:汇报工作 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作 ...

  9. TensorFlow从入门到入坑(2)

    TensorFlow学习(2) 一.jupyter notebook的安装和使用 1. 什么是jupyter notebook jupyter notebook(http://jupyter.org/ ...

  10. hdu 1502 Regular Words(DP)

    题意: 一个单词X由{A,B,C}三种字母构成. A(X):单词X中A的个数.B(X),C(X)同理. 一个单词X如果是regular word必须满足A(X)=B(X)=C(X)且对于X的任意前缀有 ...