2020年7月11日
摘要: 这道题是一个典型的区间选点问题。每一个房子代表一个要求,这个要求对应着一个左端点和右端点,以及一个要求的树数。它就相当于是给定一个区间,在这个区间内插入要求的点数。求的种数的最小数量即为总点数。 这样我们就可以将这个问题转化为一个区间选点问题并得出基本思路。 基本思路:种树要种得少,就要尽量让一棵树 阅读全文
posted @ 2020-07-11 16:32 郭谦 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 区间选点问题: 给定n个v闭区间[ai,bi],在数轴上选尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。 【思路点拨】 首先按照区间的结束位置从大到小排序。然后从区间1到区间n进行选择:对于当前区间,若集合中的数不能覆盖它,则将区间末位的数加入集合(对于每个集合取最后一个 阅读全文
posted @ 2020-07-11 11:35 郭谦 阅读(395) 评论(0) 推荐(0) 编辑
  2020年7月10日
摘要: 题面: 这道题很明显是一道数论的题目,涉及的内容主要为素数的问题。首先看数据范围,其实这道题的数据范围是很水的。因此在这里主要介绍2种方法。 法一,首先题目给出了给定区间右端点的最大值,因此我们对于每一个输入的l和r,要先进行判断其是否合法,只有合法的区间才能进一步处理。而合法的标准是右端点r<=m 阅读全文
posted @ 2020-07-10 16:50 郭谦 阅读(97) 评论(0) 推荐(0) 编辑
  2020年7月6日
摘要: 树状数组的一些基本操作。 树状数组支持单点修改和查询区间和的操作,但和线段树不同,它不支持区间修改操作(有些题目可以将区间修改转化为单点修改,有些则不可以)。下面介绍树状数组的预处理和基本操作。 1.求lowbit(n) 上一篇博客介绍了lowbit的定义和使用定义的基本求法。但是依据定义求lowb 阅读全文
posted @ 2020-07-06 10:09 郭谦 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 树状数组的原理是:任意一个数都能被一个独有的二进制数表示。基于此,对于一个区间[1,x],树状数组将其分解为logx个区间,从而快速询问区间和。 树状数组的每个子区间的共同特点是:若区间结尾为R,则区间长度就等于R的“二进制分解下”最小的2的次幂,设为lowbit(R)。 lowbit(R)表示的是 阅读全文
posted @ 2020-07-06 09:39 郭谦 阅读(139) 评论(0) 推荐(0) 编辑
  2020年7月5日
摘要: 一堆奇怪的东西。 #define fastcall __attribute__((optimize("-O3"))) #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC o 阅读全文
posted @ 2020-07-05 16:25 郭谦 阅读(1003) 评论(0) 推荐(0) 编辑
摘要: inline是什么?在c++中inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。 取代这种形式的原因如下: 1. C中使用define这种形式宏定义的原因是因为,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参 阅读全文
posted @ 2020-07-05 16:21 郭谦 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 快速读入的方法 快速读入是一种应对卡常和提高暴力算法的AC量的算法。它的原理是读入一个char类型的字符要快于读入一个int类型的数字。它可以满足一次性读入一个数字的操作。 下面是快速读入函数read()的代码: 1 inline int read(){ 2 int x=0,f=1;char ch= 阅读全文
posted @ 2020-07-05 15:47 郭谦 阅读(1000) 评论(1) 推荐(1) 编辑
  2020年6月30日
摘要: unique 去重 返回去重之后的指针,仍然为前闭后开,可计算出去重后的元素个数m。 把一个vector去重: int m=unique(a.begin(),a.end())-a.begin(); 把一个数组去重,元素存放在下标1~n: int m=unique(a+1,a+n+1)-(a+1); 阅读全文
posted @ 2020-06-30 16:59 郭谦 阅读(144) 评论(0) 推荐(1) 编辑
  2020年6月28日
摘要: next_permutation是C++ STL中的<algorithm>库里的一个函数。它的功能是计算一个数组的给定的第一个数到最后一个数按照字典序所得的下一个排列。如果这个排列存在,那么就return这个排列,否则就return一个bool值false。(相当于prev_permutation的 阅读全文
posted @ 2020-06-28 17:06 郭谦 阅读(141) 评论(0) 推荐(0) 编辑