洛谷——P1102 A-B数对
2024-09-08 08:06:37
P1102 A-B数对
题目描述
出题是一件痛苦的事情!
题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈!
好吧,题目是这样的:给出一串数以及一个数字C,要求计算出所有A-B=C的数对的个数。(不同位置的数字一样的数对算不同的数对)
输入输出格式
输入格式:
第一行包括2个非负整数N和C,中间用空格隔开。
第二行有N个整数,中间用空格隔开,作为要求处理的那串数。
输出格式:
输出一行,表示该串数中包含的所有满足A-B=C的数对的个数。
输入输出样例
说明
对于73%的数据,N <= 2000;
对于100%的数据,N <= 200000。
所有输入数据都在longint范围内。
2017/4/29新添数据两组
sort排序+模拟84分
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 200100 #define ll long long using namespace std; ll n,c,b,ans,a[N]; ll read() { ll x=,f=; char ch=getchar(); ;ch=getchar();} +ch-',ch=getchar(); return x*f; } int main() { n=read(),c=read(),b=; ;i<=n;i++) a[i]=read(); sort(a+,a++n); ;i<=n;i++) for(int j=b;j<i;j++) if(a[i]-a[j]<=c) if(a[i]-a[j]==c) ans++; else break; else b=j; printf("%lld",ans); ; }
84分代码
map AC
#include<map> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 200100 #define ll long long using namespace std; map<int,int>m; ll n,c,ans,a[N],maxn; ll read() { ll x=,f=; char ch=getchar(); ;ch=getchar();} +ch-',ch=getchar(); return x*f; } int main() { n=read(),c=read(); ;i<=n;i++) { a[i]=read(); m[a[i]]++; maxn=max(maxn,a[i]); } sort(a+,a++n); ;i<=n;i++) if(a[i]+c>maxn) break; else ans+=m[a[i]+c]; printf("%lld",ans); ; }
最新文章
- SQL Server 查询树结构的表,查询一个节点的所有子节点
- 移动安全初探:窃取微信聊天记录、Hacking Android with Metasploit
- nginx和fpm的进程数配置和502,504错误
- Unity3d用户手册用户指南 电影纹理(Movie Texture)
- oracle sql developer数据表注释为乱码问题---解决
- Spring 中 Xml配置文件属性的说明
- Delphi7中编译提示“Unsafe type &#39;PChar&#39;”的原因及处理办法
- Task 使用 Task以及Task.Factory都是在.Net 4引用的。Task跟Thread很类似,通过下面例子可以看到。
- ios开发入门篇(四):UIWebView结合UISearchBar的简单用法
- Java方法-字符串
- C#中的StringBuilder
- Struts2的那些小细节
- 测试驱动开发实践5————testSave之修改文档分类
- 寒假训练——搜索 E - Bloxorz I
- Innodb ,MyISAM
- 肤色检测一例-使用rgb颜色模型
- uniform_tree以及其变体
- 使用FractionSlider生成的视差幻灯效果原型
- this and super
- jquery50个代码段