复杂度是O(N^5),枚举所有小矩形,转移时再按每列,每行进行转移

#include<bits/stdc++.h>
using namespace std;
#define N 55
int n,dp[N][N][N][N];
char mp[N][N]; int main(){
cin>>n;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
cin>>mp[i][j];
memset(dp,0x3f,sizeof dp); for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(mp[i][j]=='.')
dp[i][j][i][j]=;
else dp[i][j][i][j]=; for(int lena=;lena<=n;lena++)
for(int lenb=;lenb<=n;lenb++)
for(int i=;i+lena-<=n;i++)
for(int j=;j+lenb-<=n;j++){
int k=i+lena-,l=j+lenb-; if(i==k && j==l) continue; dp[i][j][k][l]=max(abs(i-k)+,abs(j-l)+);//初始值 for(int t=i;t<=k-;t++)//枚举中间行
dp[i][j][k][l]=min(dp[i][j][k][l],dp[i][j][t][l]+dp[t+][j][k][l]); for(int t=j;t<=l-;t++)//枚举中间列
dp[i][j][k][l]=min(dp[i][j][k][l],dp[i][j][k][t]+dp[i][t+][k][l]); }
/*
for(int i=3;i<=n;i++){
for(int j=3;j<=n;j++)
cout<<dp[3][3][i][j]<<" ";
puts("");
} */ cout<<dp[][][n][n];
}

区间dp(二维)——cf1199F的更多相关文章

  1. codeforces 597div2 F. Daniel and Spring Cleaning(数位dp+二维容斥)

    题目链接:https://codeforces.com/contest/1245/problem/F 题意:给定一个区间(L,R),a.b两个数都是属于区间内的数,求满足 a + b = a ^ b ...

  2. 经典DP 二维换一维

    HDU 1024  Max Sum Plus Plus // dp[i][j] = max(dp[i][j-1], dp[i-1][t]) + num[j] // pre[j-1] 存放dp[i-1] ...

  3. bzoj 3594 [Scoi2014]方伯伯的玉米田(DP+二维BIT)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3594 [题意] 给定一个n个数的序列,有K次将一个区间内的数加1的机会,问最长不下降子 ...

  4. HDU 2159 FATE (DP 二维费用背包)

    题目链接 题意 : 中文题不详述. 思路 : 二维背包,dp[i][h]表示当前忍耐值为i的情况下,杀了h个怪得到的最大经验值,状态转移方程: dp[i][h] = max(dp[i][h],dp[i ...

  5. cf1107e uva10559区间dp升维

    /* 区间dp,为什么要升维? 因为若用dp[l][r]表示消去dp[l][r]的最大的分,那么显然状态转移方程dp[l][r]=max{dp[l+1][k-1]+(len[l]+len[k])^2+ ...

  6. hdu6078 Wavel Sequence dp+二维树状数组

    //#pragma comment(linker, "/STACK:102400000,102400000") /** 题目:hdu6078 Wavel Sequence 链接:h ...

  7. dp --- 二维dp + 最大上升子序列

    <传送门> 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 74477   Accepted: 27574 ...

  8. 洛谷P1719 最大加权矩形 (DP/二维前缀和)

    题目描述也没啥好说的,就是给你个你n*n的矩形(带权),求其中最大权值的子矩阵. 首先比较好想的就是二维前缀和,n<=120,所以可以用暴力. 1 #include<bits/stdc++ ...

  9. POJ 2029 Get Many Persimmon Trees(DP||二维树状数组)

    题目链接 题意 : 给你每个柿子树的位置,给你已知长宽的矩形,让这个矩形包含最多的柿子树.输出数目 思路 :数据不是很大,暴力一下就行,也可以用二维树状数组来做. #include <stdio ...

  10. 【非原创】codeforces 1025D - Recovering BST【区间dp+二叉搜索树】

    题目:戳这里 题意:给一个不下降序列,有n个数.问能否构造一个二叉搜索树,满足父亲和儿子之间的gcd>1. 解题思路:其实这题就是构造个二叉搜索树,只不过多了个条件.主要得了解二叉搜索树的性质, ...

随机推荐

  1. 【leetcode】945. Minimum Increment to Make Array Unique

    题目如下: Given an array of integers A, a move consists of choosing any A[i], and incrementing it by 1. ...

  2. nohup及crontab定时任务

    一.关于nohup: 1.假设有一 tash.sh 启动是:nohup /home/spex/bin_prodDemo/task.sh &                         一定 ...

  3. sql的分页

    public static string GetPageSql(string sql, int start, int end)        {            return string.Fo ...

  4. 树莓派GPIO口驱动编写

    一.wiringpi写法 #include <wiringPi.h> #include <stdlib.h> int main(int argc,char *argv[]) { ...

  5. H5页面前后端通信 (3种方式简单介绍)

    1.ajax:短连接 2.websocket :长连接,双向的.   node搭建的websocket服务器,推送信息给客户端浏览器 :https://www.cnblogs.com/fps2tao/ ...

  6. 阿里云Redis 配置

    查看路径whereis redis 1.修改配置文件 vim /etc/redis.conf 这三个配置是必须的 修改内容,把 daemonize no 修改为:daemonize yes requi ...

  7. idea 配置tomcat

    [Toc] #一.配置全局tomcat (类似eclipse中配置tomcat的路径) ##1.1 看图,打开Edit Configuratioms... ##1.2 展开Defaults,找到tom ...

  8. kali开启禁止或删除ssh 开机启动

    开启禁止或删除ssh 开机启动 # update-rc.d ssh enable #//开机启动 # update-rc.d ssh disable #//禁止开机启动 # update-rc.d - ...

  9. servlet项目找不到java文件(由于照抄代码造成的bug)

    其实这个bug非常简单,实际上是由于路径配置问题,也是由于我照抄代码造成的(好孩子不要学!) 情况是这样的:java文件没有问题但是启动项目的时候出现了bug: 然后当我把GetData.java和J ...

  10. html5中的拖拽功能

    拖拽元素支持的事件 ondrag 应用于拖拽元素,整个拖拽过程都会调用 ondragstart 应用于拖拽元素,当拖拽开始时调用 ondragleave 应用于拖拽元素,当鼠标离开拖拽元素是调用 on ...