结果:1个AC,4个WA,5个TLE。 不会动态规划。 思路:每2趟为一组。第一次去选最快的2个,回选对岸最快的1个。第二次去选最慢的2个,回选对岸最快的1个。后面以此类推。 代码:```cpp #include<bits/stdc++.h> using namespace std; int n,t,c,i; vector a,b; int main(){ scanf("%d",&n); for(int j = 0;j < n;j++){ scanf("%d",&c); a.push_back(c); } while(a.size() > 3){ sort(&a[0],&a[a.size()]); t += a[1]; b.push_back(a[1]); b.push_back(a[0]); a.erase(a.begin()); a.erase(a.begin()); sort(&b[0],&b[b.size()]); t += b[0]; a.push_back(b[0]); b.erase(b.begin()); sort(&a[0],&a[a.size()]); t += a.back(); b.push_back(a.back()); a.pop_back(); b.push_back(a.back()); a.pop_back(); sort(&b[0],&b[b.size()]); t += b[0]; a.push_back(b[0]); b.erase(b.begin()); } if(a.size() == 3) t += a[0]+a[1]+a[2]; else t += a[1]; printf("%d",t); return 0; }
谢谢各位大佬的解答!