这个题好像很有趣的样子。

题目分析:

  1. 房间都是 $1\times k$ 的,也就是一条一条的。这个好像比较显然的样子。
  2. 一个房间如果要覆盖某个格子$u$,那么这个房间的面积至少为 $dis(u, Boundry)$,即其到边界的距离,这个好像也比较显然的样子。
  3. 于是答案至少是 $max\{dis(u, Boundry)\}$,然后可以通过构造来取到最小值,即答案就是$max\{dis(u, Boundry)\}$。

算法流程:

  1. 特判:如果输入的是一个边长为一个奇数的正方形,且 $(x,y)$ 恰好是正方形的中心,那么答案为 $\frac{n-1}{2}$。
  2. 初始化:因为答案至少是 $\lfloor\frac{min(n,m)+1}{2}\rfloor$(考虑最中心的格子),故令答案初始化为这个东西。
  3. 更新答案:然后我们只需要找 $(x,y)$ 旁边的四个格子,计算其到边界的距离,然后和初始答案取最大值就是最终答案了。

一些细节:

  1. 枚举 $(x,y)$ 的相邻的格子的时候,要注意一下这个格子是否合法。
  2. 怎么计算 $dis(u, Boundry)$ 呢?直接枚举拓展的方向,看要走多少步才能到达边界,取其最小步数。
  3. 计算距离的时候要注意只能从三个方向拓展,有一个方向会经过 $(x,y)$,是走不动的。

时间复杂度:$O(T)$,空间复杂度:$O(1)$。

 #include <cstdio>
#include <algorithm>
using namespace std; const int Fx[][] = {{, }, {-, }, {, }, {, -}};
int n, m, x, y; inline int Calc(int tx, int ty, int k)
{
int Min = min(n, m);
for (int i = ; i < ; i ++)
{
if (k == i) continue ;
if (i == ) Min = min(Min, n + - tx);
if (i == ) Min = min(Min, tx);
if (i == ) Min = min(Min, m + - ty);
if (i == ) Min = min(Min, ty);
}
return Min;
} inline int Solve()
{
if (n == m && (n & ) && x == y && (x * - == n))
return n - >> ;
int ans = min(n, m) + >> ;
for (int k = ; k < ; k ++)
{
int tx = x + Fx[k][], ty = y + Fx[k][];
if (tx && ty && tx <= n && ty <= m)
ans = max(ans, Calc(tx, ty, k ^ ));
}
return ans;
} int main()
{
while (scanf("%d%d%d%d", &n, &m, &x, &y) == )
printf("%d\n", Solve()); return ;
}

4302_Gromah

BZOJ 4302 Buildings 解题报告的更多相关文章

  1. BZOJ 2959: 长跑 解题报告

    2959: 长跑 Description 某校开展了同学们喜闻乐见的阳光长跑活动.为了能"为祖国健康工作五十年",同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑 ...

  2. BZOJ 4238 电压 解题报告

    BZOJ 4238 电压 考虑一条边成为答案以后,删去Ta后剩下的图是一个或很多个二分图,即没有奇环 则一条边可以成为答案,当且仅当自己在所有奇环的交上且不在偶环上. 考虑建出dfs树,那么返祖边一定 ...

  3. BZOJ 3159: 决战 解题报告

    BZOJ 3159: 决战 1 sec 512MB 题意: 给你一颗\(n\)个点,初始点权为\(0\)的有跟树,要求支持 Increase x y w 将路径\(x\)到\(y\)所有点点权加上\( ...

  4. BZOJ 3328: PYXFIB 解题报告

    BZOJ 3328: PYXFIB 题意 给定\(n,p,k(1\le n\le 10^{18},1\le k\le 20000,1\le p\le 10^9,p \ is \ prime,k|(p- ...

  5. BZOJ 3160 万径人踪灭 解题报告

    这个题感觉很神呀.将 FFT 和 Manacher 有机结合在了一起. 首先我们不管那个 “不能连续” 的条件,那么我们就可以求出有多少对字母关于某一条直线对称,然后记 $T_i$ 为关于直线 $i$ ...

  6. BZOJ 4127 Abs 解题报告

    这个题感觉很厉害的样子.. 首先我们注意到一点:每次加的 $d$ 都是非负的. 那么就说明一个数只可能从负数变成非负数并且只会变一次. 所以我们就可以暴力地去改变一个数的正负情况. 然后我们就可以用树 ...

  7. BZOJ 3953 Self-Assembly 解题报告

    首先,我们可以先考虑一个暴力一点的算法: 对于任意两个分子,如果它们能以至少一种进行匹配,那么我们就在这两个分子之间连一条边. 然后如果我们能找到一个环,就说明是 unbounded,否则就是 bou ...

  8. BZOJ 3956 Count 解题报告

    好点对的个数是\(O(n)\)的,而且我们可以 \(O(n)\) 地求出所有好点对. 我们把这些点对以右端点为关键字从小到大排序,再弄个扫描线,每次把右端点在扫描线上的点对的左端点加入线段树,于是我们 ...

  9. BZOJ 3944 Sum 解题报告

    我们考虑令: \[F_n = \sum_{d|n}\varphi(d)\] 那么,有: \[\sum_{i=1}^{n}F_i = \sum_{i=1}^{n}\sum_{d|i}\varphi(d) ...

随机推荐

  1. ASP.NET C# 文件下载

    1.文件下载到客户端 //WriteFile实现下载 protected void Download_Click(object sender, EventArgs e) { string fileNa ...

  2. 网络HTTP、JSON、XML解析等 复习

    一.一个HTTP请求的基本要素1.请求URL:客户端通过哪个路径找到服务器 2.请求参数:客户端发送给服务器的数据* 比如登录时需要发送的用户名和密码 3.返回结果:服务器返回给客户端的数据* 一般是 ...

  3. 8个超炫酷的纯CSS3动画及源码分享

    在现代网页中,我们已经越来越习惯使用大量的CSS3元素,而现在的浏览器也基本都支持CSS3,所以很多时候我们不妨思考一下是否可以用纯CSS3制作一些有趣或者实用的网页.本文要分享8个超炫酷的纯CSS3 ...

  4. AutoEventWireup="false"

    在 Web 服务器控件中,某些事件(通常是 Click 事件)会导致窗体被回发到服务器.HTML 服务器控件和 Web 服务器控件(如 TextBox 控件)中的更改事件将被捕获,但不会立即导致发送. ...

  5. Mongodb 级联删除查询操作

    ObjRelationPojo表一条记录 public class YpObjRelationPojo implements Serializable { @Id private String id; ...

  6. Scrapy源码学习(二)

    上次说到scrapy_home/scrapy/commands包下每个模块对应了scrapy命令行中的一个命令,他们都继承自command.py模块中ScrapyCommand这个类,这次就来简单看一 ...

  7. Waring:This LinearLayout layout or its FrameLayout parent is useless; transfer the background attribute to the other view

    解决方法请参考: You have a single component (row) vertical linear layout, containing another linear layout. ...

  8. openerp模块收藏 auto_setup 自动帮你完成建新库时必做几个操作(转载)

    auto_setup 自动帮你完成建新库时必做几个操作 原文:http://shine-it.net/index.php/topic,6777.0.html 模块地址: https://github. ...

  9. 自定义一个WPF的PathButton

    一.背景 做项目时总是少不了Button,但是普通的Button大家都不喜欢用,总是想要自定义的Button,正好项目中用到不要边框的Button,并且是形状也是根据功能不同而变化的,并且窗口程序是会 ...

  10. 记一次Surface Pro 2还原操作

    因为要做Azure的一个case,对自己的域环境下直接进行了捕获.结果导致机器直接crash. 重启后使用本地账号登陆后发现所有Win 8 的App都无法使用,包括进入设置中还原方式也无法使用. 可以 ...