BZOJ 1237 配对
来源:互联网 发布:hl线切割控制编程视频 编辑:程序博客网 时间:2024/05/05 04:35
DP,多说没用,直接粘代码,简单明了,一看就懂。
#include<stdio.h>#include<string.h>#include<algorithm>#define MAXN 100010#define INF 0x7ffffffffffllusing namespace std;int a[MAXN],b[MAXN];long long f[MAXN];long long min(long long a,long long b) { return a<b ? a : b; }long long abs(long long a,long long b) { if(a==b) return INF; if(a<b) return b-a; return a-b;}int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d",&a[i],&b[i]); } sort(a+1,a+n+1); sort(b+1,b+n+1); f[1]=abs(a[1],b[1]); f[2]=min(f[1]+abs(a[2],b[2]),abs(a[1],b[2])+abs(a[2],b[1])); for(int i=3;i<=n;i++){ f[i]=f[i-1]+abs(a[i],b[i]); f[i]=min(f[i],f[i-2]+abs(a[i],b[i-1])+abs(a[i-1],b[i])); f[i]=min(f[i],f[i-3]+abs(a[i],b[i-1])+abs(a[i-1],b[i-2])+abs(a[i-2],b[i])); f[i]=min(f[i],f[i-3]+abs(a[i-2],b[i-1])+abs(a[i-1],b[i])+abs(a[i],b[i-2])); } if(f[n]>=INF) printf("-1"); else printf("%lld",f[n]); return 0;}
0 0
- BZOJ 1237 配对
- BZOJ 1237: [SCOI2008]配对
- bzoj 1237 [SCOI2008]配对
- 【bzoj 1237】[SCOI2008]配对 dp
- bzoj 1237: [SCOI2008]配对 (贪心+DP)
- bzoj 1237: [SCOI2008]配对(DP)
- BZOJ 1786 配对Pair
- 【bzoj 1786】[Ahoi2008]Pair 配对
- BZOJ 4514 [Sdoi2016]数字配对
- 【BZOJ】4514: [Sdoi2016]数字配对
- BZOJ 4205: 卡牌配对
- bzoj 1786 [Ahoi2008]Pair 配对
- BZOJ 1237: [SCOI2008]配对 一个神奇的东西然后简单DP
- BZOJ 1786: [Ahoi2008]Pair 配对 题解
- bzoj 4514: [Sdoi2016]数字配对 费用流
- BZOJ P4205[FJ2015集训]卡牌配对
- bzoj 1786 && bzoj 1831: [Ahoi2008]Pair 配对(DP)
- 配对
- 如何建立域
- C语言之变量初始化
- seajs模块路径解析 简单总结
- 屌丝程序员赚钱之道 之投资
- 网络请求
- BZOJ 1237 配对
- 使用nginx后如何在web应用中获取用户ip及原理解释
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第13章 学习 shell script
- 如何增加职场自信
- 每天一个linux命令(30): chown命令
- android opengl es 正方体纹理效果
- Windows消息机制流程
- 连续优化问题 处理y= x1^2+x2^2+x3^3......
- Ch2_面试基础知识——语言面试三种类型 & 面试题1:赋值运算符函数