luogu P2254 [NOI2005]瑰丽华尔兹
题目链接
题解
为什么我我我不放放放bzoj的链接呢?
因为打的暴力啊,然后bzojT了呀QAQQQQQ(逃
然后luogu竟然过了呀呀呀
dp[i][j][k]表示第k段时间结束时,你在第(i,j)位置的最长距离quqqqq
代码
// luogu-judger-enable-o2
#include<cstdio>
#include<cstring>
#include<algorithm>
const int maxn = 207;
inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9')c = getchar();
while(c <= '9' && c >= '0')x = x * 10 + c - '0',c = getchar();
return x * f;
}
int n,m,X,Y,K;
char a[maxn];
int dp[maxn][maxn][maxn],l[maxn],r[maxn],mp[maxn][maxn],t[maxn];
int main() {
n = read(),m = read(),X = read(),Y = read(),K = read();
for(int i = 1;i <= n;++ i) {
scanf("%s",a + 1) ;
for(int j = 1;j <= m; ++ j) {
if(a[j] == 'x') mp[i][j] = 1;
}
}
for(int i = 1;i <= K;++ i)
l[i] = read(),r[i] = read() ,t[i] = read();
//dfs(x,y,0);
memset(dp,-1,sizeof dp);
dp[X][Y][0] = 0;
for(int tx,ty,i = 1;i <= K;++ i) {
if(t[i] == 1) tx = -1,ty = 0;
if(t[i] == 2) tx = 1,ty = 0;
if(t[i] == 3) tx = 0,ty = -1;
if(t[i] == 4) tx = 0,ty = 1;
for(int x = 1;x <= n;++ x)
for(int y = 1;y <= m;++ y) {
if(dp[x][y][i - 1] == -1) continue;
for(int k = 0;k <= r[i] - l[i] + 1;++ k) {
int ttx = x + k * tx,tty = y + k * ty;
if(ttx < 1 || ttx > n || tty < 1 || tty > m || mp[ttx][tty] == 1) break;
dp[ttx][tty][i] = std::max(dp[ttx][tty][i],dp[x][y][i - 1] + k);
}
}
}
int ans = 0;
for(int i = 1;i <= n;++ i)
for(int j = 1;j <= m;++ j)
ans = std::max(dp[i][j][K],ans);
printf("%d\n",ans);
return 0;
}
luogu P2254 [NOI2005]瑰丽华尔兹的更多相关文章
- P2254 [NOI2005]瑰丽华尔兹
链接P2254 [NOI2005]瑰丽华尔兹 首先有个很朴素的\(dp\),设\(f_{i,j,k}\)表示\(k\)时刻地点\(i,j\)的最长长度. 然后这样不能优化,考虑利用一段连续时间是同一个 ...
- Luogu 2254 [NOI2005]瑰丽华尔兹
简单dp,设$f_{i,j,k}$表示第i个时间段,钢琴处在(j,k)位置移动距离的最大值,那么有转移 $f_{i, j, k} = max(f_{i - 1, j, k}) , f_{i, j, ...
- 洛谷P2254 [NOI2005]瑰丽华尔兹(单调队列)
传送门 题解 大概就是设$dp[i][x][y]$表示在第$i$个时间段,在$(x,y)$时的最大滑动距离 然后转移是$dp[i][x][y]=max(dp[i-1][x][y],dp[i][x'][ ...
- 洛谷 P2254 [NOI2005]瑰丽华尔兹(单调栈优化DP)
题目描述 不妨认为舞厅是一个N行M列的矩阵,矩阵中的某些方格上堆放了一些家具,其他的则是空地.钢琴可以在空地上滑动,但不能撞上家具或滑出舞厅,否则会损坏钢琴和家具,引来难缠的船长.每个时刻,钢琴都会随 ...
- 单调队列优化DP || [NOI2005]瑰丽华尔兹 || BZOJ 1499 || Luogu P2254
题外话:题目极好,做题体验极差 题面:[NOI2005]瑰丽华尔兹 题解: F[t][i][j]表示第t时刻钢琴位于(i,j)时的最大路程F[t][i][j]=max(F[t-1][i][j],F[t ...
- NOI2005瑰丽华尔兹
1499: [NOI2005]瑰丽华尔兹 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 893 Solved: 508[Submit][Status] ...
- bzoj1499[NOI2005]瑰丽华尔兹 单调队列优化dp
1499: [NOI2005]瑰丽华尔兹 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 1802 Solved: 1097[Submit][Status ...
- 【BZOJ1499】[NOI2005]瑰丽华尔兹 单调队列+DP
[BZOJ1499][NOI2005]瑰丽华尔兹 Description 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有一种漫步仙境的惬意?众所周知,跳华尔兹时,最重要的是有好的音乐.但是 ...
- [Bzoj1499][NOI2005]瑰丽华尔兹[简单DP]
1499: [NOI2005]瑰丽华尔兹 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 1714 Solved: 1042[Submit][Status ...
随机推荐
- 省队集训Day1 过河
[题目大意] 小奇特别喜欢猪,于是他养了$n$只可爱的猪,但这些猪被魔法猪教会了魔法,一不看着某些猪就会自己打起来. 小奇要带着他的猪讨伐战狂,路途中遇到了一条河.小奇找到了一条船,可惜这条船一次只能 ...
- Spring的使用优点
spring事物配置,声明式事务管理和基于@Transactional注解的使用 spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或者 ...
- Spring 事务管理(山东数漫江湖)
最新又重新学习了一遍Spring的事务,这里做点总结,不做如何一步步配置的流水账. 1. 关键类 public interface PlatformTransactionManager { Trans ...
- JAVA list 列表 字典 dict
import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; pu ...
- Fetch-新一代Ajax API
AJAX半遮半掩的底层API是饱受诟病的一件事情. XMLHttpRequest 并不是专为Ajax而设计的. 虽然各种框架对 XHR 的封装已经足够好用, 但我们可以做得更好. window.fet ...
- Linux-进程间通信(三): 共享内存
1. 共享内存: 共享内存方式可以在多个进程直接共享数据,因为其直接使用内存,不要多余的拷贝,是速度最快的IPC方式: 共享内存有两种实现方式,使用mmap和shm方式,如下图: (1) mmap方式 ...
- python实战===用python对比两张图片的不同
from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_lo ...
- HTML+CSS+JS(+Vue)写一个通讯录组件
求各位大大的Star(*/ω\*). 没有录屏,所以上传的是图片.后面已补充录屏效果. 效果:(主要是参考小米Note3的通讯录的效果做的) 主要功能: 1. 滚动后,通讯录的模块标题会固定在顶部(图 ...
- aspxpivotgrid 导出excel时,非绑定咧显示为0的情况
using DevExpress.XtraPrinting; Exporter.ExportXlsToResponse(this.Title,TextExportMode.Text,true); // ...
- strtok的用法(文件操作)
strtok :在一个字符串查找下一个符号 char *strtok( char *strToken, const char *strDelimit ); 返回值:返回指向在strToken字符串找到 ...