题目链接:
http://codeforces.com/problemset/problem/863/B
题解:
没看到这数据范围。。。。。。 蛇皮!!!
代码:
#include <cmath>
#include <queue>
#include <cstdio>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
const int maxn = 50+10;
int num[maxn<<1];
vector<int>p;
int main()
{
int n;
scanf("%d",&n);
int m=n*2;
for(int i=0;i<m;i++)
scanf("%d",&num[i]);
int ans=inf;
p.clear();
for(int i=0;i<m;i++)
{
for(int j=i+1;j<m;j++)
{
for(int k=0;k<m;k++)
{
if(k!=i&&k!=j)
p.push_back(num[k]);
}
sort(p.begin(),p.end());
int sum=0;
for(int k=0;k<p.size();k+=2)
sum+=(p[k+1]-p[k]);
ans=min(ans,sum);
p.clear();
}
}
printf("%d\n",ans);
}
本文提供了 CodeForces 平台上题目 863B 的详细解答过程,通过两层循环遍历所有组合,并计算每种情况下最小的调整代价,最终输出最小总代价。
992

被折叠的 条评论
为什么被折叠?



