3208: 花神的秒题计划Ⅰ

Time Limit: 16 Sec  Memory Limit: 128 MB
Submit: 323  Solved: 211
[Submit][Status]

Description

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

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

24
3

样例解释:
第一个Q路线为:25->24->23->22….->3->2
第二个Q的路线为:10->9->2

HINT

100%的数据:1<=n<=700;1<=m<=1000000;其中Q、S、B操作总和<=100;

题中所有数据不超过2*10^9

Source

题解:
一看询问这么少肯定暴力搞。。。原来做顺治滑雪的时候写的是记忆化,现在发现暴力建图跑拓扑序求最长链貌似更直观。
代码:

 #include<cstdio>

 #include<cstdlib>

 #include<cmath>

 #include<cstring>

 #include<algorithm>

 #include<iostream>

 #include<vector>

 #include<map>

 #include<set>

 #include<queue>

 #include<string>

 #define inf 1000000000

 #define maxn 1000000+5

 #define maxm 705

 #define eps 1e-10

 #define ll long long

 #define pa pair<int,int>

 #define for0(i,n) for(int i=0;i<=(n);i++)

 #define for1(i,n) for(int i=1;i<=(n);i++)

 #define for2(i,x,y) for(int i=(x);i<=(y);i++)

 #define for3(i,x,y) for(int i=(x);i>=(y);i--)

 #define mod 1000000007
#define num(i,j) ((i-1)*n+j) using namespace std; inline int read() { int x=,f=;char ch=getchar(); while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();} while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();} return x*f; }
struct edge{int go,next;}e[*maxn];
int n,tot,a[maxm][maxm],head[maxn],inp[maxn],d[maxn];
queue<int>q;
bool flag[maxn];
const int dx[]={,,,-};
const int dy[]={,-,,};
inline void insert(int x,int y)
{
e[++tot].go=y;e[tot].next=head[x];head[x]=tot;
}
void work()
{
memset(d,,sizeof(d));
memset(inp,,sizeof(inp));
memset(head,,sizeof(head));tot=;
for1(i,n)
for1(j,n)
if(!flag[num(i,j)])
for0(k,)
{
int ii=i+dx[k],jj=j+dy[k];
if(ii<||ii>n||jj<||jj>n||flag[num(ii,jj)]||a[ii][jj]>=a[i][j])continue;
insert(num(i,j),num(ii,jj));inp[num(ii,jj)]++;
}
for1(i,n)for1(j,n)if(!flag[num(i,j)]&&!inp[num(i,j)])q.push(num(i,j)),d[num(i,j)]=;
while(!q.empty())
{
int x=q.front();q.pop();
for(int i=head[x];i;i=e[i].next)
{
int y=e[i].go;
inp[y]--;
d[y]=max(d[y],d[x]+);
if(!inp[y])q.push(y);
}
}
int ans=;
for1(i,n*n)ans=max(ans,d[i]);
printf("%d\n",ans);
} int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); n=read();
for1(i,n)for1(j,n)a[i][j]=read();
int m=read();char ch[];
while(m--)
{
scanf("%s",ch);
if(ch[]=='Q')work();
else if(ch[]=='C'){int x=read(),y=read();a[x][y]=read();}
else
{
int x1=read(),y1=read(),x2=read(),y2=read();
for2(i,x1,x2)
for2(j,y1,y2)
flag[num(i,j)]=ch[]=='S'?:;
}
} return ; }

bzoj3208: 花神的秒题计划Ⅰ的更多相关文章

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

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

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

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

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

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

  4. BZOJ-3208|记忆化搜索-花神的秒题计划Ⅰ

    背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题-- 描述[discribe]: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目. 我 ...

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

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

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

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

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

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

  8. bzoj 前100题计划

    bzoj前100题计划 xz布置的巨大的坑.. 有空填题解... 1002 轮状病毒 用python手动matrixtree打表. #include<bits/stdc++.h> #def ...

  9. Codeforces刷题计划

    Codeforces刷题计划 已完成:-- / -- [Codeforces370E]370E - Summer Reading:构造:(给定某些数,在空白处填数,要求不下降,并且相邻差值<=1 ...

随机推荐

  1. .net+easyui系列--搜索框

    <input id="ss" style="width: 320px"> </input> <div id="mm&qu ...

  2. gulp 前端自动化工具

    一开篇 在前端开发的过程中,我们经常会碰到压缩.合并.图片script 等,于是就有了gulp 前端自动化构建工具,它能帮你在前端开发中,节省时间. 1,安装 node.js 因为gulp 构建工具是 ...

  3. [XML] ResourceManager一个操作Resource的帮助类 (转载)

    点击下载 ResourceManager.zip /// <summary> /// 类说明:Assistant /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更 ...

  4. 获取SqlServer当前链接数

    1.提供有关 Microsoft SQL Server 数据库引擎实例中的当前用户.会话和进程的信息,显示所有session sp_who 2.针对 SQL Server 上的每个经过身份验证的会话返 ...

  5. DEDECMS 猜你喜欢

      dede升级了5.7后,有个地方要求调用相关文章,于是写下  dede:likeart  标签却无法实现关联,显示的则是所有文章. 发现原来从5.5版开始已经替换了该标签,把模板中 likeart ...

  6. Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作

    一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...

  7. python路径函操作

    #判断是否为文件 os.path.isfile   #判断是否为目录 os.path.isdir   #返回文件名 os.path.basename(path)   #返回文件目录 os.path.d ...

  8. In Place Upgrade of CentOS 6 to CentOS 7

    Note: This is not the most highly recommended method to move from CentOS 6 to CentOS 7 ... but it ca ...

  9. OC语言-03NSString

    /* 1. @"kite" 这是一个OC字符串,OC的字符串也是一个对象, 由NSString类(继承于NSObject) 创建 2. 输出时使用 %@ 3. 对象方法 [对象名 ...

  10. JSP基础笔记

    主要内容:1. JSP基础2. Cookie3. HttpSession ================================ JSP基础 1. jsp的作用: * Servlet: &g ...