skiing 暴力搜索 + 动态规划


我的代码上去就是 直接纯粹的 暴力 . 居然没有超时 200ms 可能数据比较小 一会在优化
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<limits.h>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<stack>
#include<string>
#include<sstream>
#include<map>
#include<cctype>
using namespace std;
int n,m,a[][],visited[][],b[][]={,-,,,-,,,},minn;
void DFS(int y,int x,int now)
{
for(int i=;i<;i++)
{
int x1=x+b[i][],y1=y+b[i][];
if(x1>=&&x1<m&&y1>=&&y1<n&&!visited[y1][x1]&&a[y1][x1]<a[y][x])
{
now++;
if(now>minn)
minn=now;
visited[y1][x1]=;
DFS(y1,x1,now);
visited[y1][x1]=;
now--;
}
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
for(int i=;i<n;i++)
for(int j=;j<n;j++)
scanf("%d",&a[i][j]);
minn=;
for(int i=;i<n;i++)
for(int j=;j<m;j++)
{
memset(visited,,sizeof(visited));
visited[i][j]=;
DFS(i,j,);
}
printf("%d\n",minn);
}
}
下面附上 动态规划的 解法 这个 动态规划 是一种 人人为我 , 的思想 , 先根据 高度进行从小到的 排序 然后 然后从 第二小的 开始 检查 周围是否 有比他 还小的 , 如果有的话 , 将周围的 +1 个 自身相比 取最大值 , 废话少说 放码过来
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<limits.h>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<stack>
#include<string>
#include<sstream>
#include<map>
#include<cctype>
using namespace std;
struct node
{
int x,y,h;
}a[];
bool cmp(node example_a,node example_b)
{
return example_a.h<example_b.h;
}
int b[][]={,-,,,-,,,},c[][],d[][];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int total=;
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
d[i][j]=;
scanf("%d",&c[i][j]);
a[total].h=c[i][j],a[total].x=j,a[total].y=i; // 将所有的 长度 默认为 1
total++;
}
}
sort(a,a+total,cmp);
int maxn=;
for(int i=;i<total;i++) // 从 第二小的 开始 当周围 有 比他小 的 就 +1
{
for(int j=;j<;j++)
{
if(a[i].x+b[j][]>=&&a[i].x+b[j][]<m&&a[i].y+b[j][]>=&&a[i].y+b[j][]<n&&c[a[i].y][a[i].x]>c[a[i].y+b[j][]][a[i].x+b[j][]])
{
d[a[i].y][a[i].x]=max(d[a[i].y][a[i].x],d[a[i].y+b[j][]][a[i].x+b[j][]]+);
maxn=max(maxn,d[a[i].y][a[i].x]);
}
}
}
printf("%d\n",maxn);
}
return ;
}
skiing 暴力搜索 + 动态规划的更多相关文章
- ACM 暴力搜索题 题目整理
UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...
- hdu 4740 The Donkey of Gui Zhou(暴力搜索)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...
- 区间Dp 暴力枚举+动态规划 Hdu1081
F - 最大子矩形 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status Des ...
- hdu 1427 速算24点 dfs暴力搜索
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem De ...
- 随手练——洛谷-P1151(枚举与暴力搜索)
枚举 #include <iostream> using namespace std; int main() { ; cin >> k; ; i < ; i++) { ) ...
- 枚举进程——暴力搜索内存(Ring0)
上面说过了隐藏进程,这篇博客我们就简单描述一下暴力搜索进程. 一个进程要运行,必然会加载到内存中,断链隐藏进程只是把EPROCESS从链表上摘除了,但它还是驻留在内存中的.这样我们就有了找到它的方法. ...
- [luogu 1092] 虫食算 (暴力搜索剪枝)
传送门 Description Input 包含四行. 第一行有一个正整数 (N≤26). 后面的三行,每行有一个由大写字母组成的字符串,分别代表两个加数以及和.这3个字符串左右两端都没有空格,从高位 ...
- HDU 3131 One…Two…Five! (暴力搜索)
题目链接:pid=3131">HDU 3131 One-Two-Five! (暴力搜索) 题意:给出一串数字,要求用加,减,乘,除(5/2=2)连接(计算无优先级:5+3*6=8*6= ...
- 吴裕雄 python 机器学习——模型选择参数优化暴力搜索寻优GridSearchCV模型
import scipy from sklearn.datasets import load_digits from sklearn.metrics import classification_rep ...
随机推荐
- radis入门
redis介绍 是远程的,有客户端.服务端 存内存,吃内存 应用场景 缓存 队列 list操作 push pop 数据存储[根据redis硬盘持久化的机制,这里不展开] 5种数据类型 string 字 ...
- Python爬虫入门教程: 27270图片爬取
今天继续爬取一个网站,http://www.27270.com/ent/meinvtupian/ 这个网站具备反爬,so我们下载的代码有些地方处理的也不是很到位,大家重点学习思路,有啥建议可以在评论的 ...
- codeforces 689 Mike and Shortcuts(最短路)
codeforces 689 Mike and Shortcuts(最短路) 原题 任意两点的距离是序号差,那么相邻点之间建边即可,同时加上题目提供的边 跑一遍dijkstra可得1点到每个点的最短路 ...
- springcloud(八):熔断器Hystrix
熔断器 雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩效应是一种因“服务提供者”的不可用导致“服务 ...
- Apache Maven Cookbook(八)学习笔记-Handling Typical Build Requirements
Including and excluding additional resources Using the Maven Help Plugin: mvn help:effective-pom mvn ...
- 【Codeforces 711C】Coloring Trees
[链接] 我是链接,点我呀:) [题意] 连续相同的数字分为一段 你可以改变其中0为1~m中的某个数字(改变成不同数字需要不同花费) 问你最后如果要求分成恰好k段的话,最少需要多少花费 [题解] dp ...
- ansible playbooks loop循环
在一个task中循环某个操作 1.标准循环 - name: add several users user: name: "{{ item }}" state: present gr ...
- [luoguP1373] 小a和uim之大逃离(DP)
传送门 题解 代码 #include <cstdio> #include <iostream> #define N 802 #define mod 1000000007 int ...
- .NET跨平台 - WCF & Mono
让WCF运行在Linux上(寄宿于服务器程序) WCF介绍请自行 bing 搜索 使用的开发工具为vs2017,系统为 Ubuntu16.04 服务器软件为Jexus ( 详情请看: Jexus官网 ...
- 第一章 Java Collections Framework总览
1.Java容器 Java容器中只能存放对象,对于基本数据类型(byte,short,char,int,long,float,double,boolean),需要包装成对象类型(Byte,Short, ...