8628 相亲
来源:互联网 发布:win7上安装ubuntu系统 编辑:程序博客网 时间:2024/03/29 15:58
8628 相亲
时间限制:500MS 内存限制:1000K
提交次数:409 通过次数:81
题型: 编程题 语言: G++;GCC
Description
在咱遥远破旧的小村庄,男女成婚仍是以古老的、传统的模式:相亲,合时辰八字,合得来则订婚,择日成亲。其中最忽悠的则是合时辰八字,话说是月老决定,实则是根据某条公式,算是否合得来。通过多年的明察暗访,终于让我知道合地辰八字的公式了。其规则如下:1、 根据某条公式将时辰八字转化成一个整数num, 为了方便起见,以后就用这个num表示该人的时辰八字。2、 如果男女双方的时辰八字之和等于一个给定的数sum,则称此对时辰八字合得来。否则相反。3、 如果时辰八字合不来的人结婚,会被抓去浸猪笼的,因为会被当成是对神的亵渎。 如此可知,在咱们村一对男女可以结婚的概率是相当的小。现在你的任务是算出咱们村有多少对男女可以结婚?
输入格式
第一行输入一个整数T(1<=T<=10),表示样例的个数。接下来有T个样例,对于每一个样例,第一行输入两个整数n(0<n<10^5),sum(0<sum<=10^8), n 表示咱们村的人口数,sum 表示给定的和。接下来输入n个人的信息,每个人用两个整数来表示,其中前面一个表示性别sex(0表示女,1 表示男),后面一个表示其时辰八字num(0<=num<sum,且所有的num的值各不相同)。为了方便起见,n 个人的信息是按照每个人的num的递增顺序给出的。
输出格式
输出占一行,表示能结婚的男女对数。(注意:没有同性的可以结婚,咱国家不允许)
输入样例
14 60 2 1 3 0 3 1 4
输出样例
2
提示
来源
王鑫杰
作者
admin
思路:其中的八字是递增的,很容易想到要用二分!但是一定一定要注意的是,必须要用scanf,不然用cin会wa无数次!!
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#define man 1#define woman 0#define unmarry 0#define marry 1#define maxn 100005using namespace std;int female[maxn],male[maxn],female2[maxn];int searchp(int left,int right,int need){ int i,j,mid; while(left<=right) { mid=(left+right)/2; if(female[mid]==need&&female2[mid]==unmarry) { return mid; female2[mid]=marry; } else if(female[mid]>need) right=mid-1; else if(female[mid]<need) left=mid+1; else if(female[mid]==need&&female2[mid]==marry) return 0; } return 0;}int main(){ int T; scanf("%d",&T); while(T--) { memset(female2,unmarry,sizeof(female2)); int i,n,sum,couple=0,malenum=0,femalenum=0,sex,num; scanf("%d%d",&n,&sum); for(i=1;i<=n;i++) { scanf("%d%d",&sex,&num); if(sex==man) male[++malenum]=num; else if(sex==woman) female[++femalenum]=num; } for(i=1;i<=malenum;i++) { int need=sum-male[i],flag=searchp(1,femalenum,need); if(flag) { couple++; } } printf("%d\n",couple); } return 0;}
0 0
- 8628 相亲
- 相亲
- 相亲
- 相亲
- 相亲
- 相亲
- 相亲
- 相亲
- 相亲
- 相亲
- 相亲
- 相亲
- 相亲记
- 又相亲
- 相亲的
- 第一次相亲
- 关于相亲
- 程序员相亲
- 【Google Code Jam】Problem A. Store Credit
- LED灯的任意操纵
- git 搭建服务器
- 【Unity3D游戏开发】性能优化之如何将包大小减少到极致(三六)
- Codeforces Round #346 (Div. 2)(D)计算几何
- 8628 相亲
- 算法训练 区间k大数查询
- hdu4542 求反素数
- UVa 10763 - Foreign Exchange
- 使用Cocoapods管理framework
- 5. Longest Palindromic Substring
- iOS岗位面试一及小结
- 【Unity3D游戏开发】性能优化之Texture图片空间和内存占用分析(三七)
- iOS开发教你怎么集成ApplePay