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

打开网站的语音播报怎么做中核西北建设集团网站

打开网站的语音播报怎么做,中核西北建设集团网站,制作网页游戏平台,上杭县住房和城乡建设局网站HDU5737 题意 [1][1][1]有长度为nnn的序列A,BA,BA,B [2]Q[2]Q[2]Q此操作两种类型 (1,l,r,x)(1,l,r,x)(1,l,r,x)将区间[l,r][l,r][l,r]的aia_iai​覆盖为xxx(2,l,r)(2,l,r)(2,l,r)询问区间[l,r][l,r][l,r]中有多少ai≥bia_i \ge b_iai​≥bi​ 题解 考虑用线段树维护. 重点考…HDU5737 题意 [1][1][1]有长度为nnn的序列A,BA,BA,B [2]Q[2]Q[2]Q此操作两种类型 (1,l,r,x)(1,l,r,x)(1,l,r,x)将区间[l,r][l,r][l,r]的aia_iai​覆盖为xxx(2,l,r)(2,l,r)(2,l,r)询问区间[l,r][l,r][l,r]中有多少ai≥bia_i \ge b_iai​≥bi​ 题解 考虑用线段树维护. 重点考虑覆盖操作,当覆盖一个线段时,我们打上延迟修改标记(就是lazylazylazy标记). 但是当前线段的答案要立刻被计算出来,那么这里如何求呢? 其实就相当于找区间[l,r][l,r][l,r]中小于等于xxx的有多少个. 因此想到我们可以在线段树的每一个节点维护一个平衡树. 这样的话,空间复杂度是O(nlogn)O(nlogn)O(nlogn) 仅平衡树合并的时间复杂度就是O(nlogn2)O(nlogn^2)O(nlogn2),这个时间复杂度我们接受不了,因此我们要换一种能查询rankrankrank的数据结构,但是合并要快. 因此我们就想到了有序表,合并时候用归并排序即可,查找的时候使用lower_boundlower\_boundlower_bound即可. 空间复杂度是O(nlogn)O(nlogn)O(nlogn). 有序表合并的时间复杂度是O(nlogn)O(nlogn)O(nlogn),可以接受. 查询rankrankrank的时间复杂度为O(logn)O(logn)O(logn),而考虑如果修改时区间大小为n−1n-1n−1时,涉及到打lognlognlogn个覆盖标记,每打一个覆盖标记时候都要lognlognlogn时间复杂度来查rankrankrank,总的时间复杂度就是O(logn2)O(logn^2)O(logn2),那么询问的时间复杂度就是O(m∗logn∗logn)O(m*logn*logn)O(m∗logn∗logn),这是无法接受的. 因此我们考虑怎么优化这步操作. 如果我们能记录下来对于线段中的每个数xxx,在左线段中小于等于xxx的最大的位置和在右线段中小于等于xxx的最大位置,那么我们在changechangechange函数中,可以直接O(1)O(1)O(1)传递给儿子这个关键的位置. 这样总的时间复杂度就优化到了O(nlognmlogn)O(nlogn mlogn)O(nlognmlogn) 代码 #include iostream #include algorithm #include vector #include cstring #define pr(x) std::cout #x : x std::endl #define rep(i,a,b) for(int i a;i b;i) #define clr(x) memset(x,0,sizeof(x)) #define setinf(x) memset(x,0x3f,sizeof(x))const int N 100007; const int P 1e97;struct node{int ans,tag,len;node(int ans 0,int tag -1,int len 1):ans(ans),tag(tag),len(len){} }ns[N2],NIL;std::vectorint vec[N2],lft[N2],rgt[N2];int a[N],b[N];inline node maintain(node lch,node rch) {node res node(lch.ans rch.ans,-1,lch.len rch.len);return res; }inline void tag(int o,int val){ns[o].ans val;ns[o].tag val; }inline void pushdown(int o) {if(ns[o].tag ! -1) {if(ns[o].tag 0){tag(o1,0);tag(o1|1,0);}else {tag(o1,lft[o][ns[o].tag-1]);tag(o1|1,rgt[o][ns[o].tag-1]);}ns[o].tag -1;} }inline void merge(int o){int posl 0,posr 0;while(posl vec[o1].size() || posr vec[o1|1].size()) {if(posl vec[o1].size()) vec[o].push_back(vec[o1|1][posr]);else if(posr vec[o1|1].size()) vec[o].push_back(vec[o1][posl]);else {if(vec[o1][posl] vec[o1|1][posr])vec[o].push_back(vec[o1][posl]);else vec[o].push_back(vec[o1|1][posr]);}}posl posr 0;rep(i,0,vec[o].size()-1) {while(posl vec[o1].size() vec[o1][posl] vec[o][i])posl;while(posr vec[o1|1].size() vec[o1|1][posr] vec[o][i])posr;lft[o].push_back(posl);rgt[o].push_back(posr);} }inline void build(int o,int l,int r) {if(l r) {vec[o].push_back(b[l]);ns[o] node(a[l] b[l],-1,1);return ;}int mid (l r) 1;build(o1,l,mid);build(o1|1,mid1,r);ns[o] maintain(ns[o1],ns[o1|1]);merge(o); }inline void change(int o,int l,int r,int cl,int cr,int val) {if(cl l r cr) {//val std::upper_bound(vec[o].begin(),vec[o].end(),val) - vec[o].begin();tag(o,val);return ;}if(r cl || cr l) return ;int mid (l r) 1;pushdown(o);change(o1,l,mid,cl,cr,val?lft[o][val-1]:0);change(o1|1,mid1,r,cl,cr,val?rgt[o][val-1]:0);ns[o] maintain(ns[o1],ns[o1|1]); }inline node query(int o,int l,int r,int ql,int qr) {if(ql l r qr) return ns[o];if(r ql || qr l)return NIL;int mid (l r) 1;pushdown(o);node lch query(o1,l,mid,ql,qr);node rch query(o1|1,mid1,r,ql,qr);return maintain(lch,rch); } int T,n,m,A,B;int aa,bb,C,M,last; inline int rnd(int last) {aa (36969 (last 3)) * (aa M) (aa 16);bb (18000 (last 3)) * (bb M) (bb 16);return (C ((aa 16) bb)) % 1000000000; }inline void clear(int o,int l,int r){if(l r) {vec[o].clear(); lft[o].clear(); rgt[o].clear(); return ;}clear(o1,l,(lr)1);clear(o1|1,((lr)1)1,r);vec[o].clear();lft[o].clear();rgt[o].clear(); } int main() {std::ios::sync_with_stdio(false);std::cin T;while(T--) {std::cin n m A B;long long ans 0;aa A,bb B,C ~(131), M (116)-1, last 0;rep(i,1,n) std::cin a[i];rep(i,1,n)std::cin b[i];build(1,1,n);rep(i,1,m) {int l (rnd(last) % n) 1,r (rnd(last) % n) 1,x rnd(last) 1;if(l r) std::swap(l,r);int tp (lrx)%2 0 ? 2:1;if(tp 1){x upper_bound(vec[1].begin(),vec[1].end(),x) - vec[1].begin();change(1,1,n,l,r,x);}else if(tp 2){node res query(1,1,n,l,r);ans ans 1LL * i * res.ans;last res.ans;}}std::cout ans % P std::endl;clear(1,1,n);}return 0; }
http://www.zqtcl.cn/news/513604/

相关文章:

  • 做效果图有哪些网站seo怎么做关键词排名
  • 深圳手机网站开发什么网站可以做英语题
  • 网站优化什么意思图片展示网站
  • 建德做网站米趋外贸网站建设
  • 国外优秀的设计网站八爪鱼磁力搜索引擎
  • 网站建设优化陕西网络营销推广方法与策略
  • 网站建设推广者怎样找到客户百度seo排名帝搜软件
  • 绵阳网站托管网站建设第一品牌
  • 张家港网站建设培训班电商seo引流
  • 网站安全怎么做手机网站 焦点图
  • 阿里云做网站的代码网上申请入团网站
  • 精品课程网站怎么做建筑图纸符号大全解释
  • 高权重网站 内页做跳转给新网站许昌做网站公司哪家专业
  • 咸阳网站建设工作室网站建设经
  • 网站怎么做短信接口新浪wordpress
  • 方维o2o 2.9蓝色团购网站程序源码模板做一电影网站怎么赚钱
  • 口碑好网站建设资源新昌网站建设
  • 苏州做网站的公司排名泉州网络推广专员
  • 无为县做互联网网站备案的时候网站建设方案书要吗
  • 修改网站的备案主体dede网站地图不显示文章列表
  • 建立个人网站的成本织梦html5手机网站模板
  • 怎么自己建一个网站吗php网页设计培训
  • 深圳大型论坛网站建设wordpress国内加速
  • 仿站怎么做广告装饰公司名字
  • 黄冈网站推广收费标准wordpress导航页面设置密码
  • 做网站会犯法吗贵州省建设厅城乡建设网站
  • 做网站和做公众号资金盘网站怎么建设
  • 全国最好的网站建设案例推广方法视频
  • 嘉兴网站建设策划方案在海口注册公司需要什么条件
  • 旅游网站国际业务怎样做建设企业官方网站企业登录