bzoj千题计划216:bzoj1499: [NOI2005]瑰丽华尔兹
http://www.lydsy.com/JudgeOnline/problem.php?id=1499
预处理从每个位置向每个方向最多能走几步
dp[k][i][j] 第k个时间段后,钢琴到位置(i,j)能走的最长路径
枚举这一次走几步转移
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std; int n,m;
char mp[][]; int cnt[][][]; int dp[][][]; int dx[]={,-,,,};
int dy[]={,,,-,}; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} int find(int x,int y,int d)
{
if(x<= || x>n || y<= || y>m) return ;
if(mp[x][y]=='x') return ;
cnt[d][x][y]=find(x+dx[d],y+dy[d],d);
return cnt[d][x][y]+;
} int main()
{
freopen("adv1900.in","r",stdin);
freopen("adv1900.out","w",stdout);
int x,y,T;
read(n); read(m); read(x); read(y); read(T);
for(int i=;i<=n;++i) scanf("%s",mp[i]+);
memset(cnt,-,sizeof(cnt));
for(int d=;d<=;++d)
{
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
if(mp[i][j]=='.' && cnt[d][i][j]==-) cnt[d][i][j]=find(i+dx[d],j+dy[d],d);
}
memset(dp[],-,sizeof(dp[]));
int now=,nxt=;
dp[][x][y]=;
int s,t,d;
int len;
while(T--)
{
memset(dp[nxt],-,sizeof(dp[nxt]));
read(s); read(t); read(d);
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
if(dp[now][i][j]!=-)
{
len=min(t-s+,cnt[d][i][j]);
for(int k=;k<=len;++k) dp[nxt][i+k*dx[d]][j+k*dy[d]]=max(dp[nxt][i+k*dx[d]][j+k*dy[d]],dp[now][i][j]+k);
}
swap(now,nxt);
}
int ans=;
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
ans=max(ans,dp[now][i][j]);
printf("%d",ans);
}
bzoj千题计划216:bzoj1499: [NOI2005]瑰丽华尔兹的更多相关文章
- bzoj1499[NOI2005]瑰丽华尔兹 单调队列优化dp
1499: [NOI2005]瑰丽华尔兹 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 1802 Solved: 1097[Submit][Status ...
- [Bzoj1499][NOI2005]瑰丽华尔兹[简单DP]
1499: [NOI2005]瑰丽华尔兹 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 1714 Solved: 1042[Submit][Status ...
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划221:bzoj1500: [NOI2005]维修数列(fhq treap)
http://www.lydsy.com/JudgeOnline/problem.php?id=1500 1.覆盖标记用INF表示无覆盖标记,要求可能用0覆盖 2.代表空节点的0号节点和首尾的两个虚拟 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
随机推荐
- 4、Docker数据管理
一.挂载类型 1.volumes Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes).保存数据的最佳方式. 使用场景:将容器中的数据持久化到宿主机,比如容器是my ...
- stl源码剖析 详细学习笔记stack queue
// // stack.cpp // 笔记 // // Created by fam on 15/3/15. // // //---------------------------15/03/1 ...
- 使用python处理百万条数据分享(适用于java新手)
1.前言 因为负责基础服务,经常需要处理一些数据,但是大多时候采用awk以及java程序即可,但是这次突然有百万级数据需要处理,通过awk无法进行匹配,然后我又采用java来处理,文件一分为8同时开启 ...
- ansible自动化工具安装和简单使用
ansible自动化工具安装和简单使用 1.安装 ansible依赖于Python 2.6或更高的版本.paramiko.PyYAML及Jinja2. 2.1 编译安装 解决依赖关系 # yum -y ...
- photoshop cs6安装过程中安装程序遇到错误:请重启计算机,解决办法
1.关闭防火墙和杀毒软件 2.删除注册表 依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager目录,找到其中的 ...
- Jenkins邮件通知
Jenkins邮件通知 Jenkins 配备了一个开箱工具,添加一个电子邮件通知的构建项目. 第1步 - 配置SMTP服务器. 转到 Manage Jenkins → Configure System ...
- PHP学习笔记2
PHP Switch语句 用于根据多个不同条件执行不同动作.如果不在每个条件后加break,将会输出所有结果. <?php $language="java"; switch( ...
- Final发布 文案+美工展示
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2476项目地址:https://coding.net/u/wuyy694/ ...
- 《Linux内核分析》 第五节 扒开系统调用的三层皮(下)
<Linux内核分析> 第五节 扒开系统调用的三层皮(下) 20135307 一.给MenusOS增加time和time-asm命令 给MenuOS增加time和time-asm命令需要 ...
- node之文件的下载
/** * 文件的下载 */ let express = require('express'); let app = express(); app.get('/',(req,res)=>{ re ...