[Bzoj5359][Lydsy1805月赛]寻宝游戏(dp)
5359: [Lydsy1805月赛]寻宝游戏
Time Limit: 2 Sec Memory Limit: 512 MB
Submit: 71 Solved: 19
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
Source
AC代码:
# include <iostream>
# include <cstdio>
# include <cstring>
# include <algorithm>
using namespace std;
int f[][][][],a[],b[],s[][],g[][][],h[][][],n,m,K,dt;
bool cmp(int x,int y){return x > y;}
void init()
{
memset(g,,sizeof g);
memset(h,,sizeof h);
for(int i = ;i <= n;i++)
{
dt = ;
for(int j = m;j >= ;j--)
{
sort(a + ,a + dt + ,cmp);
for(int k = ;k <= dt;k++)b[k] = b[k - ] + a[k],g[i][j][k] = b[k];
a[++dt] = s[i][j];
}
}
for(int j = ;j <= m;j++)
{
dt = ;
for(int i = n;i >= ;i--)
{
sort(a + ,a + dt + ,cmp);
for(int k = ;k <= dt;k++)b[k] = b[k - ] + a[k],h[i][j][k] = b[k];
a[++dt] = s[i][j];
}
}
memset(f,0x80,sizeof f);
f[][][][] = s[][];
f[][][][] = ;
}
int main()
{
int Case;scanf("%d",&Case);
while(Case--)
{
scanf("%d %d %d",&n,&m,&K);
for(int i = ;i <= n;i++)
for(int j = ;j <= m;j++)
scanf("%d",&s[i][j]);
init();
for(int i = ;i <= n;i++)
for(int j = ;j <= m;j++)
for(int k = ;k <= K;k++)
for(int l = ;l <= K;l++)
{
for(int t = ;t <= min(K - l,m - j);t++)
f[i + ][j][k][l + t] = max(f[i + ][j][k][l + t],f[i][j][k][l] + s[i + ][j] + g[i][j][t]),
f[i + ][j][k + ][l + t] = max(f[i + ][j][k + ][l + t],f[i][j][k][l] + g[i][j][t]);
for(int t = ;t <= min(K - l,n - i);t++)
f[i][j + ][k][l + t] = max(f[i][j + ][k][l + t],f[i][j][k][l] + s[i][j + ] + h[i][j][t]),
f[i][j + ][k + ][l + t] = max(f[i][j + ][k + ][l + t],f[i][j][k][l] + h[i][j][t]);
}
int ans = ;
for(int i = ;i <= K;i++)ans = max(ans,f[n][m][i][i]);
printf("%d\n",ans);
}
}
[Bzoj5359][Lydsy1805月赛]寻宝游戏(dp)的更多相关文章
- BZOJ_5359_[Lydsy1805月赛]寻宝游戏_DP
BZOJ5359_[Lydsy1805月赛]寻宝游戏_DP Description begin.lydsy.com/JudgeOnline/upload/201805.pdf 我们需要找到一条权值最大 ...
- BZOJ4881: [Lydsy1705月赛]线段游戏(二分图)
4881: [Lydsy1705月赛]线段游戏 Time Limit: 3 Sec Memory Limit: 256 MBSubmit: 359 Solved: 205[Submit][Stat ...
- [BZOJ3991][SDOI2015]寻宝游戏
[BZOJ3991][SDOI2015]寻宝游戏 试题描述 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择 ...
- 【BZOJ】【3991】【SDOI2015】寻宝游戏
dfs序 我哭啊……这题在考试的时候(我不是山东的,CH大法吼)没想出来……只写了50分的暴力QAQ 而且苦逼的写的比正解还长……我骗点分容易吗QAQ 骗分做法: 1.$n,m\leq 1000$: ...
- 树形结构的维护:BZOJ 3991: [SDOI2015]寻宝游戏
Description 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择一个村庄,瞬间转移到这个村庄,然后可 ...
- bzoj 3991: [SDOI2015]寻宝游戏
Description 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择一个村庄,瞬间转移到这个村庄,然后可 ...
- 【BZOJ3991】【SDOI2015】寻宝游戏
Description 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择一个村庄,瞬间转移到这个村庄,然 ...
- Loj #2494. 「AHOI / HNOI2018」寻宝游戏
Loj #2494. 「AHOI / HNOI2018」寻宝游戏 题目描述 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得 ...
- 【BZOJ5285】[HNOI2018]寻宝游戏(神仙题)
[BZOJ5285][HNOI2018]寻宝游戏(神仙题) 题面 BZOJ 洛谷 题解 既然是二进制按位的运算,显然按位考虑. 发现这样一个关系,如果是\(or\)的话,只要\(or\ 1\),那么无 ...
随机推荐
- python3 输入某年某月某日,判断这一天是这一年的第几天?
题目 输入某年某月某日,判断这一天是这一年的第几天? 程序分析 特殊情况,闰年时需考虑二月多加一天. 代码: import calendar year = int(input("Year:& ...
- 【转】git bash here 右键菜单失效后的修复方法
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\git_shell] @="Git Ba&sh Here" [ ...
- 网络编程-TCP/IP各层介绍(5层模型讲解)
1.TCP/IP五层协议讲解 物理层--数据链路层--网络层--传输层--应用层 我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议 就 ...
- [转] 彻底搞懂word-break、word-wrap、white-space
white-space.word-break.word-wrap(overflow-wrap)估计是css里最基本又最让人迷惑的三个属性了,我也是用了n次都经常搞混,必须系统整理一下,今天我们就把这三 ...
- day01_10.for循环
for和while都是一种循环 解释:所有循环的共同点 画图详解 在一条数轴上,循环就是有起始点($i=0); 有结束点($i<=10);有步长($i++); 每走一个相应的步长,就执行一次代码 ...
- Linux中TTY是什么意思
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备.tty是Teletype的缩写.Teletype是最早出现的一种终端 设备,很象电传打字机(或者说就是),是由Telety ...
- [python学习篇][廖雪峰][1]高级特性--创建生成器 方法2 yield
def fib(max): n, a, b = 0, 0, 1 while n < max: print b a, b = b, a + b n = n + 1 将print b 改成yield ...
- RabbitMQ与PHP(一)
RabbitMQ与PHP(一) 项目中使用RabbitMQ作为队列处理用户消息通知,消息由前端PHP代码产生,处理消息使用Python,这就导致代码一致性问题,调整消息定义时需要PHP和Python都 ...
- CSS3的writing-mode属性
writing-mode这个CSS属性以前是IE的独有属性,IE5.5浏览器就已经支持了.在很长一段时间里,FireFox, Chrome这些现代浏览器都不支持writing-mode,各大现代浏览器 ...
- [SDOI2013]直径 (树的直径,贪心)
题目链接 Solution 我们直接找到一条直径 \(s\),起点为 \(begin\),终点为 \(end\). 从前往后遍历点 \(u\) ,若子树中最大的距离与 \(dis(u,begin)\) ...