动态规划-多维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)的矩型的巨 ...
随机推荐
- Stopwatch 类用于计算程序运行时间
Stopwatch 类 命名空间:System.Diagnostics.Stopwatch 实例化:Stopwatch getTime=new Stopwatch(); 开始计时:getTime.St ...
- asp.net图片浏览器效果
技术来源于同学会实践 前台设计 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...
- linux部署安装SRS流媒体服务器教程
这段时间一直在搞RTMP流媒体直播项目,期间踩过很多坑,刚开始是用的nginx-rtmp作为流媒体转发服务器,但是效果并不尽人意,推拉流不稳定,特别是拉流,速度特别慢,平均要十多秒才能拉到流,并且交互 ...
- SpringCloud高并发性能优化
1. SpringCloud高并发性能优化 1.1. 前言 当系统的用户量上来,每秒QPS上千后,可能就会导致系统的各种卡顿,超时等情况,这时优化操作不可避免 1.2. 优化步骤 第一步:优化大SQL ...
- 为元素添加 title 属性
---恢复内容开始--- 可以使用title属性(不要与title元素混淆)为网站上任何部分加上提示标签. ... <ul title="Table of Contents" ...
- Java 数组(二)基本操作
一.数组的基本操作 1.数组遍历[重点] 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历.遍历也是数组操作中的基石. 方式一:使用索引下标方式 int[] array = { 15, 25, ...
- Eclipse apk项目创建和项目构架
一.创建项目工程 设定名字 设定包名(每一台机器只有唯一的包名)下一步 根据设置进行选择 创建空项目 Finish即可创建 调节项目的字体 二.Eclipse 项目构架 Src 2. Gen R.ja ...
- MongoDB用户和密码登录
一.MongoDB中内置角色 角色 介绍 read 提供读取所有非系统的集合(数据库) readWrite 提供读写所有非系统的集合(数据库)和读取所有角色的所有权限 dbAdmin 提供执行管理任务 ...
- 共享变量与python测试库
共享变量(Variables) 1.变量表: 导入模式: 1.套件文件,不需要导入 2.资源文件 Resource xxx.robot 2.变量文件 导入模式: 1.Variables xx.py ...
- Docker 修改容器内的时区
利用docker发布服务,发现 程序用获取的系统时间比正常时间晚了8个小时 进入容器 docker exec -it /bin/sh 查询时间 date -R 发现时区为0时区 解决思路 1.复制相应 ...