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的更多相关文章

  1. 【HDOJ】3088 WORM

    状态压缩+BFS. /* 3088 */ #include <iostream> #include <cstdio> #include <cstring> #inc ...

  2. 【HDOJ】4729 An Easy Problem for Elfness

    其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...

  3. HDU 2782 The Worm Turns (DFS)

    Winston the Worm just woke up in a fresh rectangular patch of earth. The rectangular patch is divide ...

  4. 【HDOJ】【3506】Monkey Party

    DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...

  5. 【HDOJ】【3516】Tree Construction

    DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...

  6. 【HDOJ】【3480】Division

    DP/四边形不等式 要求将一个可重集S分成M个子集,求子集的极差的平方和最小是多少…… 首先我们先将这N个数排序,容易想到每个自己都对应着这个有序数组中的一段……而不会是互相穿插着= =因为交换一下明 ...

  7. 【HDOJ】【2829】Lawrence

    DP/四边形不等式 做过POJ 1739 邮局那道题后就很容易写出动规方程: dp[i][j]=min{dp[i-1][k]+w[k+1][j]}(表示前 j 个点分成 i 块的最小代价) $w(l, ...

  8. 【HDOJ】【3415】Max Sum of Max-K-sub-sequence

    DP/单调队列优化 呃……环形链求最大k子段和. 首先拆环为链求前缀和…… 然后单调队列吧<_<,裸题没啥好说的…… WA:为毛手写队列就会挂,必须用STL的deque?(写挂自己弱……s ...

  9. 【HDOJ】【3530】Subsequence

    DP/单调队列优化 题解:http://www.cnblogs.com/yymore/archive/2011/06/22/2087553.html 引用: 首先我们要明确几件事情 1.假设我们现在知 ...

随机推荐

  1. div随另一个div自动增高

    <script type="text/javascript"> document.getElementById("div1").style.heig ...

  2. Angular2 - Starter - Component and Component Lifecircle Hooks

    我们通过一个NgModule来启动一个ng app,NgModule通过bootstrap配置来指定应用的入口组件. @NgModule({ bootstrap: [ AppComponent ], ...

  3. 浅谈Mamcached集成web项目

    1.资源文件配置 config.properties 添加 #memcached服务器地址 memchchedIP=192.168.1.8 2.编写工具类 MemUtils package cn.co ...

  4. Android工程师必会做的20道题

    一.单选题     (共7道题,每题5分) 1.使用AIDL完成远程service方法调用下列说法不正确的是 A.aidl对应的接口名称不能与aidl文件名相同 B.aidl的文件的内容类似java代 ...

  5. 在github上搭建博客(使用Jekyll)

    简单说,只需要三步,就可以在 Github 搭建起一个博客: 在 Github 上建一个名为 xxx.github.io 的库: 把看中了的 Jekyll 模板 clone 到本地: 把这个模板 pu ...

  6. 转:探讨android更新UI的几种方法

    本文转自:http://www.cnblogs.com/wenjiang/p/3180324.html 作为IT新手,总以为只要有时间,有精力,什么东西都能做出来.这种念头我也有过,但很快就熄灭了,因 ...

  7. html》meta标签笔记

    meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...

  8. phpmailer{群发并且发送附件}

    PHPMailer是一个用于发送电子邮件的PHP函数包. 第一,需要下载PHPMailer文件包phpmailer. http://phpmailer.sourceforge.net/     第二, ...

  9. Burp Suite Walkthrough

    Burp Suite is one of the best tools available for web application testing. Its wide variety of featu ...

  10. var 的用法

    var 的用法相当于定义一个变量为局部的,如果在函数内部用 var 定义一个变量,函数执行结果后,该变量就消失,如果在函数内部不用 var 声明,则变量是全局的,在函数外部也可以用该变量. var a ...