博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3208:花神的秒题计划I
阅读量:5106 次
发布时间:2019-06-13

本文共 1438 字,大约阅读时间需要 4 分钟。

思路:因为Q、S、B操作总和不超过100,因此怎么暴力怎么写。。。。当然记忆化搜索还是要的

#include
#include
#include
#include
#include
using namespace std;#define maxn 705const int lx[]={-1,0,1,0};const int ly[]={0,-1,0,1};int n,m;int a[maxn][maxn],f[maxn][maxn];bool can[maxn][maxn];char s[10];inline int read(){ int x=0;char ch=getchar(); for (;ch<'0'||ch>'9';ch=getchar()); for (;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; return x;}int dp(int x,int y){ if (!can[x][y]) return -n*n; if (f[x][y]) return f[x][y]; f[x][y]=1; for (int i=0;i<4;i++){ int nx=x+lx[i],ny=y+ly[i]; if (nx>0&&ny>0&&nx<=n&&ny<=n&&a[x][y]>a[nx][ny]) f[x][y]=max(f[x][y],dp(nx,ny)+1); } return f[x][y];}int main(){ n=read(); for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) a[i][j]=read(); m=read();memset(can,1,sizeof(can)); while (m--){ scanf("%s",s+1); if (s[1]=='C'){int x=read(),y=read(),v=read();a[x][y]=v;} if (s[1]=='S'){ int a=read(),b=read(),c=read(),d=read(); for (int i=a;i<=c;i++) for (int j=b;j<=d;j++) can[i][j]=0; } if (s[1]=='B'){ int a=read(),b=read(),c=read(),d=read(); for (int i=a;i<=c;i++) for (int j=b;j<=d;j++) can[i][j]=1; } if (s[1]=='Q'){ 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,dp(i,j)); printf("%d\n",ans); } } return 0;}

 

转载于:https://www.cnblogs.com/DUXT/p/6013308.html

你可能感兴趣的文章
洛谷 1449——后缀表达式(线性数据结构)
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
(转)Android之发送短信的两种方式
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>