离散化

离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。
通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:
原数据:1,999,100000,15;处理后:1,3,4,2;
原数据:{100,200},{20,50000},{1,400};
处理后:{3,4},{2,6},{1,5};

Gym 101964E Fishermen



题意:
求每个渔民的鱼竿能钓到多少鱼,渔民都在x轴上,且每个渔民位置一定不同,在其他点上有鱼(一个点可能有好几条鱼),若渔民坐标(x,0),鱼坐标(a,b),鱼竿长为l,当且仅当满足 |a − x| + b <= l时,这条鱼能被渔夫捕到.
分析:
求每条鱼对渔民的贡献,据鱼的坐标我们可以求出,有哪几个渔夫可以捕到这条鱼,对这些渔夫能捕的鱼加1,由于这些渔夫一定是连续的,相当于对一个区间加一,我们可以利用差分,最后跑一边前缀和即可求出在每个点上人能捕到的鱼。
但是,据数据范围渔夫坐标最大1e9,然而渔夫总是只有2e5,所以,我们考虑离散化。
AC代码:

#include <bits/stdc++.h>using namespace std;int n, m, l;
int x[200050], y[200050];
int d[200050];
int ans[200050];
int ar[200050];
int le, ri;
struct node
{int x, id;bool operator < (const node &b) const{return x < b.x;}
}br[200050];
node xx;int main()
{scanf("%d%d%d", &n, &m, &l);for(int i = 1; i <= n; ++i) scanf("%d%d", &x[i], &y[i]);for(int i = 1; i <= m; ++i){scanf("%d", &ar[i]);br[i].x = ar[i];br[i].id = i;}sort(br + 1, br + m + 1);for(int i = 1; i <= n; ++i){if(y[i] > l) continue;xx.x = x[i] - (l - y[i]);le = lower_bound(br + 1, br + m + 1, xx) - br;if(le > m) continue;xx.x = x[i] + (l - y[i]);ri = upper_bound(br + 1, br + m + 1, xx) - br;++d[le];--d[ri];}for(int i = 1; i <= m; ++i){d[i] += d[i - 1];ans[br[i].id] = d[i];}for(int i = 1; i <= m; ++i) printf("%d\n", ans[i]);return 0;
}/*
8 4 4
7 2
3 3
4 5
5 1
2 2
1 4
8 4
9 4
6 1 4 9
*/

在结构体里二分查找

1.写operator
2.二分函数第三个参数要是一个结构体

离散化另一题

离散化 Gym 101964E Fishermen相关推荐

  1. Gym - 100519 B Bring Your Own Bombs 离散化+二分+思维

    题目链接:https://vjudge.net/contest/370255#problem/B 我们考虑每一行每一列会爆炸的概率是多少  显然 对于会爆炸的每一行 位于该行的矩形的长都会爆炸  对于 ...

  2. 强化学习gym的使用之mountaincar的训练

    gym地址 该任务是让小车跑到右侧的山顶,但是小车力不够它直接冲上去,需要让它左右荡到山顶. 在它的源文件中可以找到相关信息: Observation:Type: Box(2)Num Observat ...

  3. 强化学习gym的使用之Pendulum的训练

    地址 该任务是杆起始位置随机,让它荡到顶头并保持. 首先测试环境 def run_test():env = gym.make('Pendulum-v0') action = [0]observatio ...

  4. H - Parity game-poj1733(需要离散化)

    题意:给一个序列这个序列都是由0和1组成,现在随意拿出来一个序列,然后说出他的和是奇数还是偶数,因为有可能存在假话,让你判断前多少条没有假话,也就是查找第一个假话的位置-1 // 这道题很像D题,都是 ...

  5. usaco Picture(离散化求线段周长)

    usac前面有一题是递归求矩形覆盖面积的,学到不少东西 离散化 把所有矩形离散化(就是将整个平面分成许多"竖条"或"横条",对其操作),每个矩形都由四条边组成, ...

  6. 线性连续时间状态空间模型的离散化及实例

    线性连续时间状态空间模型的离散化(Discretization of Linear Continuous-Time State-Space Models) 1 .状态空间模型 非线性连续时间状态空间模 ...

  7. 强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例

    强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例 1. 引言 在这个部分补充之前马尔科夫决策和动态规划部分的代码.在以后的内容我会把相关代码都附到相关内容的后面.本部 ...

  8. Gym - 102082G

    Gym - 102082G https://vjudge.net/problem/2198225/origin 对于数列中任意一个数,要么从最左边到它不递减,要么从最右边到到它不递减,为了满足这个条件 ...

  9. HDU 6229 Wandering Robots 找规律+离散化

    题目链接:Wandering Robots 题解:先讲一下规律,对于每一个格子它可以从多少个地方来有一个值(可以从自己到自己),然后答案就是统计合法格子上的数与所有格子的数的比值 比如说样例的3 0格 ...

  10. 安装gym库_强化学习Gym库学习实践(一)

    最近看了一篇研究方向相关的文章,介绍了一种DQN的应用,感觉还挺新鲜的.想着把这篇文章复现出来,就开始学习强化学习的相关知识,作为一名小白,这一路走的可是真的十分艰难(我太菜了啊!) 看了莫烦Pyth ...

最新文章

  1. vue/require-v-for-key]Elements in iteration expect to have ‘v-bind:key‘ directives
  2. 未来数据中心的选择:宽带多模光纤
  3. 基金委新规:填写论文成果,不再标注通讯和一作!影响有多大?
  4. error LNK1112错误: 模块计算机类型“x64”与目标计算机类型“X86”冲突
  5. 解析ArcFace源码
  6. error: passing ‘const xxx’ as ‘this’ argument discards qualifiers c++primer 5th文本查询程序一个错误请各位指教(已解决)
  7. Oracle INTERVAL
  8. ZooKeeper 3.4.5 分布式环境搭建
  9. PHP高级——抽象类与接口的区别(转)
  10. 上传文件的漏洞复现与修复
  11. 【论文解读】深度学习目标检测 | R-CNN系列里程碑 | 一文弄懂Faster R-CNN
  12. 文件转换和操作的一些在线网页
  13. w ndows7旗舰版怎么重装系统,windows7旗舰版iso怎么安装
  14. mysql otl变量绑定_OTL翻译(5) -- otl_stream流相关绑定变量
  15. Mysql数据库管理
  16. 环签名原理与隐私保护
  17. 小米强制淘汰老破小,苹果华为带了好头
  18. js中call()与apply()方法
  19. 19年程序员薪酬报告:平均年薪超70万,40岁后普遍遭遇收入天花板
  20. Java学习简单画椭圆

热门文章

  1. 因为迁移,所以出卖(1)
  2. gin结合endless实现热更新
  3. selenium tbody表单获取封装函数
  4. Linux查询IP失败
  5. 【BZOJ1269/1507】[AHOI2006]文本编辑器editor Splay
  6. 对接支付宝、微信、第三方支付,超详细讲解+demo演示
  7. 来自一个大三开学三周的huster的迷茫与失措
  8. 软件测试周刊(第08期):大过节的
  9. 领扣LintCode算法问题答案-1485. 圣杯咒语
  10. 关于win11右键的慢问题的建议