RMQ(模板)(改)

来源:互联网 发布:电脑怎么摆脱网络控制 编辑:程序博客网 时间:2024/04/30 01:46
//d[i][j]表示的是从i开始长度为2^j次方的最小值void RMQ_init(){    for(int i=1; i<=n; i++) d[i][0]=sum[i];    for(int j=1; (1<<j)<=n; j++)        for(int i=1; i+(1<<j)-1<=n; i++)            d[i][j]=min(d[i][j-1],d[i+(1<<(j-1))][j-1]);}int RMQ(int L,int R){    int k=0;    while((1<<(k+1))<=R-L+1) k++;    return min(d[L][k],d[R-(1<<k)+1][k]);}

0 0
原创粉丝点击