20求助

P1007 独木桥

前提要所有士兵离开才行 minn=max(minn,ab)H
by popo0815 @ 2023-09-05 12:26:13


另外,a[50000]可能越界
by popo0815 @ 2023-09-05 12:27:37


贪心的思想(?),但是贪心方法不对. 试一下:先sort(读入序列不保证有序),MAX就是max(l-a[1]+1,a[n]); MIN比较复杂,找到离l/2较近的数(2个,一个>l,一个<l)取其max的min。
by wzhm54nr @ 2023-09-05 12:46:12


```cpp #include <bits/stdc++.h> using namespace std; int a[5005]; int l, n; int main(){ cin >> l >> n; if(n==0){//一定要特判!否则第一个点都过不了 cout<<"0 0"; return 0; } for(int i=1;i<=n;i++) std::cin >> a[i]; sort(a+1,a+1+n); int index=lower_bound(a+1,a+1+n,l/2)-a; if(index==n+1){ //判边界 std::cout << a[n] << " "; } else if(index==1){ std::cout << l-a[1]+1 << " "; } else if(a[index]==l/2){ //中间的人正好在桥中 std::cout << a[index] << " "; } else{//左边的往左,右边的往右,取max std::cout << max(l-a[index]+1,a[index-1]) << " "; } std::cout << max(l-a[1]+1,a[n]) << std::endl;//类似于南辕北辙qwq return 0; } ```
by wzhm54nr @ 2023-09-05 13:08:57


AC了,你试下
by wzhm54nr @ 2023-09-05 13:09:50


@[wzhm54nr](/user/1071328) 谢谢
by maxlmb2023_ti @ 2023-09-07 16:56:46


|