动态规划-多维DP
1.最大正方形
我的瞎猜分析:





我的瞎猜算法:
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map> #define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 101
#define MAX 1<<30
#define V vector<int> using namespace std; int dp[LEN][LEN][LEN];
int a[LEN][LEN]; int main(){
freopen("D:/CbWorkspace/动态规划/最大正方形.txt","r",stdin);
int n,m,i,j,v,k;
I("%d%d",&n,&m);
F(i,,n+) F(j,,m+) {
I("%d",&a[i][j]);
if(a[i][j]) dp[i][j][]=;
}
int ans=;
for(v=;v<n;v++){
for(i=;i+v<=n;i++){
for(j=;j+v<=m;j++){
dp[i][j][v+]=dp[i][j][v];
if(dp[i][j][v]==v){
bool flag=;
for(k=j;k<=j+v;k++){ //横向侧边
if(!a[i+v][k]){
flag=;
break;
}
}
if(flag) for(k=i;k<i+v;k++){ //纵向侧边
if(!a[k][j+v]){
flag=;
break;
}
}
if(flag){
dp[i][j][v+]++;
}
}
ans=max(ans,dp[i][j][v+]);
}
}
}
printf("%d",ans);
return ;
}
我的瞎猜算法:
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map> #define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 101
#define MAX 1<<30
#define V vector<int> using namespace std; int dp[LEN][LEN][LEN];
int a[LEN][LEN]; int main(){
freopen("D:/CbWorkspace/动态规划/最大正方形.txt","r",stdin);
int n,m,i,j,v,k;
I("%d%d",&n,&m);
F(i,,n+) F(j,,m+) {
I("%d",&a[i][j]);
if(a[i][j]) dp[i][j][]=;
}
int ans=;
for(v=;v<n;v++){
for(i=;i+v<=n;i++){
for(j=;j+v<=m;j++){
dp[i][j][v+]=dp[i][j][v];
if(dp[i][j][v]==v){
bool flag=;
for(k=j;k<=j+v;k++){ //横向侧边
if(!a[i+v][k]){
flag=;
break;
}
}
if(flag) for(k=i;k<i+v;k++){ //纵向侧边
if(!a[k][j+v]){
flag=;
break;
}
}
if(flag){
dp[i][j][v+]++;
}
}
ans=max(ans,dp[i][j][v+]);
}
}
}
printf("%d",ans);
return ;
}
动态规划-多维DP的更多相关文章
- 榨取kkksc03 多维dp
榨取kkksc03 多维dp 题面:洛谷 P1855 榨取kkksc03 一道简单的动态规划,背包再加一维费用,首先可以易得三维动态规划转移方程 \[ dp[i][j][w]=\left\{ \beg ...
- 动态规划-Dynamic Programming(DP)
动态规划 动态规划方法心得 动态规划是一般的面试.笔试中的高频算法题,熟练掌握必要的.动态规划的中心思想是在解决当前问题时,可以由之前已经计算所得的结果并结合现在的限制条件递推出结果.由于此前的计 ...
- 悦动达人 (多维dp)
悦动达人 Description 一个游戏,在屏幕上有5个格子形成一行,每一秒都会有一个格子闪烁,格子闪烁时你需要保证至少有一只手指在格子上面, 现在我们已经知道第i秒时,第xi个格子会闪烁,我们假设 ...
- POJ - 1170 Shopping Offers (五维DP)
题目大意:有一个人要买b件商品,给出每件商品的编号,价格和数量,恰逢商店打折.有s种打折方式.问怎么才干使买的价格达到最低 解题思路:最多仅仅有五种商品.且每件商品最多仅仅有5个,所以能够用5维dp来 ...
- luogu 4401 矿工配餐 多维dp
五维dp,记忆化搜索会MLE超内存,所以用滚动数组,十分经典 五维dp #include <bits/stdc++.h> using namespace std; ; ][][][],la ...
- 洛谷p1732 活蹦乱跳的香穗子 二维DP
今天不BB了,直接帖原题吧 地址>>https://www.luogu.org/problem/show?pid=1732<< 题目描述 香穗子在田野上调蘑菇!她跳啊跳,发现 ...
- 洛谷 P1006 传纸条 多维DP
传纸条详解: 蒟蒻最近接到了练习DP的通知,于是跑来试炼场看看:发现有点难(毕竟是蒟蒻吗)便去翻了翻题解,可怎么都看不懂.为什么呢?蒟蒻发现题解里都非常详细的讲了转移方程,讲了降维优化,但这题新颖之处 ...
- Blocks POJ - 1390 多维dp
题意:有一排box,各有不同的颜色.你可以通过点击某个box使得与其相邻的同色box全部消掉,然后你可以得到的分数为消去长度的平方,问怎样得到最高分? 题解:考虑用一维dp,/*dp[i]为1~i个b ...
- 【洛谷】【动态规划(二维)】P1508 Likecloud-吃、吃、吃
[题目描述:] 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏眼花之时,眼前突然闪现出了一个n*m(n and m<=200)的矩型的巨 ...
随机推荐
- Angular复习笔记7-路由(上)
Angular复习笔记7-路由(上) 关于Angular路由的部分将分为上下两篇来介绍.这是第一篇. 概述 路由所要解决的核心问题是通过建立URL和页面的对应关系,使得不同的页面可以用不同的URL来表 ...
- 基于Druid数据库连接池的DBUtil工具类
工具类 DruidUtil.java package com.zzuli.util; import com.alibaba.druid.pool.DruidDataSourceFactory; imp ...
- nodeType属性在vue源码中的使用
每个节点都有一个 nodeType 属性,用于表明节点的类型,节点类型由 Node 类型中定义12个常量表示: nodeType在vue中的应用 在vue编译的过程中需要查找html结构中的双大括号 ...
- 下拉框等需要显示上下箭头切换的CSS样式
下拉框等需要显示上下箭头切换的CSS样式 .icon-right, .icon-down, .icon-up { display: inline-block; padding-right: 13r ...
- 06-Vue路由
什么是路由 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源: 对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有 ...
- Dalvik虚拟机结构——1
Dalvik核心内容:libdvm.so 主要有C语言实现,依赖于Linux内核的一部分功能:线程机制,内存管理机制,每一个Android应有都对应一个dalvik实例 Dalvik虚拟机功能:主要 ...
- Oracle ERP 库存管理(业务流程 核心流程)
库存核心业务 库存管理的核心是对货物本身的管理,是对货物的数量与相关属性的管理,目的是为销售与采购服务,确保合理的库存保有量,处理库存分类帐目与进出流水帐,以单据的形式基本涵盖仓库的各种进出库业务. ...
- 你遇到过哪些原因造成MySQL异步复制延迟?
master上多为并发事务,salve上则多为单线程回放(MySQL 5.7起,支持真正的并行回放,有所缓解) 异步复制,本来就是有一定延迟的(否则也不叫做异步了,介意的话可以改成半同步复制) sla ...
- HBase的部署与其它相关组件(Hive和Phoenix)的集成
HBase的部署与其它相关组件(Hive和Phoenix)的集成 一.HBase部署 1.1.Zookeeper正常部署 首先保证Zookeeper集群的正常部署,并启动之: /opt/module/ ...
- Scrapy爬虫提高效率
如何提高scrapy的爬取效率 增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发 ...