背景【backboard】:

Memphis等一群蒟蒻出题中,花神凑过来秒题……

描述【discribe】:

花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目。

我们可以把风景区看作一个nn的地图,每个点有它的初始高度,滑雪只能从高处往低处滑【严格大于】。但是由于地势经常变动【比如雪崩、滑坡】,高度经常变化;同时,政府政策规定对于每个区域都要间歇地进行保护,防止环境破坏。现在,滑雪项目的要求是给出每个nn个点的初始高度,并给出m个命令,C a b c表示坐标为a,b的点的高度改为c;S a b c d表示左上角为a,b右下角为c,d的矩形地区开始进行保护,即不能继续滑雪;B a b c d表示左上角为a b,右下角为c d的矩形地区取消保护,即可以开始滑雪;Q表示询问现在该风景区可以滑雪的最长路径为多少。对于每个Q要作一次回答。

花神一看,这不是超简单!立刻秒出了标算~

Input

第一行n,第二行开始n*n的地图,意义如上;接下来一个m,然后是m个命令,如上

Output

对于每一个Q输出单独一行的回答

Sample Input 1

5

1 2 3 4 5

10 9 8 7 6

11 12 13 14 15

20 19 18 17 16

21 22 23 24 25

5

C 1 1 3

Q

S 1 3 5 5

S 3 1 5 5

Q

Sample Output 1

24

3

样例解释:

第一个Q路线为:25->24->23->22….->3->2

第二个Q的路线为:10->9->2

记忆化搜索

AC代码

#include<bits/stdc++.h>
using namespace std; /*
std::ios_base::sync_with_stdio;也超时
*/ const int inf = 0x3f3f3f3f;
const int maxn = 1010;
int n;
int f[maxn][maxn];
int g[maxn][maxn];
int vis[maxn][maxn];
int dr[4][2] = {{0,1},{1,0},{-1,0},{0,-1}}; bool in(int x,int y){
return x>0 && x<=n && y>0 && y<=n;
} //f[x][y]含义:从这个点出发 所能走的最大长度 int dfs(int x,int y){
if(vis[x][y]) return -inf;
if(f[x][y]) return f[x][y]; //取
int res = 1;//第一次搜索这个点
for(int i=0;i<4;i++){
int tx = x + dr[i][0];
int ty = y + dr[i][1];
if(in(tx,ty) && g[tx][ty] < g[x][y]){
res = max(res,dfs(tx,ty)+1);
}
}
return f[x][y] = res; //存
} int main(){
std::ios_base::sync_with_stdio;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>g[i][j];
}
}
int m;
cin>>m;
while(m--){
char ch;
int a,b,c,d;
cin>>ch;
if(ch=='S'){
cin>>a>>b>>c>>d;
for(int i=a;i<=c;i++){
for(int j=b;j<=d;j++){
vis[i][j] = 1;
}
}
}else if(ch=='B'){
cin>>a>>b>>c>>d;
for(int i=a;i<=c;i++){
for(int j=b;j<=d;j++){
vis[i][j] = 0;
}
}
}else if(ch=='C'){
cin>>a>>b>>c;
g[a][b] = c;
}else{
int ans = 0;
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
ans = max(ans,dfs(i,j));
}
}
cout<<ans<<endl;
}
}
return 0;
}

BZOJ-3208|记忆化搜索-花神的秒题计划Ⅰ的更多相关文章

  1. bzoj 3208 花神的秒题计划I

    bzoj 3208 花神的秒题计划I Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题-- 描述[discribe]: 花花山峰峦起伏,峰顶常年被雪 ...

  2. bzoj3208: 花神的秒题计划Ⅰ

    3208: 花神的秒题计划Ⅰ Time Limit: 16 Sec  Memory Limit: 128 MBSubmit: 323  Solved: 211[Submit][Status] Desc ...

  3. 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)

    心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...

  4. NOIP 2017 逛公园 记忆化搜索 最短路 好题

    题目描述: 策策同学特别喜欢逛公园.公园可以看成一张N个点MM条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间. ...

  5. bzoj3208:花神的秒题计划I

    思路:因为Q.S.B操作总和不超过100,因此怎么暴力怎么写....当然记忆化搜索还是要的 #include<cstdio> #include<iostream> #inclu ...

  6. 【bzoj3208】花神的秒题计划Ⅰ

    记忆化搜索 #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib ...

  7. BZOJ3208:花神的秒题计划Ⅰ(记忆化搜索DP)

    Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题……   描述[discribe]: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区 ...

  8. 【记忆化搜索】bzoj3208 花神的秒题计划Ⅰ

    暴力 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #de ...

  9. BZOJ 3208: 花神的秒题计划Ⅰ

    这就是一道滑雪嘛= = 所有操作都爆力,求路径就dp,完了 CODE: #include<cstdio>#include<iostream>#include<algori ...

随机推荐

  1. Sessions Hang on row cache lock

    Sessions Hang on "row cache lock" (dc_objects) While Creating & Dropping a Table Concu ...

  2. springcloud学习第一坑

    我是根据周立先生所写的<Spring+Cloud与Docker微服务架构实战>来学习SpringCloud的,我会记录下来我日常遇到的所有问题,包括但不仅只包括SpringCloud的问题 ...

  3. mysql本地安装

    1.下载地址: https://downloads.mysql.com/archives/community/ 2.安装: 解压目录:D:\mysql\mysql-5.6.36-winx64 2.1. ...

  4. Windows下使用TeamViewer连接远程服务器,以及解决“远程桌面关闭后TeamViewer不能连接”的问题

    1.本地安装TeamViewer,完成后如下: 2.远程服务器也安装TeamViewer 在本地TeamViewer中得伙伴ID,输入远程的ID,弹出如下对话框,输入密码即可. 3.这时虽然可以连接, ...

  5. 汇编-13.0-int指令

    1.int指令 int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程. 执行int n指令,相当于引发一个中断号为n的中断过程. (1).取中断类型码n: (2).标志寄存器入栈,I ...

  6. 【托业】【怪兽】TEST01

    101. respectable 值得尊敬的(形容人或事物) respectful 态度恭敬的(形容人) respecting 关于…… respective 各自的 102. hardly 几乎没有 ...

  7. vi命令保存

    :q :退出编辑器 :q! :强制退出 :wq   :保存并退出 :wq! :保存并强制退出 ZZ :保存并退出 :x   :保存并退出

  8. vi命令插入

    1.插入 i :在当前光标前插入 I:在当前行的行首插入 a:在当前光标后插入 A:在当前行的行尾插入 o:在当前行的下面另起一行插入 O:在当前行的上面另起一行插入 s:删除当前光标的字符并开始插入 ...

  9. table的thead,tbody,tfoot

    为了让大表格(table)在下载的时候可以分段的显示,就是说在浏览器解析HTML时,table是作为一个整体解释的,使用tbody可以优化显示. 如果表格很长,用tbody分段,可以一部分一部分地显示 ...

  10. XML CDATA识别“<,>”

    http://www.w3school.com.cn/xml/xml_cdata.asp 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Dat ...