http://community.topcoder.com/stat?c=problem_statement&pm=13628&rd=16278

标程是BFS,我用DFS,都可解。

这里复杂的把pair写了hash函数,其实直接用个矩阵来存bool就可以了。

#include <vector>
#include <algorithm>
#include <unordered_set>
#include <utility> using namespace std; struct pairhash {
public:
template <typename T, typename U>
std::size_t operator()(const std::pair<T, U> &x) const
{
return std::hash<T>()(x.first) * 37 ^ std::hash<U>()(x.second);
}
}; class TheGridDivTwo {
public:
unordered_set<pair<int, int>, pairhash> visited;
unordered_set<pair<int, int>, pairhash> block; int find(vector <int> x, vector <int> y, int k) {
for (int i = 0; i < x.size(); i++) {
block.insert(make_pair(x[i], y[i]));
}
int result = 0;
pair<int, int> start = make_pair(0, 0);
findRe(result, start, k, 0);
return result;
} void findRe(int &result, pair<int, int> &p, int k, int step) {
visited.insert(p);
if (step == k) {
result = max(result, p.first);
} else {
int dx[4] = {1, 0, 0, -1};
int dy[4] = {0, 1, -1, 0};
for (int i = 0; i < 4; i++) {
pair<int, int> tmp = make_pair(p.first + dx[i], p.second + dy[i]);
if (tmp.first + k - step > result && valid(tmp)) {
findRe(result, tmp, k, step + 1);
}
}
}
visited.erase(p);
} bool valid(pair<int, int> &p) {
if (block.find(p) != block.end() || visited.find(p) != visited.end()) {
return false;
}
return true;
} };

  

[topcoder]TheGridDivTwo的更多相关文章

  1. TopCoder kawigiEdit插件配置

    kawigiEdit插件可以提高 TopCoder编译,提交效率,可以管理保存每次SRM的代码. kawigiEdit下载地址:http://code.google.com/p/kawigiedit/ ...

  2. 记第一次TopCoder, 练习SRM 583 div2 250

    今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...

  3. TopCoder比赛总结表

    TopCoder                        250                              500                                 ...

  4. Topcoder几例C++字符串应用

    本文写于9月初,是利用Topcoder准备应聘时的机试环节临时补习的C++的一部分内容.签约之后,没有再进行练习,此文暂告一段落. 换句话说,就是本文太监了,一直做草稿看着别扭,删掉又觉得可惜,索性发 ...

  5. TopCoder

    在TopCoder下载好luncher,网址:https://www.topcoder.com/community/competitive%20programming/ 选择launch web ar ...

  6. TopCoder SRM 596 DIV 1 250

    body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...

  7. 求拓扑排序的数量,例题 topcoder srm 654 div2 500

    周赛时遇到的一道比较有意思的题目: Problem Statement      There are N rooms in Maki's new house. The rooms are number ...

  8. TopCoder SRM 590

     第一次做TC,不太习惯,各种调试,只做了一题...... Problem Statement     Fox Ciel is going to play Gomoku with her friend ...

  9. Topcoder Arena插件配置和训练指南

    一. Arena插件配置 1. 下载Arena 指针:http://community.topcoder.com/tc?module=MyHome 左边Competitions->Algorit ...

随机推荐

  1. maven 项目 配置docker镜像生成(dockerfile-maven-plugin)

    插件地址:https://github.com/spotify/dockerfile-maven 依github上备注,只要在项目根上录上编写dockerfile,然后引用插件即可 编写Dockerf ...

  2. react 拆分组件于组件

    Todolist.js(这是父组件) import React, { Component,Fragment } from 'react'; import './style.css'; import T ...

  3. 树莓派使用 HLS 实现视频流直播

    说明 这次介绍一下基于上一篇文章"树莓派编译安装 FFmpeg "的应用,即 HLS 视频流直播.原理是 FFmpeg 将 USB 摄像头的原始视频流压缩为 H.264 视频流,然 ...

  4. java 柱状图、折线图、饼状图

    1.绘制柱状图: //BarChartTool工具类代码 package GUIview; import HibernateTool.HibernateTools; import ProductCla ...

  5. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_元数据

    1.元数据简介 全称:metadata 属性:数据表集合 产地:面向 CLR 的编译器在托管模块中生成 2.元数据内部结构及与托管模块的关系 [概述] 托管模块中包含着元数据,元数据是由一组数据表组成 ...

  6. 关于django的模板层

    你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datet ...

  7. Spring boot的热部署

    当把配置文件,比如yml也打到jar包后,如何修改配置,而又不用重新发布呢? 在jar包同一目录下,放置Application.yml (注意,不管jar包内是否此文件名)修改配置文件后,重新启动ja ...

  8. IntelliJ Save Action

    https://blog.csdn.net/hustzw07/article/details/82824713

  9. jQuery form插件的使用--ajaxForm()和ajaxSubmit()

    转载:https://blog.csdn.net/qq_38602656/article/details/78668924

  10. thinkphp控制器的使用

    控制器的使用 2.1url如何调用控制器 以典型的URL为例  http://localhost/shop/index.php/home/index/test /*home/controller/in ...