for(int i = 1; i <= n; i++){
scanf("%lf%lf", &x0, &yyy0);
if(yyy0>d){
flag = false;
}
else{
delta = sqrt(1.0*d*d-1.0*yyy0*yyy0);
qujians[i].left = x0-delta;
qujians[i].right = x0+delta;
}
}
这里在读取数据的时候的正确思路是,如果出现了(y>d)的状况,结果当然已经毫无疑问是-1了,而且这里也无法计算出一个有效的x轴上的对应区间(所以用if_else),但是我们还要不断进行输入的过程直到把n个island都读完(与之相对的是直接加一个break停止读入剩下的数据,反正它看起来也没有意义了),否则剩余的数据会干扰下一个case。
总之,当一个问题有很多次子问题(即重复的case)的时候,就算上一个问题提前解决了,也要确保把属于这个子问题的数据读取完(打扫完),避免干扰下一次子问题。