安徽师大附中%你赛day9 T2 富 解题报告
富
题目背景
出于某些原因, 苟先生在追杀富先生。
题目描述
富先生所在的地方是一个\(n\times m\)的网格,苟先生排出了他的狼狗大军,共有\(k\)条狗,第\(i\)条狗所在的位置为\((x_i, y_i)\)。每条狗每个时刻都可以向\(8\)个方向前进一步。
如果一个格子最快的一条狗需要\(t\)时刻才能到,那么这个格子就是\(t\)-危险的,现在给你\(t\),询问有多少个\(t\)-危险的格子。
输入输出格式
输入格式
第一行四个整数\(n,m,k,t\)。
接下来\(k\)行每行两个整数\(x_i,y_i\),没有两条狗在同一个位置。
输出格式
一行一个整数表示答案。
说明
对于\(30\%\)的数据\(n,m\le 1000\);
对于另外\(20\%\)的数据\(k\le 50,n\le 1000\);
对于另外\(20\%\)的数据\(k\le 50\);
对于\(100\%\)的数据\(k\le 2000, n, m\le 1000000000, 0\le t\le n+m\)。
据老与蒟蒻我的区别
我:
现在19:26 感受一下。。
据老:
据老花了据他所说是一个小时(事实上大概不到40分钟
他第一次交数组开小了
正题
题目要求我们求正方形的外层一圈且不可以在其他正方形的边边上,我们可以转化成求两次面积并做差,一次是\(t*2+1\)边长的,一次是\(t*2-1\)边长的,模拟一下是为什么
然后就是扫描线求面积并了
注意到我们由坐标转换成了格子,所以我们把删除线的坐标右移一位
还有一点就是扫描线本身,因为我们把区间放到了点(作为区间的左端点),所以修改时如果是区间\([l,r]\),则线段树进\([l,r-1]\)
Code:
#include <cstdio>
#include <algorithm>
#include <cstring>
#define ll long long
using namespace std;
const ll N=4e3+10;
ll px[N],py[N],n,m,k;
struct node
{
ll x,up,dow,k;
bool friend operator <(node n1,node n2)
{
return n1.x==n2.x?n1.k<n2.k:n1.x<n2.x;
}
}line[N];
ll sum[N<<2],is[N<<2],fy[N],y[N];
#define ls id<<1
#define rs id<<1|1
void updata(ll id,ll l,ll r)
{
sum[id]=is[id]?y[r+1]-y[l]:sum[ls]+sum[rs];
}
void change(ll id,ll l,ll r,ll L,ll R,ll delta)
{
if(l==L&&r==R)
{
is[id]+=delta;
updata(id,l,r);
return;
}
ll Mid=L+R>>1;
if(r<=Mid) change(ls,l,r,L,Mid,delta);
else if(l>Mid) change(rs,l,r,Mid+1,R,delta);
else change(ls,l,Mid,L,Mid,delta),change(rs,Mid+1,r,Mid+1,R,delta);
updata(id,L,R);
}
ll matrix_s(ll t)
{
memset(sum,0,sizeof(sum)),memset(is,0,sizeof(is));
ll cnt=0,ans=0;
for(ll i=1;i<=k;i++)
{
y[++cnt]=max(1ll,py[i]-t),y[++cnt]=min(m+1,py[i]+t+1);
line[cnt-1]={max(1ll,px[i]-t),y[cnt-1],y[cnt],1};
line[cnt]={min(n+1,px[i]+t+1),y[cnt-1],y[cnt],-1};
}
sort(y+1,y+cnt+1),sort(line+1,line+cnt+1);
cnt=unique(y+1,y+cnt+1)-(y+1);
for(ll l,r,i=1;i<k<<1;i++)
{
l=lower_bound(y+1,y+1+cnt,line[i].up)-y;
r=lower_bound(y+1,y+1+cnt,line[i].dow)-y-1;
change(1,l,r,1,cnt,line[i].k);
ans+=sum[1]*(line[i+1].x-line[i].x);
}
return ans;
}
int main()
{
ll t;
scanf("%lld%lld%lld%lld",&n,&m,&k,&t);
for(ll i=1;i<=k;i++) scanf("%lld%lld",px+i,py+i);
printf("%lld\n",matrix_s(t)-matrix_s(t-1));
return 0;
}
2018.8.31
安徽师大附中%你赛day9 T2 富 解题报告的更多相关文章
- 安徽师大附中%你赛day9 T3 贵 解题报告
贵 问题描述 苟先生的狼狗大军没有追上富先生, 所以他把它们都解雇了, 决定去雇佣一些更好的狗, 不过狗可是很贵的.苟先生有 \(w\) 元钱, 有 \(n\) 条狗可以雇佣, 第 \(i\) 条狗有 ...
- 安徽师大附中%你赛day7 T2 乘积 解题报告
乘积 题目背景 \(\mathrm{Smart}\) 最近在潜心研究数学, 他发现了一类很有趣的数字, 叫做无平方因子数. 也就是这一类数字不能够被任意一个质数的平方整除, 比如\(6\).\(7\) ...
- 安徽师大附中%你赛day3T1 怜香惜玉 解题报告
怜香惜玉 题意: 已知 \(f(x)=\frac{2 \times \sum_{(i,x)=1}^x i}{φ(x)}\) 先给定数据组数\(t\)和\(k\) 每组数据给出\(n\),求\(\sum ...
- 安徽师大附中%你赛day2T3 巧克力 解题报告
巧克力 题目描述 小\(T\)有\(N\)块巧克力, 每块巧克力上都有一句话(由小写英文字母组成,不含标点) .现在每块巧克力都断成了若干截,更糟糕的是,有一些碎片丢失了 ,但是剩下的碎片之间的顺序是 ...
- 安徽师大附中%你赛day6 T3 Hamsters [POI2010]CHO-Hamsters 解题报告
[POI2010]CHO-Hamsters 题意: 给出n个互不包含的字符串,要求你求出一个最短的字符串S,使得这n个字符串在S中总共至少出现m次,问S最短是多少? 范围: \(1 \le n \le ...
- 安徽师大附中%你赛day5 T3 树上行走 解题报告
树上行走 题目背景 \(\mathrm{Smart}\) 的脑洞非常大, 经常幻想出一些奇怪的东西. 题目描述 某一天,\(\mathrm{Smart}\) 幻想出了一棵没有边际的二叉树,脑补着在那棵 ...
- 安徽师大附中%你赛day4T2 演讲解题报告
演讲 题目背景: 众所周知,\(\mathrm{Zdrcl}\)是一名天天\(\mathrm{AK}\)的高水平选手. 作为一民长者,为了向大家讲述自己\(\mathrm{AK}\)的经验,他决定在一 ...
- 安徽师大附中%你赛day4T1 金字塔 解题报告
金字塔 题目背景: \(Zdrcl\)带着妹子们来到了胡夫金字塔周边旅游, 发现这里正在进行一个有关金字塔的游戏 题目描述: 游戏规则如下: 1. 这里的金字塔是一个 \(N\) 阶的二维金字塔. 2 ...
- 「2018-12-02模拟赛」T2 种树 解题报告
2.种树(tree.pas/cpp/in/out) 问题描述: Fanvree 很聪明,解决难题时他总会把问题简单化. 例如,他就整天喜欢把图转化为树.但是他不会缩环,那他怎么转化呢? 这是一个有 n ...
随机推荐
- linux 热替换so文件
http://www.zhaoch.top/操作系统/linux/热替换so文件.html 热替换so文件 www.zhaoch.top > 操作系统 > linux 发现nginx的动态 ...
- [JSOI2007] 建筑抢修 (贪心 + 优先队列)
小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会 ...
- 洛谷P4016 负载平衡问题
题目描述 G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入输出格式 输入格式: ...
- 集合--数据结构与算法JavaScript描述(9)
集合 Set 概念 (跟高中时数学课上学的集合几乎一模一样哦哈哈) 集合是一种包含不同元素的数据结构. 集合中的元素称为成员. 集合的两个最重要的特性: 集合中的成员是无序的. 集合中不允许相同成员存 ...
- hoj第三场G-manhattanp ositioning system
---恢复内容开始--- 一.题意 在二维坐标系内,给定若干个点和目标点距离该点的曼哈顿距离,求是否存在唯一解使得目标点坐标为整数. 二.题解 重新思考题目模型,考虑曼哈顿距离一定时,几何含义为,以给 ...
- bootstrap重新设计checkbox样式
文章采集于: https://www.cnblogs.com/GumpYan/p/7845445.html#undefined 在原文基础上修改了勾勾的内容,直接采用bootstrap字体库.修改了横 ...
- win10 java环境变量配置
首先,你应该已经安装了 Java 的 JDK 了(如果没有安装JDK,请跳转到此网址:http://www.oracle.com/technetwork/java/javase/downloads/i ...
- jsp 路径问题和环境路径以及各种路径总结
首先确定问题: 浏览器发送请求后,服务器会返回一个响应,但是返回的网页中,会有各种路径问题,所以在此用jsp中的属性来解决.(只是记录问题,用了不专业的术语,请见谅.) 总结: 以路径 http:/ ...
- 再见NullPointerException。在Kotlin里null的处理(KAD 19)
作者:Antonio Leiva 时间:Apr 4, 2017 原文链接:https://antonioleiva.com/nullity-kotlin/ 关于Kotlin最重要的部分之一:无效处理, ...
- jmeter+ant的使用
1.安装ant 下载ant,解压到某盘 2.配置环境变量: 变量名称 变量值 备注 ANT_HOME F:\apache-ant-1.10.3 Ant的解压路径 Path %ANT_HOME%\bin ...