您的位置:首页 > 其它

uva 1554 - Binary Search(暴力)

2014-02-28 23:03 260 查看
题目链接:uva 1554 - Binary Search

题目大意:按照题目中的二分函数,给出i和L,表示说在第i个位置,并且查找了L次,问说有多少个N满足,注意输出的时候按照区间的形式。

解题思路:暴力,从i+1到MAXN,每次模拟题目中的代码跑一遍即可,然后要注意上限问题,N最大为1e4,然后最后N=1e4的时候要注意一下。

#include <stdio.h>
#include <string.h>

const int N = 1e4+1;

int x, c, v
, l
, r
;

bool judge(int n)
{
int p = 0, q = n-1, cnt = 0;

while (p <= q) {
int mid = (p + q) / 2;
cnt++;
if (cnt > c) return false;
if (mid == x) return cnt == c;

if (x < mid)
q = mid - 1;
else
p = mid + 1;
}
return false;
}

int main () {
while (scanf("%d%d", &x, &c) == 2) {
memset(v, 0, sizeof(v));

bool flag = false;
int ans = 0;
for (int i = x+1; i < N; i++) {
if (judge(i)) {
if (!flag) {
l[ans] = i;
flag = true;
}
} else {
if (flag) {
r[ans++] = i-1;
flag = false;
}
}
}

if (flag) r[ans++] = N-1;

printf("%d\n", ans);
for (int i = 0; i < ans; i++)
printf("%d %d\n", l[i], r[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: