下面给出这道一脸不可做的题的鬼畜性质:

1)对于一个点来说,其归属状态是确定的:走不到、A党或B党 。(黑白格染色)

方便起见,将包含所有不可达的点的极小矩形向外扩展一圈,设为矩形M。

2)矩形M的最外圈上相邻两点点到(0,0)的最短曼哈顿距离差值不超过1。

3)矩形M外任意正对于矩形M的点到垂直走向所正对的边必是到(0,0)的满足曼哈顿距离最小的路径的一条。

4)矩形M外任意非正对于矩形M到最靠近的M的一角必是到(0,0)的满足曼哈顿距离最小的路径的一条。

利用这些性质就可做了。。主要是向外扩展一圈这儿。。

然后就是找找规律的事儿了。。

#include <bits/stdc++.h>
#define P 1000
using namespace std;
const int fx[]={1,-1,0,0};
const int fy[]={0,0,1,-1}; int B,S;
long long cnt[2];
int dis[2005][2005];
int maxx,maxy,minx,miny;
queue<int> Qx,Qy; inline void f1(int x,int y) {
cnt[(x+y)&1]+=1LL*((S-dis[x][y])/2)*((S-dis[x][y])/2);
cnt[(x+y+1)&1]+=1LL*((S-dis[x][y]-1)/2)*((S-dis[x][y]-1)/2+1);
}
inline void f2(int x,int y) {
cnt[(x+y)&1]+=(S-dis[x][y])/2;
cnt[(x+y+1)&1]+=(S-dis[x][y]+1)/2;
} int main() {
scanf("%d%d",&B,&S);
minx=miny=maxx=maxy=P;
for(int x,y,i=1; i<=B; ++i) {
scanf("%d%d",&x,&y);
x+=P,y+=P;
dis[x][y]=-1;
minx=min(minx,x);
maxx=max(maxx,x);
miny=min(miny,y);
maxy=max(maxy,y);
}
S++;
minx--,miny--;
maxx++,maxy++;
Qx.push(P);
Qy.push(P);
dis[P][P]=1;
while(!Qx.empty()) {
int x=Qx.front(); Qx.pop();
int y=Qy.front(); Qy.pop();
if((x==minx||x==maxx) && (y==miny||y==maxy)) f1(x,y);
if((x==minx||x==maxx)) f2(x,y);
if((y==miny||y==maxy)) f2(x,y);
cnt[(x+y)&1]++;
if(dis[x][y]==S) continue;
for(int nx,ny,k=0; k<4; ++k) {
nx=x+fx[k];
ny=y+fy[k];
if(nx<minx||ny<miny||nx>maxx||ny>maxy||dis[nx][ny]) continue;
dis[nx][ny]=dis[x][y]+1;
Qx.push(nx);
Qy.push(ny);
}
}
printf("%lld %lld\n",cnt[0],cnt[1]);
return 0;
}

[COI2007] Sabor的更多相关文章

  1. 洛谷 P1823 [COI2007] Patrik 音乐会的等待

    洛谷 P1823 [COI2007] Patrik 音乐会的等待 洛谷传送门 题目描述 N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A ...

  2. 洛谷 P1823 [COI2007] Patrik 音乐会的等待 题解

    P1823 [COI2007] Patrik 音乐会的等待 题目描述 N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相 ...

  3. 洛谷P1823 [COI2007] Patrik 音乐会的等待(单调栈+二分查找)

    洛谷P1823 [COI2007] Patrik 音乐会的等待(单调栈+二分查找) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1333275 这个题不是很 ...

  4. P4334 [COI2007] Policija

    P4334 [COI2007] Policija 题意 一个无重边的无向图,每次询问删掉一条边或删掉一个点后两个点是否联通. 思路 连通性问题,我们可以考虑使用广义圆方树解决. 对于删掉一个点的情况: ...

  5. P1823 [COI2007] Patrik 音乐会的等待 单调栈 洛谷luogu

    题目描述 N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见的. ...

  6. 【洛谷】【单调栈】P4333 [COI2007] Patrik

    --接上一篇题解,[洛谷][单调栈]P1823音乐会的等待 关于题目大意在上一篇题解里已经说清楚了,这里不再多阐述 想看题目->戳这里 [算法分析:] 在对元素a进行判断时,如果它与栈顶元素相等 ...

  7. 洛谷P1823 [COI2007] Patrik 音乐会的等待

    https://www.luogu.org/problemnew/show/P1823 自己只会一个log的 设取的人的位置分别是l,r(l<r) 这个做法大概是考虑枚举r,设法对于每个r求出有 ...

  8. [COI2007] Patrik 音乐会的等待 (单调栈,模拟)

    题目描述 N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见的. ...

  9. 洛谷 1823 [COI2007] Patrik 音乐会的等待

    [题解] 维护一个单调栈即可. 但是因为有相同身高的存在,所以要稍微考虑下相同身高的处理.因为这个卡了一下下QAQ... #include<cstdio> #include<algo ...

随机推荐

  1. 关于react的一些东西

    Facebook 官方推出Create-React-App脚手架,基本可以零配置搭建基于webpack的React开发环境,内置了热更新等功能. 使用的原因以及特性: 无需配置:集成了对 React, ...

  2. 探索未知种族之osg类生物---呼吸分解之更新循环二

    _scene->updateSceneGraph(*_updateVisitor); 我们用了前面4节才刚刚算是完成对DatabasePager::DatabaseThread::run()函数 ...

  3. 获取当前最顶层的ViewController

    - (UIViewController *)topViewController { UIViewController *resultVC; resultVC = [self _topViewContr ...

  4. python 06函数

    python中函数定义方法: def test(x): "The function definitions" x+=1 return x def:定义函数的关键字test:函数名( ...

  5. Python 多进程编程之multiprocessing--Process

    Python 多进程编程之multiprocessing 1,Process 跨平台的进程创建模块(multiprocessing), 支持跨平台:windowx/linux 创建和启动      创 ...

  6. JavaScript 高阶函数

    高阶函数的英文叫Higher-order function ,什么是高阶函数呢>? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接 ...

  7. centos7下载

    http://archive.kernel.org/centos-vault/7.0.1406/isos/x86_64/

  8. tensorflow学习之(一)预测一条直线y = 0.1x + 0.3

    #预测一条y = 0.1x + 0.3的直线 import tensorflow as tf import numpy as np #科学计算模块 ''' tf.random_normal([784, ...

  9. delphi 中的浮点数 (转载)

    原文地址 Floating point numbers — Sand or dirt Floating point numbers are like piles of sand; every time ...

  10. 剪格子 dfs 蓝桥杯

    问题描述 如下图所示,3  x  3  的格子中填写了一些整数. +--*--+--+ |10*  1|52| +--****--+ |20|30*  1| *******--+ |  1|  2|  ...