当前位置: 首页 > news >正文

国际交友网站怎么建设/建立网站的步骤

国际交友网站怎么建设,建立网站的步骤,网站流量渠道,有哪些免费做简历的网站莫队算法是由清华大学神牛莫涛发明的一种处理区间问题的离线算法 算法核心是通过先将问询区间总长度平方分块、然后将所有的问询区间按照左端点所在的块编号排序、在同一块内的则按右端点升序 然后设置左右两个下标指针、每次都移动两个指针指向问询块的左右端点、在移动的过程…

莫队算法是由清华大学神牛莫涛发明的一种处理区间问题的离线算法

算法核心是通过先将问询区间总长度平方分块、然后将所有的问询区间按照左端点所在的块编号排序、在同一块内的则按右端点升序

然后设置左右两个下标指针、每次都移动两个指针指向问询块的左右端点、在移动的过程中不断维护答案。

可以证明原本只通过两个下标指针移动来处理问询的方法最坏可达 O(N*Q) 经过莫队算法排序后可降为 O((N+Q)*sqrt(N))

所以莫队算法其实就是排个序

当然经过我粗略的概述肯定是无法讲清楚的,这里给出几个链接方便参考和学习此算法

莫队算法还是莫队算法当然还是莫队算法

 

一些题目

BZOJ Mato的文件管理

分析 :

对于每个区间、实际就是查询区间逆序对的个数。

看到数据范围和不强制在线考虑使用莫队算法解决、先确定分块长度然后对所有问询进行离线排序、关键在于怎么更新。

更新算法和指针左右移动密切相关,指针的移动可以看成从 左/右 添加或者删除一个数,那么这就很好做了

在左边添加一个数、比这个数小的都贡献了一个逆序对、加上

在右边添加一个数、比这个数大的都贡献了一个逆序对、加上

在左边删除一个数、原本比这个数小的都贡献了一个逆序对、减去

在右边删除一个数、原本比这个数大的都贡献了一个逆序对、减去

注意一下左右指针移动的时候是先指针移动再更新还是先更新再移动

#include<bits/stdc++.h>
#define lowbit(i) (i & (-i))
using namespace std;
const int maxn = 1e5 + 10;
struct QUERY{int L, R, Len, id;bool operator < (const QUERY &rhs) const{if((L/Len) == (rhs.L/rhs.Len)) return R < rhs.R;else return (L/Len) < (rhs.L/rhs.Len);};
}Q[maxn]; int ans[maxn];int arr[maxn], N;
int uni[maxn], uniLen;int Bit[maxn];inline void BitAdd(int i, int val)
{while(i <= N){Bit[i] += val;i += lowbit(i);}
}int BitSum(int i)
{if(i == 0) return 0;int ret = 0;while(i > 0){ret += Bit[i];i -= lowbit(i);}return ret;
}int GetVal(int i)
{int ret = lower_bound(uni, uni+uniLen, arr[i]) - uni;return ++ret;
}int main(void)
{scanf("%d", &N);for(int i=0; i<N; i++) scanf("%d", &arr[i]), uni[i] = arr[i];sort(uni, uni+N);///题目貌似没说每个元素的大小,干脆离散化好了uniLen = unique(uni, uni+N) - uni;int qNum, sqrt_N = (int)sqrt(N);scanf("%d", &qNum);for(int i=0; i<qNum; i++){scanf("%d %d", &Q[i].L, &Q[i].R);Q[i].Len = sqrt_N;Q[i].id = i;}sort(Q, Q+qNum);int val, curL, curR, CurAns = 0;curL = 1, curR = 0;for(int i=0; i<qNum; i++){///在左边添加一个数、比这个数小的都贡献了一个逆序对、加上while(curL > Q[i].L){curL--;val = GetVal(curL-1);BitAdd(val, 1);CurAns += BitSum(val-1);}///在右边添加一个数、比这个数大的都贡献了一个逆序对、加上while(curR < Q[i].R){curR++;val = GetVal(curR-1);BitAdd(val, 1);CurAns += curR - curL - BitSum(val-1);}///在左边删除一个数、原本比这个数小的都贡献了一个逆序对、减去while(curL < Q[i].L){val = GetVal(curL-1);BitAdd(val, -1);CurAns -= BitSum(val-1);curL++;}///在右边删除一个数、原本比这个数大的都贡献了一个逆序对、减去while(curR > Q[i].R){val = GetVal(curR-1);BitAdd(val, -1);CurAns -= curR - curL - BitSum(val-1);curR--;}ans[Q[i].id] = CurAns;}for(int i=0; i<qNum; i++) printf("%d\n", ans[i]);return 0;
}
View Code

 

转载于:https://www.cnblogs.com/LiHior/p/9136661.html

http://www.lbrq.cn/news/1565839.html

相关文章:

  • 网站制作top/山东seo优化
  • 做外贸的网站有那些/资源网站优化排名软件公司
  • 肇庆网站建设制作公司/女性广告
  • 怎么做网站推广六安/北京疫情最新新闻
  • 仓山网站建设/网站首页快速收录
  • 现在还做自适应网站/你对网络营销的理解
  • 网站建设与网页设计总结/职业培训机构资质
  • 住房和城乡建设厅网站青海省/seo优化排名教程
  • 网站和网页不同吗/墨子学院seo
  • 高校后勤网站建设要求/今日热搜榜前十名
  • wordpress主页定制/seo排名优化软件价格
  • 合肥哪里有建站公司/百度下载安装到桌面
  • wordpress无法使用api/seo北京网站推广
  • 网站域名备案资料/目前最好的引流推广方法
  • 怎么建设网站规划/千度seo
  • apache 创建网站/企业网站seo平台
  • seo流量/如何提高网站排名seo
  • 网站被别人域名绑定/中国十大电商平台
  • 贵州省建设厅网站造价工程信息网/怎么查百度竞价关键词价格
  • 为什么要建设个人网站/今日郑州头条最新新闻
  • 做文字图片的网站/seo优化专员编辑
  • 云南网站搭建/百度快照优化培训班
  • 男女第一次做网站爱/互联网项目推广平台有哪些
  • 网站 备案 注销/南宁正规的seo费用
  • 弹性web安装wordpress/seo教学网seo
  • wordpress评论详情页/seo 论坛
  • 新网$网站优化/福州网seo
  • 设计感强的网站/北京如何优化搜索引擎
  • 企业网站托管一个月多少钱/百度竞价托管外包
  • 古田网站建设/百度推广联系人
  • PostgreSQL——触发器
  • 微信公众号推送文字消息与模板消息
  • TWINCAT+COPLEY ethercat配置
  • HTML <link rel=“preload“>:提前加载关键资源的性能优化利器
  • nm命令和nm -D命令参数
  • [系统架构]系统架构基础知识(一)