bzoj1237 wikioi2430 [SCOI2008]配对 dp
来源:互联网 发布:淘宝drjart天猫旗舰店 编辑:程序博客网 时间:2024/05/21 10:10
如果更改的位置超过3位那么一定不是最优解。不信自己举例子。
#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;#define INF 0x7ffffffffffll#define maxn 110000#define ll long longll f[maxn];int a[maxn],n,b[maxn];ll get(int x,int y){ if(x==y) return INF; return abs(x-y);}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d",&a[i],&b[i]); } sort(a+1,a+1+n); sort(b+1,b+1+n); f[1]=get(a[1],b[1]); f[2]=min(f[1]+get(a[2],b[2]),get(a[1],b[2])+get(a[2],b[1])); for(int i=3;i<=n;i++) { f[i]=f[i-1]+get(a[i],b[i]); f[i]=min(f[i],f[i-2]+get(a[i],b[i-1])+get(a[i-1],b[i])); f[i]=min(f[i],f[i-3]+get(a[i-2],b[i])+get(a[i-1],b[i-2])+get(a[i],b[i-1])); f[i]=min(f[i],f[i-3]+get(a[i-2],b[i-1])+get(a[i-1],b[i])+get(a[i],b[i-2])); f[i]=min(f[i],f[i-3]+get(a[i-2],b[i])+get(a[i-1],b[i-1])+get(a[i],b[i-2])); } if(f[n]>INF) printf("-1"); else printf("%lld",f[n]); return 0;}
0 0
- bzoj1237 wikioi2430 [SCOI2008]配对 dp
- 【bzoj1237】【scoi2008】【配对】【dp】
- [BZOJ1237][SCOI2008]配对(dp)
- BZOJ1237: [SCOI2008]配对
- bzoj1237 [SCOI2008]配对
- bzoj1237: [SCOI2008]配对
- BZOJ1237: [SCOI2008]配对
- bzoj1237 [SCOI2008]配对
- bzoj1237 [SCOI2008]配对 贪心结论+插数dp
- BZOJ1237 配对 [DP]
- 【bzoj 1237】[SCOI2008]配对 dp
- bzoj 1237: [SCOI2008]配对 (贪心+DP)
- bzoj 1237: [SCOI2008]配对(DP)
- [SCOI2008]配对
- BZOJ 1237: [SCOI2008]配对
- bzoj 1237 [SCOI2008]配对
- 洛谷 2507 SCOI2008 配对
- BZOJ 1237: [SCOI2008]配对 一个神奇的东西然后简单DP
- kernel_list讲解
- C语言之算法初步(汉诺塔--递归算法)
- 因为CGRect,CGPoint等不是NSObject的子类,因此不能够直接添加到NSMutableArray中,所以要先将其转换成NSObject的子类。NSValue类可以解决这个问题,见NSVa
- tomcat启动的内存溢出解决
- HDU 1853 Cyclic Tour(二分图最优匹配:有向环覆盖)
- bzoj1237 wikioi2430 [SCOI2008]配对 dp
- A*算法入门
- UVA10391
- python 内置函数
- select函数(二)
- 当开发者产生一个伟大的想法之后应该做的10件事
- Codeforces Round #262 (Div. 2) B. Little Dima and Equation
- [WARALD美国职业谈]为PHD正名-说说PHD博士就业的一些问题 (全文)
- 循环数组的最大子段和