时间限制:500MS 内存限制:1000K
提交次数:409 通过次数:81
题型: 编程题 语言: G++;GCC
在咱遥远破旧的小村庄,男女成婚仍是以古老的、传统的模式:相亲,合时辰八字,合得来则订婚,择日 成亲。其中最忽悠的则是合时辰八字,话说是月老决定,实则是根据某条公式,算是否合得来。通过多年 的明察暗访,终于让我知道合地辰八字的公式了。其规则如下: 1、 根据某条公式将时辰八字转化成一个整数num, 为了方便起见,以后就用这个num表示该人的时辰八字。 2、 如果男女双方的时辰八字之和等于一个给定的数sum,则称此对时辰八字合得来。否则相反。 3、 如果时辰八字合不来的人结婚,会被抓去浸猪笼的,因为会被当成是对神的亵渎。 如此可知,在咱们村一对男女可以结婚的概率是相当的小。现在你的任务是算出咱们村有多少对男女 可以结婚?
第一行输入一个整数T(1<=T<=10),表示样例的个数。 接下来有T个样例,对于每一个样例,第一行输入两个整数n(0
输出占一行,表示能结婚的男女对数。(注意:没有同性的可以结婚,咱国家不允许)
1 4 6 0 2 1 3 0 3 1 4
2
王鑫杰
admin
思路:其中的八字是递增的,很容易想到要用二分!但是一定一定要注意的是,必须要用scanf,不然用cin会wa无数次!!
#include
#include
#include
#include
#include
#define man 1
#define woman 0
#define unmarry 0
#define marry 1
#define maxn 100005
using 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]