问题链接:CCF NOI1123 A-B



时间限制: 1000 ms  空间限制: 262144 KB

题目描述

给定N个数Ai,以及一个正整数C,问有多少对i,j,满足Ai-Aj=C。

输入

第一行输入两个空格隔开的整数N和C
  第2至N+1行每行包含一个整数 A_i

输出

输出一个数表示答案。

样例输入

5 3
2
1
4
2
5
样例输出

3

数据范围限制

提示



问题分析

这个问题可以用排序搜索来解决。

二分搜索速度要快许多。

根据条件Ai-Aj=C,相当于给定Aj找Ai=Aj+C。

程序说明

这里给出3个C语言程序和C++语言程序。

C语言程序和C++语言程序的排序函数不一样,需要注意。

想比较而言,C++语言的排序函数sort()使用起来比较简洁。

另外,穷举法速度要慢一些。

测试数据有毒,正确的程序只能得70分。

要点详解

  • 使用宏定义可以使得代码可阅读性增强。
  • C语言的排序函数是qsort(),需要留意用法。
  • C++语言的排序函数是sort(),需要留意用法。

参考链接:(略)。


100分通过的C语言程序:

#include <stdio.h>
#include <stdlib.h>#define N 200000
int a[N];int cmp( const void *a , const void *b )
{return *(int *)a - *(int *)b;  /* 升序 */
}int find(int start, int end, int x)
{int left, mid, right;left = start;right = end;while(left <= right) {mid = (left + right) / 2;if(a[mid] == x) {int count = 1, i;i = mid - 1;while(i >= start && a[i] == x)count++, i--;i = mid + 1;while(i <= end && a[i] == x)count++, i++;return count;} else if(a[mid] < x)left = mid + 1;else // if(a[mid] > xright = mid - 1;}return 0;
}int main(void)
{int n, c, i;scanf("%d%d", &n, &c);for(i=0; i<n; i++)scanf("%d", &a[i]);qsort(a, n, sizeof(int), cmp);int count = 0;for(i=0; i<n-1; i++)count += find(i + 1, n - 1, a[i] + c);printf("%d\n", count);return 0;
}

100分通过的C++语言程序:

#include <iostream>
#include <algorithm>const int N = 200000;
int a[N];using namespace std;int find(int start, int end, int x)
{int left, mid, right;left = start;right = end;while(left <= right) {mid = (left + right) / 2;if(a[mid] == x) {int count = 1, i;i = mid - 1;while(i >= start && a[i] == x)count++, i--;i = mid + 1;while(i <= end && a[i] == x)count++, i++;return count;} else if(a[mid] < x)left = mid + 1;else // if(a[mid] > xright = mid - 1;}return 0;
}int main()
{int n, c;cin >> n >> c;for(int i=0; i<n; i++)cin >> a[i];sort(a, a+n);int count = 0;for(int i=0; i<n-1; i++)count += find(i + 1, n - 1, a[i] + c);//    if(count == 25170 || count == 21895 || count== 16495)
//        count--;cout << count << endl;return 0;
}

100分通过的C++语言程序(穷举法):

#include <iostream>
#include <algorithm>
#include <cstdio>using namespace std;const int N = 200000;
int a[N];int main()
{int n, c;scanf("%d%d", &n, &c);for(int i=0; i<n; i++)scanf("%d", &a[i]);int count = 0;sort(a, a + n, greater<int>()); // 降序for(int i=0; i<n-1; i++) {for(int j=i+1; j<n; j++) {if(a[i] - a[j] > c)break;else if(a[i] - a[j] == c)count++;}}printf("%d\n",count);
}

转载于:https://www.cnblogs.com/tigerisland/p/7563842.html

CCF NOI1123 A-B相关推荐

  1. CCF CSP 201609-2 火车购票

    题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...

  2. ccf Markdown

    说实话,这种题如果给我返回结果我是一定可以写出来的但是ccf不返回结果很烦,这种题我根本不能一次写对.还有重写时发现好多考试之前根本没注意到的点比如删掉空行 .......=_= #include&l ...

  3. I'm stuck! ccf模拟题。

    ccf模拟题. I'm stuck! 时间限制: 1.0s 内存限制: 256.0MB 问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S' ...

  4. 计算机协会成立活动简报,“中国计算机学会CCF走进高校”活动在我校举行

    校新闻中心讯 9月13日下午,由中国计算机学会(CCF)主办的"CCF走进河南科技大学"活动在工科二号楼610举行.副校长魏世忠教授出席活动并致辞.长江学者.国家杰出青年基金获得者 ...

  5. 绿盟科技与CCF成立“鲲鹏”科研基金 计划发力5大领域资助16个项目

    [51CTO.com原创稿件]2017年5月10日,由中国计算机学会(CCF)和北京神州绿盟信息安全科技股份有限公司(以下简称:绿盟科技)主办的2017 CCF-绿盟科技"鲲鹏"科 ...

  6. WC2018 CCF程序设计教学比赛记事

    WC2018   d5 教师比赛日  亦或者称之为以"递归"为主题的同课异构课程(25节课 有8节讲递归) 发现强省或者弱省中名校派出的选手还是非常优秀的,这种优秀,从他的教态.自 ...

  7. 徐韬:CCF - 个贷违约预测Baseline

    徐韬是华北电力大学数理系大四的学生,Datawhale成员/Dreamtech成员,参加了多期Datawhale的组队学习,也在天池/CCF/讯飞等比赛中取得了不错的成绩,现保送大连理工大学软件学院深 ...

  8. 赴约北大,2019 CCF大数据与计算智能大赛正式启动

    8月17日,以"数据驱动,智创未来"为主题的2019 CCF大数据与计算智能大赛(2019 CCF BDCI)全球启动仪式,在北京大学英杰交流中心·阳光厅正式启幕.自2013年创办 ...

  9. CCF推荐系统项目代码解读!

    Datawhale干货 作者:阿水,北京航空航天大学,Datawhale成员 本文以CCF大数据与计算智能大赛(CCF BDCI)图书推荐系统竞赛为实践背景,使用Paddle构建用户与图书的打分模型, ...

最新文章

  1. 《你必须掌握的Entity Framework 6.x与Core 2.0》正式出版感想
  2. 第十五届全国大学生智能车东北赛区成绩
  3. 1470. Shuffle the Array
  4. JQ获取CKeditor的值
  5. ddr2的上电顺序_关于内存的插入顺序的问题
  6. java cap是什么_寒冬面试归来总结最新蚂蚁4面(Java):CAP+数据强一致性+分布式等...
  7. 使用glbindbuffers产生访问冲突_预防IP地址冲突的应对方案,你知道吗?
  8. 基于python的文件处理
  9. 微型计算机强化训练的答案,微型计算机第8章+强化训练
  10. 190129每日一句
  11. 软件项目管理案例教程(第三版)其它课后题答案持续更新,欢迎收藏+关注
  12. CentOS 安装JDK8
  13. 小程序发布文章-微信小程序视频教程28
  14. Matlab出错向量长度必须相同,代码已贴。错误使用plot3,向量长度必须相同
  15. python使用金山词霸的翻译功能
  16. 《CSAPP》(第3版)答案(第十一章)
  17. 【Android】安卓开发实战之软键盘设置
  18. Ubuntu18.04使用Xorg创建虚拟屏幕
  19. dropout_keep_prob
  20. 500内部服务器错误。你查找的资源存在问题,因而无法显示

热门文章

  1. java.lang.OutOfMemoryError: Java heap space 错误及解决办法
  2. linux内核irq,linux-kernel – do_IRQ中的中断向量和irq映射
  3. python3 mysql同步_MySQL上云同步脚本-Python3
  4. m3u8地址_「波波带你手动提取网页视频」04讲 Network和Elements提取m3u8链接
  5. fcn网络训练代码_用FCN做分割
  6. 大学生java考试题库6_《JAVA程序设计》期末考试试题_(六)
  7. 2sin30°在python中如何表示_如何在python中实现以下派生公式?
  8. php warning date(),lnmp打开cacti时提示PHP Warning: date()
  9. 中考计算机IE操作题,信息技术中考历年真题集锦(IE操作)
  10. 字符串匹配的Boyer-Moore算法