noip模拟赛 第K小数
【问题描述】
有两个正整数数列,元素个数分别为N和M。从两个数列中分别任取一个数
相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少。
【输入格式】
输入文件名为number.in。
输入文件包含三行。
第一行为三个正整数N,M和K。
第二行为N个正整数,表示第一个数列。
第三行为M个正整数,表述第二个数列。
【输出格式】
输出文件名为number.out。
输出文件包含一行,一个正整数表示第K小数。
【输入输出样例1】
number.in | number.out |
2 3 4 1 2 2 1 3 |
3 |
【输入输出样例2】
number.in | number.out |
5 5 18 7 2 3 5 8 3 1 3 2 5 |
16 |
【数据规模与约定】
样例点编号 | N | M | K | 元素大小(≤) |
1 | 20 | 20 | 150 | 10^4 |
2 | 50 | 50 | 2000 | 10^4 |
3 | 100 | 80 | 5000 | 10^9 |
4 | 200 | 200 | 26000 | 10^9 |
5 | 10000 | 10000 | 50050000 | 10^4 |
6 | 1000 | 20000 | 9500000 | 10^4 |
7 | 1000 | 20000 | 10000500 | 10^9 |
8 | 2000 | 20000 | 190000 | 10^9 |
9 | 2000 | 20000 | 199000 | 10^9 |
10 | 20000 | 20000 | 210005000 | 10^4 |
11 | 20000 | 20000 | 210000 | 10^5 |
12 | 20000 | 20000 | 200000 | 10^9 |
13 | 20000 | 20000 | 220000500 | 10^5 |
14 | 20000 | 20000 | 199000500 | 10^9 |
15 | 200000 | 200000 | 180000 | 10^4 |
16 | 200000 | 200000 | 200000 | 10^9 |
17 | 2000 | 200000 | 100001500 | 10^9 |
18 | 200000 | 180000 | 19550000000 | 10^5 |
19 | 200000 | 200000 | 19900010000 | 10^9 |
20 | 200000 | 200000 | 20000010000 | 10^9 |
分析:非常经典的一道题,要求第K小/大之类的显然可以二分,看比它小的数有多少个,统计个数主要还是乘法原理,将两个序列排序,然后移动两个指针,一个从小到大,一个从大到小,因为满足单调性,一个乘法就解决了.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; typedef long long ll; ll n, m, k, a[], b[], max1, max2, ans, cnt1, cnt2; ll check(ll x)
{
ll cur1 = , cur2 = m, sum = ;
while (cur2 > && cur1 <= n)
{
while (a[cur1] * b[cur2] > x)
cur2--;
sum += cur2;
cur1++;
}
return sum;
} int main()
{
scanf("%lld%lld%lld", &n, &m, &k);
for (ll i = ; i <= n; i++)
{
scanf("%lld", &a[i]);
max1 = max(max1, a[i]);
}
for (ll i = ; i <= m; i++)
{
scanf("%lld", &b[i]);
max2 = max(max2, b[i]);
}
sort(a + , a + + n);
sort(b + , b + + m);
ll l = , r = max1 * max2;
while (l <= r)
{
ll mid = (l + r) >> ;
if (check(mid) >= k)
{
ans = mid;
r = mid - ;
}
else
l = mid + ;
}
printf("%lld\n", ans); return ;
}
noip模拟赛 第K小数的更多相关文章
- noip模拟赛 第k大区间
[问题描述] 定义一个长度为奇数的区间的值为其所包含的的元素的中位数. 现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. [输入] 输入文件名为kth.in. 第一行两个数n和k ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 2016-06-19 NOIP模拟赛
2016-06-19 NOIP模拟赛 by coolyangzc 共3道题目,时间3小时 题目名 高级打字机 不等数列 经营与开发 源文件 type.cpp/c/pas num.cpp/c ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
- CH Round #49 - Streaming #4 (NOIP模拟赛Day2)
A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模 ...
随机推荐
- bzoj 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏【Floyd】
先跑一遍取max版的Floyd,直接用数组回答询问即可 #include<iostream> #include<cstdio> using namespace std; con ...
- Windows 使用之那些你还不知道操作
作者:你未读 整理:君未读 关于使用 win 系统的基本普及. 建议更换 win10 系统 可能很多朋友看到这个建议,心里很不爽,还很不服气,别急,且看官方给出的信息. 也就是说在 2019 年你完全 ...
- 二分搜索poj106
Cable master Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 49944 Accepted: 10493 De ...
- 365 Water and Jug Problem 水壶问题
有两个容量分别为 x升 和 y升 的水壶以及无限多的水.请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水.你允许: 装满任 ...
- 239 Sliding Window Maximum 滑动窗口最大值
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口 k 内的数字.滑动窗口每次只向右移动一位.例如,给定 nums = [1,3,-1,-3, ...
- iOS基础笔试题 - 集锦一
前言 下文转载自https://mp.weixin.qq.com/s?__biz=MzA4ODk0NjY4NA==&mid=454115946&idx=1&sn=c7f1b50 ...
- Matlab2014的下载和安装激活过程
Matlab2014的下载和安装过程 转载自csdn https://blog.csdn.net/hp910315/article/details/70197149 1 下载Matlab2014,下 ...
- php经典bug
<?php $tem = 0=="a"?1:2; echo $tem; ?> 输出结果为:1 原因:在0=="a",这个比较中因为会将字符串&quo ...
- 后台接收不到postman发送的xml参数的解决办法
首先在body下复制需要传的xml: 然后点击url右边的Params,添加key和value.value和body下的xml是一样的: 最后点击send,后台就能接收到参数了.
- 预测学习、深度生成式模型、DcGAN、应用案例、相关paper
我对GAN"生成对抗网络"(Generative Adversarial Networks)的看法: 前几天在公开课听了新加坡国立大学[机器学习与视觉实验室]负责人冯佳时博士在[硬 ...