氵题解

初步审题,很容易就能想到枚举每条鱼,找到能钓到这一条鱼的渔夫最靠左与最靠右的渔夫的位置,直接枚举,时间复杂度为O(n^2)

但对于线性的枚举很容易就可以想到排序+二分

由于蒟蒻不会重载运算符,所以手打排序

基本思路确定了,那么怎样确定能钓到每一条鱼的渔夫最靠左与最靠右的渔夫的位置

由此,我们可以推出 若鱼的坐标为 (x , y),则可以钓到第i条鱼的渔夫最左边可能在 x ±\pm± (l-y)

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=2*1e5;
struct node {int x,y;
} fish[maxn+5];//鱼的位置
int ans[maxn+5],num[maxn+5],c[maxn+5],fisher[maxn+5];
//num[i]表示实际位置为i的点是当前在num[i] , c[i]表示i点实际编号为c[i]
//fisher表示每一个渔夫的位置
inline void rd(int &rex) {//读优 rex=0;char c=getchar();while(c<'0'||c>'9')c=getchar();while(c>='0'&&c<='9')rex=rex*10+c-'0',c=getchar();
}
void swap(int &x,int &y) {//交换 int t=x;x=y,y=t;
}
void qsort(int l,int r) {//手写快排 int i=l,j=r,mid=fisher[(l+r)/2],p;while(i<=j) {while(fisher[i]<mid)i++;while(fisher[j]>mid)j--;if(i<=j) {swap(fisher[i],fisher[j]);swap(c[i],c[j]);i++,j--;}}if(l<j)qsort(l,j);if(i<r)qsort(i,r);
}
int main() {int n,m,l;rd(n);rd(m);rd(l);for(int i=1; i<=n; i++) {rd(fish[i].x);rd(fish[i].y);}for(int i=1; i<=m; i++)rd(fisher[i]),c[i]=i;qsort(1,m);//使渔夫的位置单调递增,满足二分的条件 for(int i=1; i<=n; i++) {if(fish[i].y>l)continue;int head=-(l-fish[i].y)+fish[i].x,tail=l-fish[i].y+fish[i].x;head=lower_bound(fisher+1,fisher+1+m,head)-fisher;tail=upper_bound(fisher+1,fisher+1+m,tail)-fisher;ans[head]++,ans[tail]--;}for(int i=1; i<=m; i++)ans[i]+=ans[i-1],num[c[i]]=i;for(int i=1; i<=m; i++)printf("%d\n",ans[num[i]]);return 0;
}

luogu P5867 【[SEERC2018]Fishermen】相关推荐

  1. luogu P1199 【三国游戏】

    首先很明显这是一道贪心题. 贪心方法很多dalao已经写出来了,找每个武将次大值最大的武将. 呢么我们定义一个数组\(f[N][2]\) , 其中\(f[i][0]\)用来储存第\(i\)个武将的次大 ...

  2. luogu P1037 【产生数】

    貌似都是用佛洛依德写的,我就来个\(DFS\)搜索的方法吧. 首先通过字符串读入来读入这个数字. 然后对每一位数字进行\(DFS\),每搜索到一个数字计数器加一.最后根据分步计算原理,将每位数可扩展的 ...

  3. Luogu P1160 【队列安排】

    详细的链表讲解 很明显的一个链表裸题 和普通的链表有一个区别就是这个题 可以O(1)插入,O(1)查询 然后我们为了方便,采用双向链表,定义s.f作为指针数组 更详细的解释见代码 #include&l ...

  4. Luogu P1525 【关押罪犯】

    跟P1892团伙的做法类似. 除了用数组保存敌人编号之外,还有另一种做法. 团伙:合并时,用i节点表示为友,i+n结点表示为敌. 本题:合并时,用i节点表示同一监狱,i+n结点表示不同监狱. 按边权从 ...

  5. luogu P3808 【模板】AC自动机(简单版)

    二次联通门 : luogu P3808 [模板]AC自动机(简单版) /*luogu P3808 [模板]AC自动机(简单版)手速越来越快了10分钟一个AC自动机一遍过编译 + 一边AC感觉不错我也就 ...

  6. UOJ #131 BZOJ 4199 luogu P2178【NOI2015】品酒大会 (后缀自动机、树形DP)

    UOJ #131 BZOJ 4199 luogu P2178[NOI2015]品酒大会 (后缀自动机.树形DP) 水是水,但是写出了不少问题,因此写一发博客. https://www.luogu.or ...

  7. luogu P6178 【模板】Matrix-Tree 定理

    luogu P6178 [模板]Matrix-Tree 定理 1.无向图 假设现在给定一个图 G. 度数矩阵D:若存在边$ (x,y,z)(x,y,z)$ ,则 D[x][x]+=z;D[y][y]+ ...

  8. Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)

    Luogu 1941 [NOIP2014]飞扬的小鸟 (动态规划) Description Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度 ...

  9. Luogu 1315 【NOIP2011】观光公交 (贪心)

    Luogu 1315 [NOIP2011]观光公交 (贪心) Description 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供 ...

  10. Luogu 3371【模板】单源最短路径

    Luogu 3371[模板]单源最短路径 第一次写博客用图论题来试一试 接下来是正文部分 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包 ...

最新文章

  1. mongodb集合的增删
  2. linux_unix系统编程手册源代码编译
  3. 大学阶段总结——大三
  4. Mac OS使用技巧十八:Safari碉堡功能之一制作Widget
  5. Android自定义RadioButton
  6. C++:fseek( FILE *stream, long offset, int origin )
  7. Shell脚本:Linux下定时备份MySQL数据库
  8. Lua的协程和协程库详解
  9. Adobe AI软件解决界面字体过小的方法
  10. 用Java做一个及时翻译工具
  11. springboot 整合springsecurity
  12. 公众号获取token失败_如何利用公众号获取电影引流?如何利用电影网站嫁接公众号?...
  13. Java注解中produces啥意思_SpringBoot常用注解
  14. 中国移动盘古搜索开创全新服务模式
  15. 推荐一个不错的新浪微博应用--独到科技
  16. 微信公众号运营都有哪些实用小技巧,你学会了吗
  17. 红米note10和红米note10pro的区别
  18. 用DIV+CSS技术设计的网页与实现制作【体育文化】dreamweaver学生网页设计
  19. html 使用iframe引入视频但无法全屏播放,问题解决
  20. 如何用代码实现手机接收动态验证码

热门文章

  1. 通过requests获取网络上图片的大小
  2. HTB-Unified
  3. U盘打不开的常见原因有哪些?
  4. 【Android Jetpack】彻底弄清Navigation的BackStack如何变化
  5. 张国荣一生57部电影海报全集
  6. java计算两个时间差的方法_java计算两个时间相差天数的方法汇总
  7. IP协议(IP协议报头、MTU、网段划分、NAT技术、路由的工作过程)
  8. 浅谈使用postman的CryptoJS.MD5加密带有中文(已进行unicode编码)以及url的字符串与md5在线加密工具加密不一致的原因,附加解决方法。
  9. 个人关于PAT的认识心得和体会
  10. 驾照科目一/科目四 知识点