xdu1068暨2013陕西省赛C题题解

题意

知道两个数列M和F,每次从M中选择一个人,和从F中选择的一个人配对,结果是Mi*Fj,请问所有配对情况中第k大的情况是多少。

笺释

先对M和F从小到大排序,显然最小的情况是F[1]*M[1],最大的情况是F[n]*M[m],在这个区间内二分。
确定答案x时,若x使得所有配对情况中大于x的数目大于等于K的话,就意味着x太小啦,我们就将mid向右移来增大x,否则减小x。
确定x使得所有配对情况中大于x的数目大于等于k的还是小于k,用到了很厉害的一个性质,可以先回忆以下xdu第一周训练题目B题,那个题我们从小到大枚举数字,最小的数字可以与其余数字组成n-1个情况使得答案为最小的数字,但是这个题因为答案是两数乘积,所以不能单纯地由某一个数字确定,我们同样是从小到大枚举M中的数字Mi,然后F中的数字从大到小枚举Fj,这样就造成了:若j之前的满足Mi*Fj大于x,那么当i增大的时候,Mi增大,j之前的一定也满足,就不需要再枚举一遍,这样就将复杂度降低为了n+m而不是n*m。

具体说感觉也说不太清楚,结合代码理解吧。

完整代码

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int t,A,B;
long long M[10005],F[10005];
int  K;
int check(long long x)
{int ret=0;int j=B;for(int i=1;i<=A;i++){for(;(j>=1&&(M[i]*F[j])>x);j--);ret+=B-j;}return ret;
}
ll solve()
{ll l=M[1]*F[1];ll r=M[A]*F[B];while(l<=r){ll mid=(l+r)/2;//printf("A %lld %lld\n",l,r);int tem=check(mid);// printf("B %lld\n",tem);if(tem>=K){l=mid+1;}else{r=mid-1;}}return r+1;
}
int main()
{scanf("%d",&t);while(t--){scanf("%d %d %d",&A,&B,&K);for(int i=1;i<=A;i++){scanf("%lld",&M[i]);}for(int i=1;i<=B;i++){scanf("%lld",&F[i]);}sort(M+1,M+1+A);sort(F+1,F+1+B);printf("%lld\n",solve());}
}

转载于:https://www.cnblogs.com/SoniciSika/p/9034205.html

xdu1068暨2013陕西省赛C题题解相关推荐

  1. 【蓝桥备赛冲刺】2022年第十三届省赛模拟题题解C/C++

    食用该篇博客前须知: (0)第一次写博客,如有地方处理不好请见谅,后续会不断提高自己的写博客能力. (1)在头文件处偷了懒,使用的都是万能头文件.(最好还是自己要记住常用头文件 (2)使用的是C++, ...

  2. 【GPLT】【2021天梯赛真题题解】【231分】

    文章目录 L1-1 人与神 (5 分) 题目描述 题目分析 L1-2 两小时学完C语言 (5 分) 题目描述 题目分析 L1-3 强迫症 (10 分) 题目描述 题目分析 L1-4 降价提醒机器人 ( ...

  3. 【数学、dp】bigcoin 2013广东省赛E题

    比赛现场非常遗憾地没能成功AK的一题,当时最后一个小时已经想到做法,但是交给队友化简公式的时候我竟然非常sb的给错参数了=.=...尽管没AK也是冠军但是还是很遗憾啊,算了当给final攒rp吧!! ...

  4. 【GPLT】【2022天梯赛真题题解】

    L1-1 今天我要赢(5分) 题目描述 2018 年我们曾经出过一题,是输出"2018 我们要赢".今年是 2022 年,你要输出的句子变成了"我要赢!就在今天!&quo ...

  5. 2018 icpc 焦作站现场赛 E题题解

    水题没人写题解,都直接上Java代码--那我写一个. 计蒜客题面:https://nanti.jisuanke.com/t/A2203 题意:如果i是完全平方数(>=4)的倍数,那么i号电阻的阻 ...

  6. 第十二届蓝桥杯国赛真题+题解 Python

    文章目录 写在前面 试题A:带宽 试题 B: 纯质数 试题C: 完全日期 试题D: 最小权值 试题 E: 大写 试题 F: 123 试题 G: 冰山 试题 H: 和与乘积 试题 I: 二进制问题 试题 ...

  7. 2018陕西省赛K题[watermelon_planting]

    题意:有一个序列a[],描述的是另一个序列ans[]每个位置单位时间的增量.每个单位时间每个位置都会增加一个单位对应增量.时间总长m,每个单位时间包含有两种操作中的一个:1.询问ans[]在[l,r] ...

  8. 2015武汉大学第八届Eming杯现场赛E题题解

    题目大意: 就是现在空间中给定球,平面和点的位置, 从点的位置作为点光源散发出光求球在平面上的投影面积. 大致思路: 本题并没有用到复杂的算法, 但是对于一些数学上的几何知识提出了一定的要求, 投影如 ...

  9. 2021天梯赛真题题解 L1-3 强迫症 (10 分) C语言版本 整数转换为字符串数组

    L1-3 强迫症 (10 分) 题目描述 小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808.有强迫症的小强请你写个程序,把所有人的 ...

最新文章

  1. C++ cin.ignore()用法
  2. 【计算理论】计算复杂性 ( 多项式等价 | P 类 | 丘奇-图灵论题延伸 )
  3. makefile中变量有哪些?
  4. 基于visual Studio2013解决算法导论之012计数排序
  5. kaggle案例(part1)--Text Analysis Topic Modelling with spaCy||GENSIM
  6. birt报表表格边框_选开源报表开发还是商用?2020报表软件产品整理
  7. django 1.8 官方文档翻译: 2-5-10 数据库函数
  8. 实习语录@秒针系统[上]
  9. 初体验这个平台很强大
  10. python tornado返回上一页 读取refer
  11. fcntl函数的SET用法
  12. 中国信通院沈滢:字体开源协议——OFL V1.1介绍及合规要点分析
  13. 微信支付指纹要上传到服务器,华为即将支持微信指纹支付,同意上传至腾讯服务器!...
  14. Linux常用命令|徐奥雯编辑整理|XUAOWEN
  15. 禁用计算机安全模式,安全模式
  16. CYCADA: cycle-consistent adversaial domain adaption阅读笔记
  17. 3原色对照表.....
  18. Mockplus的组件(弹出菜单)的简单使用方法。
  19. Ubuntu没有无线wifi解决办法
  20. 水岸秀墅|千年石湖独一墅

热门文章

  1. ios 模拟器沙盒_iOS模拟器的路径-打开沙盒路径
  2. oracle 查看动态性能视图,oracle常用动态性能视图
  3. python达内教程_达内教你如何零基础入门python编程
  4. openssh升级_Redhat 6.5源码编译升级openssh到7.8版本
  5. python二维元组元素的提取_如何从元组列表中提取第n个元素?
  6. python实现ai聊天机器人_AI人工智能Python实现简单人机对话:你好,人类!
  7. 4 关卡流 进阶_赛博朋克2077:实用玩法攻略,技术流玩法攻略
  8. 使用Mockito对类成员变量进行Mock
  9. 安卓学习笔记37:利用OpenGL ES绘制平面图形
  10. 灰色关联分析_R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标...