我觉得排序还是有必要的,按ai排序,排好以后如果ai-b(i-1)>1,那就说明区间不连续.按这个逻辑把你的代码改了下:
哦,不对,应该是ai和最大的bi的差:
#include <stdio.h>#include <stdlib.h>
int main()
{
int n, min, max, i, j, m=10000
scanf("%d", &n)
struct p {
int x, y
} t
p* sz=new p[n] //c++不支持变长数组,用了new
for (i=0 i<n i++) {
scanf("%d %d", &sz[i].x, &sz[i].y)
}
for (i=0 i<n-1 i++) {
for (j=i+1 j<=n-1 j++) {
if (sz[i].x>sz[j].x) {
t=sz[j]
sz[j]=sz[i]
sz[i]=t
}
}
}
//======================
max=sz[0].y
for (i=1 i<n ++i)
{
if (sz[i-1].y>max)
max=sz[i-1].y
if (sz[i].x-max>1)
{
printf("no\n")
delete[] sz
return 0
}
}
//=============================
printf("%d %d", sz[0].x, sz[n-1].y)
delete[] sz
return 0
}
1、将闭区间[0,1]等分成n份,在每一个小区间上直接计算梯形面积(上下底为(x^3)/3.0),并合并求和; 2、将闭区间[0,1]等分成(2 * n)份,重复上述操作; 3、上述两步的结果做差,如果绝对值小于,如:1e-6,那么输出第二步的结果;否则继续加倍等分区间重复操作