USACO銀牌題目 CF863B Kayaking (排序, 枚舉, 暴力,DFS) 樣例代碼2
2022-07-16 10:41 作者:信奧賽USACO鄭老師 | 我要投稿
#include <bits/stdc++.h>
using namespace std;
int d[50*2];
int cost=0;
int mincost=1e8;
?
void s(int k, int single, int n){
? ? if(k>=2*n){
? ? ? ? if(k==2*n && single==0){
? ? ? ? ? ? mincost=min(mincost,cost);
? ? ? ? }
? ? ? ? return;
? ? }? ??
? ? if(single>0){
? ? ? ? s(k+1,single-1,n);
? ? }
? ? if(k<2*n-1){
? ? ? ? cost+=d[k+1]-d[k];
? ? ? ? s(k+2,single,n);
? ? ? ? cost-=d[k+1]-d[k];
? ? }? ??
? ? return;
}
?
int main()
{
? ? int n;
? ? cin>>n;
? ? for(int i=0;i<2*n;i++){
? ? ? ? cin>>d[i];
? ? }
? ? sort(d,d+2*n);
? ? s(0,2,n);
? ? cout<<mincost<<endl;
? ? return 0;
}
標簽: