bzoj3208:花神的秒题计划I

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

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define maxn 705

const 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;
}
时间: 2024-08-08 13:51:47

bzoj3208:花神的秒题计划I的相关文章

BZOJ3208: 花神的秒题计划Ⅰ

Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题…… 描述[discribe]: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目. 我们可以把风景区看作一个n*n的地图,每个点有它的初始高度,滑雪只能从高处往低处滑[严格大于].但是由于地势经常变动[比如雪崩.滑坡],高度经常变化:同时,政府政策规定对于每个区域都要间歇地进行保护,防止环境破坏.现在,滑雪项目的要求是给出每个n*n个点的初始高度,并给出m个命

bzoj3208 花神的秒题计划Ⅰ 【记忆化】

Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题-- 描述[discribe]: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目. 我们可以把风景区看作一个n*n的地图,每个点有它的初始高度,滑雪只能从高处往低处滑[严格大于].但是由于地势经常变动[比如雪崩.滑坡],高度经常变化:同时,政府政策规定对于每个区域都要间歇地进行保护,防止环境破坏.现在,滑雪项目的要求是给出每个n*n个点的初始高度,并给出m个命

BZOJ 3208: 花神的秒题计划Ⅰ

3208: 花神的秒题计划Ⅰ Time Limit: 16 Sec  Memory Limit: 128 MBSubmit: 704  Solved: 483[Submit][Status][Discuss] Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题…… 描述[discribe]: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目. 我们可以把风景区看作一个n*n的地图,每个点有它的初始高度,滑雪只能

【bzoj3208】花神的秒题计划Ⅰ

记忆化搜索 #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #include<queue> using namespace std; typedef long long LL; #define INF 0x7fffffff #define N 710 int

BZOJ 3208 花神的秒题计划Ⅰ 记忆化搜索

题目大意:给定一个矩阵,多次改变某个点的权值,设定某个子矩阵内的所有点可用/禁用,求滑雪的最大长度 再也不敢不看数据范围就做题了233333 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define M 710 using namespace std; const int dx[]={0,0,1,-1}; const int dy[]={1,-1

屯题计划

感觉lxt一天到晚就是在浪啊浪, 毫无斗志, 颓废得不得了, 每天看小说玩手机到三四点然后整个人都是乱七八糟的. 不行不行我要振作起来了! 从最开始学语言到现在都快两年过去了 T T , 代码能力还是渣成这样简直不能看 T T 觉得应该学学zj爷们屯题. 加油! (题目是直接从劼很久以前的几篇屯题计划里边搬过来的我之前做过的题就删掉了 [BZOJ1822][JSOI2010]Frozen Nova 冷冻波 很水的网络流加计算几何, 然而计算几何部分非常莫名奇妙, 题目应该是判断一个圆是否与一个线

BZOJ第一页刷题计划

BZOJ第一页刷题计划 已完成:1 / 100 BZOJ1000:A+B

csp退役前的做题计划1(真)

csp退役前的做题计划1(真) 因为我太菜了,所以在第一次月考就会退役,还是记录一下每天做了什么题目吧. 任务计划 [ ] Z算法(Z Algorithm) 9.28 [x] ARC061C たくさんの数式 / Many Formulas [x] ARC061D すぬけ君の塗り絵 / Snuke's Coloring [x] ARC061E すぬけ君の地下鉄旅行 / Snuke's Subway Trip [x] ARC061F 3人でカードゲーム / Card Game for Three [

刷题计划

我很后悔这一年来被我浪费过的每分每秒,我已经不想再浪费时间了. 平时不好好刷题还想着打比赛? 今年的目标就是刷完紫书第七章的搜索,第八章的贪心,第九章的dp,然后每次的cf补题尽量补到div2的DE题,如果时间有剩余,就学AC自动机等一些数据结构吧. 第一阶段:紫书ch7-ch9  时间11月末-12月31号 第二阶段  训练指南选择性的补充知识点,同时打一些5个小时比赛+补题  时间1月-2月 第三阶段  区域赛真题组队训练