12 2021 档案

摘要:给定n个线段 求最少设立多少个点 能够让每个线段上都有一个点 在左端点建立,维护右边界 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define ll 阅读全文
posted @ 2021-12-30 16:34 __iostream 阅读(35) 评论(0) 推荐(0) 编辑
摘要:2. 畜栏预定 给定n个线段 每个位置可以存一个线段 最少多少个位置存现段让各个线段不存在交集 int main() { n=read(); q.push( (Node){0x3f3f3f3f,0} ); for(rint i=1;i<=n;i++) p[i].l=read(),p[i].r=rea 阅读全文
posted @ 2021-12-30 16:32 __iostream 阅读(43) 评论(0) 推荐(0) 编辑
摘要:1. 防晒 给定若干个线段和若干个点 让每个点属于一个线段的匹配数目最大 贪心策略 按照左端点降序排序,每次选取能够用的中间最大的 如果是按照左端点升序排列,那么可能会出现下面线段包住上面线段的情况 我们要求的策略是: 对于当前线段内的每一个点 要么只有当前线段能用 要么两个都可以用 bool cm 阅读全文
posted @ 2021-12-30 16:31 __iostream 阅读(28) 评论(0) 推荐(0) 编辑
摘要:定义一个序列的价值为序列中m对数的差的平方的和的最大值 给定一个序列 求把这个序列至少分成多少段,才能保证每一段的价值都不超过T 首先可以想到是答案具有单调性 二分答案 但是不好检验 所以我们需要换思路 根据排序不等式,这个值是将这个数组后排序后每次取最大的和最小的来累加答案 再经过分析可以发现 我 阅读全文
posted @ 2021-12-30 15:08 __iostream 阅读(33) 评论(0) 推荐(0) 编辑
摘要:普通平衡树: 支持的操作是: 序列中插入或删除价值为x的数 查询价值为x的排名 或者排名对应的价值 查询价值的前驱后继 #include <iostream> #include <cstdio> #include <cstring> #include <ctime> #include <cstdli 阅读全文
posted @ 2021-12-29 18:53 __iostream 阅读(20) 评论(0) 推荐(0) 编辑
摘要:求n个矩形的面积并 思路构成: 我们要维护两个两: 一个是区间的覆盖次数 第二个是题目中所要求查询的答案 答案依赖于区间覆盖次数 因此可以考虑到在更新次数的时候更新答案 首先 我们最直观的思路是在线段树上维护两个标记: cnt[x] 表示这个区间的出现次数 ret[x] 表示所查询的结果 思路经历了 阅读全文
posted @ 2021-12-28 21:09 __iostream 阅读(16) 评论(0) 推荐(0) 编辑
摘要:void build(int x,int l,int r) { int mid=(l+r)>>1; mul[x]=1; sum[x]=0; if(l==r){ sum[x]=a[l]; return;} build(x2,l,mid); build(x2+1,mid+1,r); sum[x]=sum 阅读全文
posted @ 2021-12-28 20:46 __iostream 阅读(182) 评论(0) 推荐(0) 编辑
摘要:1. scanf 空白字符: 指的是空格、回车和制表符 基本原理: 从缓冲区读入字符 对于整数和字符串:忽略前面的空白字符 读入后不读入空白字符 默认以空白字符作为各变量之间的分割 对于字符:没有分割 空白字符会被读入 2. 字符串 任何封装好的函数传入的是一个指针 指针默认指向0 如果要从1开始读 阅读全文
posted @ 2021-12-28 20:13 __iostream 阅读(37) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示