可以看一下你在每次二分答案check中将军队先贪心往军队上移的时候是否为先加的当前移动的距离,然后在把点往上跳,就是这样:
for(int j=33;j>=0;j--){ if(f[x][j]>1&&snum+s[x][j]<=lim){ snum+=s[x][j]; x=f[x][j]; } }