csu oj 1343 Long Long
Description
现在有两个单调递增序列,第一个序列有N个整数,第二个序列有M个整数,现在你可以从第一个序列中选一个数x,然后从第二个序列中选一个数y,那么有多少种情况满足x+y<=K呢?
Input
输入包含多组数据。
对于每组测试数据,第一行包含两个整数N, M , K (1 <= N, M <= 105, 1 <= K <= 109),含义同上。接下来一行包含N个在[1, 109]范围内的整数,依次描述了第一个序列中的各个整数。再接下来一行包含M个在[1, 109]范围内的整数,依次描述了第二个序列中的各个整数。
Output
对于每组数据,输出有多少种情况满足x + y <= K。
Sample Input
Sample Output
Hint
其实如果两个序列并不是有序的,我们也可以先通过排序使其变得有序,然后就和现在的这个题目一样了,不过由于这个题目并不是为了介绍排序,所以干脆就直接给出有序的序列了。
由于int的范围有限,当要读入的数或者要输出的数超出了int的表示范围但没有超出long long的表示范围时,我们就要使用long long了。如果OJ的服务器是Linux的,那么用“%lld”(前面是两个小写的L)来控制long long的读入和输出,而如果OJ的服务器是Windows的,则需要用“%I64d”(前面是一个大写的i)来控制long long的读入和输出,这一点一般会在OJ的“F.A.Q”有所说明的。由于我们的服务器是采用的Linux操作系统,所以使用“%lld”就OK了。
比如这个题目,极端情况就所有情况都满足,也就是N*M中情况,当N和M都取极限值时,显然结果就需要用long long来保存并输出了。
那么这个题目具体要怎么做呢?
也许你一眼就看出来了,两层for循环就可以搞定嘛,不过很可惜这样估计要妥妥超时,要不试一下?
我们不妨仔细梳理一下思路,两层for循环做法的基本思想应当是首先枚举第一个序列中拿出的数x,然后再寻找第二个序列中有多少个整数y满足x+y<=K。其实我们不难发现,每次只要找到满足x+y<=K最大的y就可以了,不妨记为max_y,那么max_y以及max_y之前的数是一定都满足x+y<=K的,这样根据max_y所在的位置,我们就能直接计算出对于当前枚举到的x有多少个y满足x+y<=K了。而找这个max_y的过程真的需要一层for循环吗?你可能已经想到了,我们完全可以用“二分”的方法去找这个max_y,这样就能快很多了。如果你对“二分”还没有任何概念也没关系,因为我们还有另外一种办法也可以达到这个目的。
我们不妨设先后枚举到的两个相邻的x分别为x1和x2,并设x1对应的max_y为max_y1,x2对应的max_y为max_y2,由于x1<x2,我们可以得到max_y2<=max_y1。但这个有什么用呢?当然有用了,我们在找max_y2的时候就可以直接从max_y1开始递减去找了。如果再枚举到x3呢?那么一样有max_y3<=max_y2,我们直接从max_y2开始递减去找max_y3。不过也许你可能会怀疑了:这样真的能比两层for循环快吗?好像这样也是两个变量不停地在循环呀?
至于为什么会快还是交由你自己来思考吧,如果你对刚刚说的思路还没有什么概念的话不妨结合下面我给出的示例代码来看一下。
#include<stdio.h>
#define MAX 100001
int n[MAX], m[MAX],N,M,K;
int main()
{
while(scanf("%d%d%d",&N,&M,&K)!=EOF)
{
for(int i=;i<=N;i++)
{
scanf("%d",&n[i]);
}
for(int i=;i<=M;i++)
{
scanf("%d",&m[i]);
} long long sum=; for(int i=;i<=N;i++)
{
while(n[i]+m[M]>K&&M)
{
--M;
}
sum+=M;
}
printf("%lld\n",sum);
}
return ;
}
csu oj 1343 Long Long的更多相关文章
- csu oj 1339: 最后一滴血
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1339 1339: 最后一滴血 Time Limit: 1 Sec Memory Limit: 1 ...
- csu oj 1330 字符识别?
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1330 1330: 字符识别? Time Limit: 1 Sec Memory Limit: 1 ...
- csu oj 1811: Tree Intersection (启发式合并)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1811 给你一棵树,每个节点有一个颜色.问删除一条边形成两棵子树,两棵子树有多少种颜色是有 ...
- csu oj 1804: 有向无环图 (dfs回溯)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1804 中文题意就不说了. dfs从底到根回溯即可,看代码应该能清楚. //#pragma ...
- csu oj 1344: Special Judge
Description Given a positive integer n, find two non-negative integers a, b such that a2 + b2 = n. I ...
- csu oj 1341 string and arrays
Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,……,第N行,从左至右依次记为第1列,第2列,……,第N列. 对于这个矩阵会进行一系列操作,但这些操作只有两类: (1) ...
- CSU OJ 1340 A Sample Problem
Description My girlfriend loves 7 very much, she thinks it is lucky! If an integer contains one or m ...
- 九度OJ 1343:城际公路网 (最小生成树)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:445 解决:178 题目描述: 为了加快城市之间的通行和物资流动速度,A国政府决定在其境内的N个大中型城市之间,增加修建K条公路.已知这N个 ...
- CSU OJ PID=1514: Packs 超大背包问题,折半枚举+二分查找。
1514: Packs Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 61 Solved: 4[Submit][Status][Web Board] ...
随机推荐
- P3338 [ZJOI2014]力
思路 颓柿子的题目 要求求这样的一个式子 \[ F_j=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_j}{(i-j)^2} ...
- 编译caffe的Python借口,提示:ImportError: dynamic module does not define module export function (PyInit__caffe)
>>> import caffeTraceback (most recent call last): File "<stdin>", line 1, ...
- [蓝桥] 历届试题 错误票据 (List用法,空格处理)
时间限制:1.0s 内存限制:256.0MB 问题描述 某涉密单位下发了某种票据,并要在年终全部收回. 每张票据有唯一的ID号.全年所有票据的ID号是连续的,但ID的开始数码是随机选定的. 因为工作人 ...
- HDU 5069 Harry And Biological Teacher(AC自动机+线段树)
题意 给定 \(n\) 个字符串,\(m\) 个询问,每次询问 \(a\) 字符串的后缀和 \(b\) 字符串的前缀最多能匹配多长. \(1\leq n,m \leq 10^5\) 思路 多串匹配,考 ...
- s*s*r备用
遇见的问题 突然打不开 ip被墙 能ping 但是不能ssh 参考https://www.vultrcn.com/6.html
- 中文目录对 sublime text 有什么影响?
用了这软件好几个月了,一直没出现问题.最近做精简时,发现一个奇怪的问题. 相同的配置,为什么两个程序表现得不一样? 难道是哪里的配置不一样? 难道是插件被我精简得太厉害了? 难道是插件有依赖文件被我删 ...
- 【NOIP 2018】Day2 T3 保卫王国
Problem Description Z 国有\(n\)座城市,\(n - 1\)条双向道路,每条双向道路连接两座城市,且任意两座城市 都能通过若干条道路相互到达. Z 国的国防部长小 Z 要在城市 ...
- 2019年前端面试题 | CSS篇 (更新于4月15日)
虽说刷面试题有走捷径之嫌,但我发现,对于我这样没有工作经历的人来说,其实是拓展自己实战技能和加深知识理解的一个好机会. 分享出来,也希望大家不要背完了事,正经的去细细琢磨各种原由. 本篇是一个题目合集 ...
- Android CPU耗电量测试
Android CPU耗电量测试 在测试Android app时,不仅仅要关注app的功能,也好关注app的性能指标,cpu.内存.流量.电量等.简单介绍下电量测试中的cpu耗电. 影响耗电的因素 C ...
- Common-io,FileUtils工具类的使用
package Cristin.Common.File; import org.apache.commons.io.FileUtils; import org.apache.commons.io.fi ...