xdu1068暨2013陕西省赛C题题解
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题题解相关推荐
- 【蓝桥备赛冲刺】2022年第十三届省赛模拟题题解C/C++
食用该篇博客前须知: (0)第一次写博客,如有地方处理不好请见谅,后续会不断提高自己的写博客能力. (1)在头文件处偷了懒,使用的都是万能头文件.(最好还是自己要记住常用头文件 (2)使用的是C++, ...
- 【GPLT】【2021天梯赛真题题解】【231分】
文章目录 L1-1 人与神 (5 分) 题目描述 题目分析 L1-2 两小时学完C语言 (5 分) 题目描述 题目分析 L1-3 强迫症 (10 分) 题目描述 题目分析 L1-4 降价提醒机器人 ( ...
- 【数学、dp】bigcoin 2013广东省赛E题
比赛现场非常遗憾地没能成功AK的一题,当时最后一个小时已经想到做法,但是交给队友化简公式的时候我竟然非常sb的给错参数了=.=...尽管没AK也是冠军但是还是很遗憾啊,算了当给final攒rp吧!! ...
- 【GPLT】【2022天梯赛真题题解】
L1-1 今天我要赢(5分) 题目描述 2018 年我们曾经出过一题,是输出"2018 我们要赢".今年是 2022 年,你要输出的句子变成了"我要赢!就在今天!&quo ...
- 2018 icpc 焦作站现场赛 E题题解
水题没人写题解,都直接上Java代码--那我写一个. 计蒜客题面:https://nanti.jisuanke.com/t/A2203 题意:如果i是完全平方数(>=4)的倍数,那么i号电阻的阻 ...
- 第十二届蓝桥杯国赛真题+题解 Python
文章目录 写在前面 试题A:带宽 试题 B: 纯质数 试题C: 完全日期 试题D: 最小权值 试题 E: 大写 试题 F: 123 试题 G: 冰山 试题 H: 和与乘积 试题 I: 二进制问题 试题 ...
- 2018陕西省赛K题[watermelon_planting]
题意:有一个序列a[],描述的是另一个序列ans[]每个位置单位时间的增量.每个单位时间每个位置都会增加一个单位对应增量.时间总长m,每个单位时间包含有两种操作中的一个:1.询问ans[]在[l,r] ...
- 2015武汉大学第八届Eming杯现场赛E题题解
题目大意: 就是现在空间中给定球,平面和点的位置, 从点的位置作为点光源散发出光求球在平面上的投影面积. 大致思路: 本题并没有用到复杂的算法, 但是对于一些数学上的几何知识提出了一定的要求, 投影如 ...
- 2021天梯赛真题题解 L1-3 强迫症 (10 分) C语言版本 整数转换为字符串数组
L1-3 强迫症 (10 分) 题目描述 小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808.有强迫症的小强请你写个程序,把所有人的 ...
最新文章
- C++ cin.ignore()用法
- 【计算理论】计算复杂性 ( 多项式等价 | P 类 | 丘奇-图灵论题延伸 )
- makefile中变量有哪些?
- 基于visual Studio2013解决算法导论之012计数排序
- kaggle案例(part1)--Text Analysis Topic Modelling with spaCy||GENSIM
- birt报表表格边框_选开源报表开发还是商用?2020报表软件产品整理
- django 1.8 官方文档翻译: 2-5-10 数据库函数
- 实习语录@秒针系统[上]
- 初体验这个平台很强大
- python tornado返回上一页 读取refer
- fcntl函数的SET用法
- 中国信通院沈滢:字体开源协议——OFL V1.1介绍及合规要点分析
- 微信支付指纹要上传到服务器,华为即将支持微信指纹支付,同意上传至腾讯服务器!...
- Linux常用命令|徐奥雯编辑整理|XUAOWEN
- 禁用计算机安全模式,安全模式
- CYCADA: cycle-consistent adversaial domain adaption阅读笔记
- 3原色对照表.....
- Mockplus的组件(弹出菜单)的简单使用方法。
- Ubuntu没有无线wifi解决办法
- 水岸秀墅|千年石湖独一墅
热门文章
- ios 模拟器沙盒_iOS模拟器的路径-打开沙盒路径
- oracle 查看动态性能视图,oracle常用动态性能视图
- python达内教程_达内教你如何零基础入门python编程
- openssh升级_Redhat 6.5源码编译升级openssh到7.8版本
- python二维元组元素的提取_如何从元组列表中提取第n个元素?
- python实现ai聊天机器人_AI人工智能Python实现简单人机对话:你好,人类!
- 4 关卡流 进阶_赛博朋克2077:实用玩法攻略,技术流玩法攻略
- 使用Mockito对类成员变量进行Mock
- 安卓学习笔记37:利用OpenGL ES绘制平面图形
- 灰色关联分析_R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标...