发现自己只会打状压了。 233333

不需要考虑是否会被挡,所以直接dp

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int tot1,tot2,a[5][5],b[5][5];
int x1[20],x2[20],y11[20],y2[20];
char ch;
int dis[20][20],f[20][1<<10],bit[15],n;
int main()
{
bit[0]=1; for(int i=1;i<=10;i++) bit[i]=bit[i-1]<<1;
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++){
ch=getchar();while(ch<'0'||ch>'1')ch=getchar();
a[i][j]=ch-'0';
}
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++){
ch=getchar();while(ch<'0'||ch>'1')ch=getchar();
b[i][j]=ch-'0';
}
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++){
if(a[i][j]==b[i][j]) continue;
if(a[i][j]==1) x1[++tot1]=i,y11[tot1]=j;
if(b[i][j]==1) x2[++tot2]=i,y2[tot2]=j;
}
for(int i=1;i<=tot1;i++)
for(int j=1;j<=tot2;j++)
dis[i][j]=abs(x1[i]-x2[j])+abs(y11[i]-y2[j]);
n=tot1; memset(f,0x3f,sizeof f);
f[0][0]=0;
for(int i=1;i<=n;i++){
for(int j=0;j<bit[n];j++){
if(f[i-1][j]==1061109567) continue;
for(int k=1;k<=n;k++){
if((j|bit[k-1])==j) continue;
if(f[i-1][j]+dis[i][k]<f[i][j|bit[k-1]])
f[i][j|bit[k-1]]=f[i-1][j]+dis[i][k];
}
}
}
printf("%d\n",f[n][bit[n]-1]);
return 0;
}

[HAOI2008]移动玩具 状压的更多相关文章

  1. bzoj1054: [HAOI2008]移动玩具 状压+爆搜即可

    题意:在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初的玩具状态 ...

  2. 【洛谷P4289】移动玩具 状压bfs

    代码如下 #include <bits/stdc++.h> using namespace std; const int dx[]={0,0,1,-1}; const int dy[]={ ...

  3. [HAOI2008]移动玩具(状压&带权二分图)

    题目描述 • 一个 4 × 4 的 0/1 矩阵 • 每次可以交换相邻两个元素 • 求从初始状态到目标状态的最小交换次数 输入格式 前四行,每行一个长为 4 的 0/1 字符串,描述初始状态. 后四行 ...

  4. 洛谷P4289 移动玩具 HAOI2008 搜索+状压

    正解:状压 解题报告: 先,放下传送门QwQ 说真的我jio得这题不管是思路还是实现上,都还是有一定难度的?然后就看到神仙hl博客里一句"太水了不讲了"就过掉了,,,好的趴太强辽Q ...

  5. 1054: [HAOI2008]移动玩具

    1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1272  Solved: 690[Submit][Statu ...

  6. 【BZOJ1054】[HAOI2008]移动玩具 BFS

    [BZOJ1054][HAOI2008]移动玩具 Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个 ...

  7. 题解 P4289 【[HAOI2008]移动玩具】

    题目地址:https://www.luogu.com.cn/problem/P4289 题解原地址:https://createsj.blog.luogu.org/solution-p4289 让我们 ...

  8. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

  9. 【BZOJ-4197】寿司晚宴 状压DP

    4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 694  Solved: 440[Submit][Status] ...

随机推荐

  1. 用nodejs实现简单爬虫

    前言   本喵最近工作中需要使用node,并也想晋升为全栈工程师,所以开始了node学习之旅,在学习过程中, 我会总结一些实用的例子,做成博文和视频教程,以实例形式来理解体会node的用法,所以跟小猫 ...

  2. IT轮子系列(四)——使用Jquery+formdata对象 上传 文件

    前言 在MVC 中文件的上传,一般都采用控件: <h2>IT轮子四——文件上传</h2> <div> <input type="file" ...

  3. 学习MQ(一) 感知

    声明:我的文字里出现的MQ,如没有特殊指明,就是指的IBM的websphere MQ 以前对MQ一无所知! MQ是IBM websphere的系列产品之一,是很好的一个中间件产品.其实我对这列产品并不 ...

  4. Spring2.5整合Ibatis入门级开发实例

      分类: SPRING IBATIS2010-11-22 20:19 1170人阅读 评论(0) 收藏 举报 ibatisspringstringpropertiesclassuser 最近一直在看 ...

  5. 【转】H.264中的NAL技术

    NAL技术 1.NAL概述 NAL全称Network Abstract Layer,即网络抽象层.在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面 ...

  6. python 定时服务模块

    python定时任务使用方法如下: import sched shelder = sched.scheduler(time.time, time.sleep) shelder.enter(2, 0, ...

  7. 实例解析Collections源码,Iterator和ListIterator

    比如一个视频或文章有多个页面标签设置,我们在看一篇文章或一个视频时,底部有为你推荐栏目. 如何根据这个文章或视频的标签,来实现这个推荐栏目呢. public List<VideoInfoVo&g ...

  8. Ubuntu硬盘空间清理

    1.删除多余的安装下载文件: sudo aptitude autoclean sudo aptitude clean 2.删除多余的内核版本: sudo apt-get autoremove 4.去/ ...

  9. memcached command

    http://lzone.de/cheat-sheet/memcached memcached Cheat Sheet Telnet Interface How To Connect Use &quo ...

  10. SpringCloud实战-Ribbon客户端负载均衡

    前面我们已经完成了注册中心和服务提供者两个基础组件.接着介绍使用Spring Cloud Ribbon在客户端负载均衡的调用服务. ribbon 是一个客户端负载均衡器,可以简单的理解成类似于 ngi ...