ref我好菜啊

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int n, u[2005], v[2005], f[2005][11][11][11][11];
int dis(int x, int y){
return abs(x-y);
}
int dfs(int i, int cur, int a, int b, int c){
if(f[i][cur][a][b][c]!=-1) return f[i][cur][a][b][c];
int re = 0x3f3f3f3f;
if(i>n){
if(!a && !b && !c) return 0;
if(a) re = min(re, dfs(i, a, 0, b, c)+dis(cur,a)+1);
if(b) re = min(re, dfs(i, b, a, 0, c)+dis(cur,b)+1);
if(c) re = min(re, dfs(i, c, a, b, 0)+dis(cur,c)+1);
f[i][cur][a][b][c] = re;
return re;
}
if(a) re = min(re, dfs(i, a, 0, b, c)+dis(cur,a)+1);
if(b) re = min(re, dfs(i, b, a, 0, c)+dis(cur,b)+1);
if(c) re = min(re, dfs(i, c, a, b, 0)+dis(cur,c)+1);
if(a && b && c){
re = min(re, dfs(i+1, v[i], a, b, c)+dis(cur,u[i])+dis(u[i],v[i])+2);
re = min(re, dfs(i+1, a, v[i], b, c)+dis(cur,u[i])+dis(u[i],a)+2);
re = min(re, dfs(i+1, b, a, v[i], c)+dis(cur,u[i])+dis(u[i],b)+2);
re = min(re, dfs(i+1, c, a, b, v[i])+dis(cur,u[i])+dis(u[i],c)+2);
}
else{
if(!a) re = min(re, dfs(i+1, u[i], v[i], b, c)+dis(cur,u[i])+1);
else if(!b) re = min(re, dfs(i+1, u[i], a, v[i], c)+dis(cur,u[i])+1);
else re = min(re, dfs(i+1, u[i], a, b, v[i])+dis(cur,u[i])+1);
}
f[i][cur][a][b][c] = re;
return re;
}
int main(){
cin>>n;
for(int i=1; i<=n; i++)
scanf("%d %d", &u[i], &v[i]);
memset(f, -1, sizeof(f));
cout<<dfs(1, 1, 0, 0, 0)<<endl;
return 0;
}

最新文章

  1. js,java,浮点数运算错误及应对方法
  2. Tiny_4412的NFS挂载
  3. Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系
  4. 文本信息“welcome to java programming!”
  5. centos7编译安装MySQL5.7.9
  6. javascriptt切换组件MyTab.js封装
  7. UILabel 的使用,属性详解
  8. EditPlus 快速去重
  9. [ACM] hdu 2191 珍惜如今,感恩生活 (多重背包)
  10. [TPYBoard-Micropython之会python就能做硬件 4] 学习使用电位器和1602显示屏
  11. Tom DeMarco:软件工程这个概念已过时?
  12. leetcode-数组中只出现一次的数字
  13. login.html
  14. win2008安装并配置zabbix3.4 agent
  15. python3 文件和流
  16. 使用AS-REP Roasting和kerberoasting攻击kerberos
  17. Linux驱动中completion接口浅析(wait_for_complete例子,很好)
  18. java中Double类数字太大时页面正常显示而不要用科学计数法
  19. 使用 Gogs 搭建自己的 Git 服务器
  20. java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart

热门文章

  1. Android各大手机系统打开权限管理页面
  2. iOS核心动画高级技巧之CALayer(一)
  3. Python学习-用户输入和字符串拼接
  4. php-7.1.11编译选项配置
  5. 虚拟机中Ubuntu安装vmtools
  6. c++ 输入split
  7. Intel&amp;amd
  8. [Rails学习之路]Rails路由配置
  9. 如何修改集群的公网信息(包括 VIP) (文档 ID 1674442.1)
  10. Unity的sendmessage用法