【HDOJ】2782 The Worm Turns
DFS。
/* 2782 */
#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std; #define MAXN 650 int n, m;
bool visit[MAXN][MAXN];
int ansd, ansx, ansy, ansb;
int dir[][] = {
// E, N, S, W.
,, -,, ,, ,-
};
int link[][] = {
,, ,, ,, ,
};
char op[] = "ENSW"; inline bool check(int x, int y) {
return x< || x>=n || y< || y>=m;
} int dfs(int x, int y, int d) {
int i, j, k, tmp;
int xx, yy;
int ret = ; if (d == -) {
for (i=; i<; ++i) {
xx = x + dir[i][];
yy = y + dir[i][];
if (check(xx, yy) || visit[xx][yy])
continue;
k = ;
while (!check(xx, yy) && !visit[xx][yy]) {
++k;
visit[xx][yy] = true;
xx += dir[i][];
yy += dir[i][];
}
xx -= dir[i][];
yy -= dir[i][];
tmp = k + dfs(xx, yy, i);
if (tmp > ansb) {
ansb = tmp;
ansx = x;
ansy = y;
ansd = i;
}
while (k--) {
visit[xx][yy] = false;
xx -= dir[i][];
yy -= dir[i][];
}
}
} else {
for (j=; j<; ++j) {
i = link[d][j];
xx = x + dir[i][];
yy = y + dir[i][];
if (check(xx, yy) || visit[xx][yy])
continue;
k = ;
while (!check(xx, yy) && !visit[xx][yy]) {
++k;
visit[xx][yy] = true;
xx += dir[i][];
yy += dir[i][];
}
xx -= dir[i][];
yy -= dir[i][];
tmp = k + dfs(xx, yy, i);
if (tmp > ret)
ret = tmp;
while (k--) {
visit[xx][yy] = false;
xx -= dir[i][];
yy -= dir[i][];
}
}
}
return ret;
} int main() {
int t = ;
int i, j, k; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif while (scanf("%d %d",&n,&m)!=EOF && (n||m)) {
memset(visit, false, sizeof(visit));
scanf("%d", &k);
while (k--) {
scanf("%d %d", &i, &j);
visit[i][j] = true;
}
ansb = -;
for (i=; i<n; ++i) {
for (j=; j<m; ++j) {
if (!visit[i][j]) {
visit[i][j] = true;
dfs(i, j, -);
visit[i][j] = false;
}
}
}
printf("Case %d: %d %d %d %c\n", ++t, ansb+, ansx, ansy, op[ansd]);
} return ;
}
【HDOJ】2782 The Worm Turns的更多相关文章
- 【HDOJ】3088 WORM
状态压缩+BFS. /* 3088 */ #include <iostream> #include <cstdio> #include <cstring> #inc ...
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- HDU 2782 The Worm Turns (DFS)
Winston the Worm just woke up in a fresh rectangular patch of earth. The rectangular patch is divide ...
- 【HDOJ】【3506】Monkey Party
DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...
- 【HDOJ】【3516】Tree Construction
DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...
- 【HDOJ】【3480】Division
DP/四边形不等式 要求将一个可重集S分成M个子集,求子集的极差的平方和最小是多少…… 首先我们先将这N个数排序,容易想到每个自己都对应着这个有序数组中的一段……而不会是互相穿插着= =因为交换一下明 ...
- 【HDOJ】【2829】Lawrence
DP/四边形不等式 做过POJ 1739 邮局那道题后就很容易写出动规方程: dp[i][j]=min{dp[i-1][k]+w[k+1][j]}(表示前 j 个点分成 i 块的最小代价) $w(l, ...
- 【HDOJ】【3415】Max Sum of Max-K-sub-sequence
DP/单调队列优化 呃……环形链求最大k子段和. 首先拆环为链求前缀和…… 然后单调队列吧<_<,裸题没啥好说的…… WA:为毛手写队列就会挂,必须用STL的deque?(写挂自己弱……s ...
- 【HDOJ】【3530】Subsequence
DP/单调队列优化 题解:http://www.cnblogs.com/yymore/archive/2011/06/22/2087553.html 引用: 首先我们要明确几件事情 1.假设我们现在知 ...
随机推荐
- div随另一个div自动增高
<script type="text/javascript"> document.getElementById("div1").style.heig ...
- Angular2 - Starter - Component and Component Lifecircle Hooks
我们通过一个NgModule来启动一个ng app,NgModule通过bootstrap配置来指定应用的入口组件. @NgModule({ bootstrap: [ AppComponent ], ...
- 浅谈Mamcached集成web项目
1.资源文件配置 config.properties 添加 #memcached服务器地址 memchchedIP=192.168.1.8 2.编写工具类 MemUtils package cn.co ...
- Android工程师必会做的20道题
一.单选题 (共7道题,每题5分) 1.使用AIDL完成远程service方法调用下列说法不正确的是 A.aidl对应的接口名称不能与aidl文件名相同 B.aidl的文件的内容类似java代 ...
- 在github上搭建博客(使用Jekyll)
简单说,只需要三步,就可以在 Github 搭建起一个博客: 在 Github 上建一个名为 xxx.github.io 的库: 把看中了的 Jekyll 模板 clone 到本地: 把这个模板 pu ...
- 转:探讨android更新UI的几种方法
本文转自:http://www.cnblogs.com/wenjiang/p/3180324.html 作为IT新手,总以为只要有时间,有精力,什么东西都能做出来.这种念头我也有过,但很快就熄灭了,因 ...
- html》meta标签笔记
meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...
- phpmailer{群发并且发送附件}
PHPMailer是一个用于发送电子邮件的PHP函数包. 第一,需要下载PHPMailer文件包phpmailer. http://phpmailer.sourceforge.net/ 第二, ...
- Burp Suite Walkthrough
Burp Suite is one of the best tools available for web application testing. Its wide variety of featu ...
- var 的用法
var 的用法相当于定义一个变量为局部的,如果在函数内部用 var 定义一个变量,函数执行结果后,该变量就消失,如果在函数内部不用 var 声明,则变量是全局的,在函数外部也可以用该变量. var a ...