当前位置: 首页 > news >正文

Codeforces - 1198D - Rectangle Painting 1 - dp

https://codeforces.com/contest/1198/problem/D
原来是dp的思路,而且是每次切成两半向下递归。好像在哪里见过类似的,貌似是紫书的样子。
再想想好像就很显然的样子,并不会出现奇奇怪怪的合并的样子。

#include<bits/stdc++.h>
using namespace std;

const int INF = 0x3f3f3f3f;

int dp[51][51][51][51];
char g[51][51];

int main() {
#ifdef Yinku
    freopen("Yinku.in", "r", stdin);
#endif // Yinku
    int n;
    while(~scanf("%d", &n)) {
        for(int i = 1; i <= n; ++i)
            scanf("%s", g[i] + 1);
        for(int i = 1; i <= n; ++i) {
            for(int j = 1; j <= n; ++j) {
                dp[i][j][i][j] = (g[i][j] == '#');
            }
        }
        for(int h = 1; h <= n; ++h) {
            for(int w = 1; w <= n; ++w) {
                if(w == 1 && h == 1)
                    continue;
                for(int i = 1; i <= n; ++i) {
                    if(i + h - 1 > n)
                        break;
                    for(int j = 1; j <= n; ++j) {
                        if(j + w - 1 > n)
                            break;
                        int &tmp = dp[i][j][i + h - 1][j + w - 1] = max(h,w);
                        for(int k = i; k < i + h - 1; ++k) {
                            tmp = min(tmp, dp[i][j][k][j + w - 1] + dp[k + 1][j][i + h - 1][j + w - 1]);
                        }
                        for(int k = j; k < j + w - 1; ++k) {
                            tmp = min(tmp, dp[i][j][i + h - 1][k] + dp[i][k + 1][i + h - 1][j + w - 1]);
                        }
                    }
                }
            }
        }
        printf("%d\n", dp[1][1][n][n]);
    }
}

转载于:https://www.cnblogs.com/Yinku/p/11286323.html

相关文章:

  • 强化网络互连设备安全配置脚本
  • Codeforces - 1198C - Matching vs Independent Set - 贪心
  • 如何编写实施方案
  • 智能家居-思维的又一次跳跃
  • nginx配置虚拟主机,代理服务器
  • 去除HTML代码得函数
  • sql 插入数据 返回ID
  • 2019牛客暑期多校训练营(第五场) - C - generator 2 - BSGS
  • How does dbms_stats default granularity AUTO Work?
  • 模板 - SG函数
  • 浪潮之巅第三章 — “水果”公司的复兴 (乔布斯和苹果公司)
  • SCUT - 11 - 被钦定的选手 - 质因数分解
  • notify官方详解
  • heartbeat与lvs和realserver的结合
  • Windows Phone 7 Silverlight开发试玩
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 0基础学习移动端适配
  • Centos6.8 使用rpm安装mysql5.7
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • js学习笔记
  • NSTimer学习笔记
  • SQLServer之创建显式事务
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 力扣(LeetCode)965
  • 聊聊redis的数据结构的应用
  • 你不可错过的前端面试题(一)
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 使用Gradle第一次构建Java程序
  • 无服务器化是企业 IT 架构的未来吗?
  • UI设计初学者应该如何入门?
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $refs 、$nextTic、动态组件、name的使用
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Java数据结构)ArrayList
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (算法二)滑动窗口
  • (转)关于pipe()的详细解析
  • (转)关于多人操作数据的处理策略
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .Net mvc总结
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET导入Excel数据
  • .NET的微型Web框架 Nancy
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET文档生成工具ADB使用图文教程
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @RequestBody的使用
  • @RestController注解的使用