CCF NOI1123 A-B
问题链接: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相关推荐
- CCF CSP 201609-2 火车购票
题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...
- ccf Markdown
说实话,这种题如果给我返回结果我是一定可以写出来的但是ccf不返回结果很烦,这种题我根本不能一次写对.还有重写时发现好多考试之前根本没注意到的点比如删掉空行 .......=_= #include&l ...
- I'm stuck! ccf模拟题。
ccf模拟题. I'm stuck! 时间限制: 1.0s 内存限制: 256.0MB 问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S' ...
- 计算机协会成立活动简报,“中国计算机学会CCF走进高校”活动在我校举行
校新闻中心讯 9月13日下午,由中国计算机学会(CCF)主办的"CCF走进河南科技大学"活动在工科二号楼610举行.副校长魏世忠教授出席活动并致辞.长江学者.国家杰出青年基金获得者 ...
- 绿盟科技与CCF成立“鲲鹏”科研基金 计划发力5大领域资助16个项目
[51CTO.com原创稿件]2017年5月10日,由中国计算机学会(CCF)和北京神州绿盟信息安全科技股份有限公司(以下简称:绿盟科技)主办的2017 CCF-绿盟科技"鲲鹏"科 ...
- WC2018 CCF程序设计教学比赛记事
WC2018 d5 教师比赛日 亦或者称之为以"递归"为主题的同课异构课程(25节课 有8节讲递归) 发现强省或者弱省中名校派出的选手还是非常优秀的,这种优秀,从他的教态.自 ...
- 徐韬:CCF - 个贷违约预测Baseline
徐韬是华北电力大学数理系大四的学生,Datawhale成员/Dreamtech成员,参加了多期Datawhale的组队学习,也在天池/CCF/讯飞等比赛中取得了不错的成绩,现保送大连理工大学软件学院深 ...
- 赴约北大,2019 CCF大数据与计算智能大赛正式启动
8月17日,以"数据驱动,智创未来"为主题的2019 CCF大数据与计算智能大赛(2019 CCF BDCI)全球启动仪式,在北京大学英杰交流中心·阳光厅正式启幕.自2013年创办 ...
- CCF推荐系统项目代码解读!
Datawhale干货 作者:阿水,北京航空航天大学,Datawhale成员 本文以CCF大数据与计算智能大赛(CCF BDCI)图书推荐系统竞赛为实践背景,使用Paddle构建用户与图书的打分模型, ...
最新文章
- 《你必须掌握的Entity Framework 6.x与Core 2.0》正式出版感想
- 第十五届全国大学生智能车东北赛区成绩
- 1470. Shuffle the Array
- JQ获取CKeditor的值
- ddr2的上电顺序_关于内存的插入顺序的问题
- java cap是什么_寒冬面试归来总结最新蚂蚁4面(Java):CAP+数据强一致性+分布式等...
- 使用glbindbuffers产生访问冲突_预防IP地址冲突的应对方案,你知道吗?
- 基于python的文件处理
- 微型计算机强化训练的答案,微型计算机第8章+强化训练
- 190129每日一句
- 软件项目管理案例教程(第三版)其它课后题答案持续更新,欢迎收藏+关注
- CentOS 安装JDK8
- 小程序发布文章-微信小程序视频教程28
- Matlab出错向量长度必须相同,代码已贴。错误使用plot3,向量长度必须相同
- python使用金山词霸的翻译功能
- 《CSAPP》(第3版)答案(第十一章)
- 【Android】安卓开发实战之软键盘设置
- Ubuntu18.04使用Xorg创建虚拟屏幕
- dropout_keep_prob
- 500内部服务器错误。你查找的资源存在问题,因而无法显示
热门文章
- java.lang.OutOfMemoryError: Java heap space 错误及解决办法
- linux内核irq,linux-kernel – do_IRQ中的中断向量和irq映射
- python3 mysql同步_MySQL上云同步脚本-Python3
- m3u8地址_「波波带你手动提取网页视频」04讲 Network和Elements提取m3u8链接
- fcn网络训练代码_用FCN做分割
- 大学生java考试题库6_《JAVA程序设计》期末考试试题_(六)
- 2sin30°在python中如何表示_如何在python中实现以下派生公式?
- php warning date(),lnmp打开cacti时提示PHP Warning: date()
- 中考计算机IE操作题,信息技术中考历年真题集锦(IE操作)
- 字符串匹配的Boyer-Moore算法