st

ST表解决RMQ问题

喜你入骨 提交于 2019-12-05 22:26:09
RMQ问题: RMQ(Range Minimum/Maximum Query),区间最值查询。对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。 RMQ问题可以用线段树和ST表解决。 线段树:查询复杂度O(log n) 可以修改数列中的值 ST表: 查询复杂度 O(1) 无法修改数列中的值,是在线算法 其实ST表就是个动态规划 对于dp[i][j] ,其含义为以i为起点,长度为2^j这个区间的最大值 转移方程就是把这个区间分成两个小区间的最大值。 https://www.luogu.com.cn/problem/P3865 https://www.cnblogs.com/zwfymqz/p/8581995.html #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int maxn = 1e6 + 5; int n,m; int dp[maxn][21]; int main() { scanf("%d%d",&n,&m); int num; for(int i=1;i<=n;i++) //初始化,区间长度为1

STM32中STD、HAL、LL库比较

孤街浪徒 提交于 2019-12-05 11:12:53
ST为开发者提供了标准外设库(STD库)、HAL库、LL库 三种。前两者都是常用的库,后面的LL库是ST新添加的,随HAL源码包一起提供,目前支持的芯片也偏少。 标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的ST库。几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。 HAL是Hardware Abstraction Layer的缩写,中文名:硬件抽象层。HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。该库提供了一整套一致的中间件组件,如RTOS,USB,TCP / IP和图形等。HAL库就是用来取代之前的标准外设库的,是ST未来主推的库,ST新出的芯片已经没有STD库了,比如F7系列。 LL库(Low Layer)是ST新增的库,与HAL捆绑发布,文档也是和HAL文档在一起的。LL库更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器。 具体参考: https://blog.csdn.net/zcshoucsdn/article/details/54613202 来源: https://www.cnblogs.com/kerwincui/p/11921932.html

AcWing 907. 区间覆盖

送分小仙女□ 提交于 2019-12-05 05:41:30
//1.将所有区间按照左端点从小到大排序 //2.从前往后依次枚举每个区间 //首先选择能够覆盖左端点的区间当中右端点最靠右的端点 //在所有能覆盖start的区间当中,选择右端点最大的区间 //选完之后将start更新成右端点的最大值 #include <iostream> #include <algorithm> using namespace std; const int N = 100010; int n; struct Range { int l, r; bool operator< (const Range &W)const { return l < W.l; } } range[N]; int main() { int st, ed; scanf("%d%d", &st, &ed); scanf("%d", &n); for (int i = 0; i < n; i ++ ) { int l, r; scanf("%d%d", &l, &r); range[i] = {l, r}; } sort(range, range + n); int res = 0; bool success = false; for (int i = 0; i < n; i ++ ) { int j = i, r = -2e9; //找所有左端点在start左边的区间右端点最大值是多少

python基础之三:int、bool、str

梦想与她 提交于 2019-12-05 02:50:51
一、数据类型之整型的函数使用 1 i = 3 2 print("该整型数字所占有效比特位的长度是:%d" % i.bit_length()) 3 print(i.to_bytes(8, "big")) 4 ''' 5 bit_length 6 1 0000 0001 1 7 2 0000 0010 2 8 3 0000 0011 2 9 ''' 二、数据类型之布尔型   True Fasle 三、数据类型之间的转换 1 # 数据类型之布尔型 True Fasle 2 # 各种数据类型之间的转换 3 ''' 4 一、整型转字符型 5 无特殊条件,整型都可以转换为字符型,直接用引号即可,也可以使用str()函数 6 ''' 7 i = 22 8 print(str(i)) 9 10 ''' 11 二、字符型转整型 12 条件是,字符中只能是数字,否者报错! 13 ''' 14 str_num = "1234" 15 print(int(str_num)) 16 17 ''' 18 三、整型转布尔型 19 规则是,非0全转为True,0转为False 20 ''' 21 print(bool(-1)) 22 23 ''' 24 四、布尔型转整型 25 规则是:True会转为1,False转为0 26 ps:高效率使用1 27 比如在死循环中: 28 while True: 29 pass

利用golang的反射包,实现根据函数名自动调用函数。

我怕爱的太早我们不能终老 提交于 2019-12-05 01:02:11
package main import "fmt" import "reflect" import "encoding/xml" type st struct{ } func (this *st)Echo(){ fmt.Println("echo()") } func (this *st)Echo2(){ fmt.Println("echo--------------------()") } var xmlstr string=`<root> <func>Echo</func> <func>Echo2</func> </root>` type st2 struct{ E []string `xml:"func"` } func main() { s2 := st2{} xml.Unmarshal([]byte(xmlstr), &s2) s := &st{} v := reflect.ValueOf(s) v.MethodByName(s2.E[1]).Call(nil) } 利用golang的反射包,实现根据函数名自动调用函数。 来源: CSDN 作者: rufidmx 链接: https://blog.csdn.net/rufidmx/article/details/18226649

模板 - 数据结构 - 线段树/SegmentTree

牧云@^-^@ 提交于 2019-12-04 18:19:48
struct SegmentTree { #define ls (o<<1) #define rs (o<<1|1) static const int MAXN = 100000; ll a[MAXN + 5]; ll st[(MAXN << 2) + 5]; void PushUp(int o) { st[o] = st[ls] + st[rs]; } void Build(int o, int l, int r) { if(l == r) st[o] = a[l]; else { int m = l + r >> 1; Build(ls, l, m); Build(rs, m + 1, r); PushUp(o); } lazy[o] = 0; } void Update(int o, int l, int r, int p, ll v) { if(l == r) { st[o] += v; return; } else { int m = l + r >> 1; if(p <= m) Update(ls, l, m, p, v); if(p >= m + 1) Update(rs, m + 1, r, p, v); PushUp(o); } } ll Query(int o, int l, int r, int ql, int qr) { if(ql <= l && r <=

[PLC]ST语言八:ADD_SUB_MUL_DIV_INC_DEC_WAND_WOR_WXOR_NE

空扰寡人 提交于 2019-12-04 17:58:35
一:ADD_SUB_MUL_DIV_INC_DEC_WAND_WOR_WXOR_NEG 说明: 简单的顺控指令不做其他说明。 控制要求 :无 编程梯形图: 执行程序主程序梯形图和对应的局部变量 执行程序主程序ST语言和对应的局部变量 FB块梯形图程序和对应的局部变量 FB块ST语言和对应的局部变量 结构化编程ST语言 (图片中的源码) : FB块调用的ST语言 (*ST语言调用四则运算的FB块的方法,其中除法运算中商和余数包含了结构体和数组的使用方法*) ST四则逻辑运算_1(智慧工控_ST_加数1:= ST_加数1 , 智慧工控_ST_加数2:= ST_加数2 , 智慧工控_ST_加结果1:=ST_加结果1 , 智慧工控_ST_调用加法:= ST_调用加法 , 智慧工控_ST_减数1:=ST_减数1 , 智慧工控_ST_减数2:=ST_减数2 , 智慧工控_ST_减结果1:=ST_减结果1 , 智慧工控_ST_调用减法:=ST_调用减法 , 智慧工控_ST_乘数1:=ST_乘数1 , 智慧工控_ST_乘数2:=ST_乘数2 , 智慧工控_ST_乘结果1:=ST_乘结果1 , 智慧工控_ST_调用乘法:=ST_调用乘法 , 智慧工控_ST_除数1:= ST_除数1 , 智慧工控_ST_除数2:=ST_除数2 , 智慧工控_ST_调用除法:=ST_调用除法 , 智慧工控_ST

洛谷P2680 运输计划

雨燕双飞 提交于 2019-12-04 11:48:11
传送门 二分所求的答案w,找出所有长度大于w的路径,用差分标记到树上。dfs一遍整棵树,找出所有标记在树上的路径的最长公共边,如果最长的一条路径减去这条边小于等于w,则w是满足题意的答案之一。 预处理每条路径的长度和两端点的lca。 复杂度n*log(最长路径),注意常数。 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=300010,M=300010; int n,m,ans,num,maxx,sum; int ver[2*N],Next[2*N],head[N],edge[2*N],tot; int tag[N]; struct node{ int x,y,lon,lca; }s[M]; int read(){ char ch=getchar(); int val=0; for(;(ch<'0')||(ch>'9');ch=getchar()); for(;(ch>='0')&&(ch<='9');val=val*10+ch-'0',ch=getchar()); return val; } void add(int x,int y,int z){ ver[++tot]=y; Next[tot]=head[x];

ST表

若如初见. 提交于 2019-12-04 10:36:18
ST表 可以用来静态求解RMQ问题 预处理 \(O(n\ log \ n)\) 查询 \(O(1)\) void pre_st() { for(int j=1;j<=20;j++) for(int i=1;i+(i<<j)-1<=n;i++) st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]); } void pre_log() { log[0]=-1; for(int i=1;i<=MXA;i++) log[i]=log[i>>1]+1; } int query(int l,int r) { int t=log[r-l+1]; return max(st[l][t],st[r-(1<<t)+1][t]); //两个区间有交集 但是并不影响查询的结果 } 来源: https://www.cnblogs.com/nenT/p/11855258.html

【MySQL】各种小坑-持续更新

蹲街弑〆低调 提交于 2019-12-04 08:46:24
中文乱码问题 在建表的时候额外执行 ALTER TABLE camera CONVERT TO CHARACTER SET utf8;  如果还是不行注意看一下precision,为2的时候容易出现??这样,需要重新执行一次ALTER操作。 排序问题 order by的那一列如果有多个相同的值,安这列进行排序的时候不会按照原来的顺序维持这些行的顺序,因此既需要order by某列又需要保持值相同的行维持原序的时候需要再order by id一次。 关于多个字段排序的问题可以参考 多字段排序 注意优先级高的字段要放在前面,例如 SELECT * FROM students st ORDER BY st.sAge ASC, st.sGrade DESC, st.sStuId DESC; 会按照age先排序,age相同按照grade排序,grade再相同按照id排序。 来源: https://www.cnblogs.com/Ryan16231112/p/11849448.html