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

【第几小 / 分块】

题目

代码

#include <bits/stdc++.h>
using namespace std;const int N = 1e5+10;int a[N];
int br[N], bl[N], id[N], bcnt, L;
vector<int> bs[1010];int main()
{int n;cin >> n;for(int i = 1; i <= n; i++)cin >> a[i];L = sqrt(n + 1);for(int i = 1; i <= n; i += L) //只保证了左边界不越界{bcnt++;bl[bcnt] = i;br[bcnt] = min(i + L - 1, n); //这是分块最容易错误的点,就是没有考虑右边界越界for(int j = bl[bcnt]; j <= br[bcnt]; j++)bs[bcnt].push_back(a[j]), id[j] = bcnt; //想直接用下标访问未初始化的向量,需要resize}for(int i = 1; i <= bcnt; i++)sort(bs[i].begin(), bs[i].end());int m;cin >> m;for(int i = 1; i <= m; i++){int op;cin >> op;if(op == 1){int x, y;cin >> x >> y;int t = a[x];a[x] = y;int bid = id[x];auto it = lower_bound(bs[bid].begin(), bs[bid].end(), t);*it = y;sort(bs[bid].begin(), bs[bid].end());}else if(op == 2){int l, r, p;cin >> l >> r >> p;int cnt = 0;if(id[l] == id[r]){for(int j = l; j <= r; j++)if(a[j] < a[p]) cnt++;}else{for(int j = id[l] + 1; j < id[r]; j++){auto it = lower_bound(bs[j].begin(), bs[j].end(), a[p]);if(it == bs[j].end()) cnt += br[j] - bl[j] + 1;else cnt += (it - bs[j].begin());}for(int j = l; j <= br[id[l]]; j++)if(a[j] < a[p]) cnt++;for(int j = bl[id[r]]; j <= r; j++)if(a[j] < a[p]) cnt++;}cout << cnt + 1 << ' ';}}
}

http://www.dtcms.com/a/447746.html

相关文章:

  • 做网站 视频外链智慧团建注册志愿者入口
  • 书生浦语实战营第六期L1-G1000
  • 做网站得基础自适应 网站
  • 厦门网站建设外贸官方网站数据如何做脚注
  • 设计公司网站推广营销wordpress 阿里云虚拟主机
  • 做汽配找哪个网站好抖音分销系统开发
  • 发布网站后备案广西腾达建设集团有限公司网站
  • 上海市城市建设管理局网站网站降权恢复
  • 网站开发工程师 课程大纲服务号开发
  • 黑客怎么入侵网站ipad做网站服务器
  • 网站制作实验报告怎样做网络推广方案服务
  • 辛集建设局网站网站优化加盟
  • 建设网站需要哪些人海口模板建站定制
  • 创建网站的代码wordpress 心情评论插件
  • 网站敏感关键词.txt什么叫做优化
  • 手机投资网站网站备案审核要多久
  • 未经网安备案开设网站的最专业的外贸网站建设
  • 南昌专门做网站的公司网站建设征求意见表
  • 自贡建设能源开发有限公司网站河池网站优化
  • 周口网站建设公司免费的简历模板
  • 北京网站排名宝安网站推广平台
  • 简单网站制作软件wdcp 修改默认网站
  • 芜湖网站建设全包仅需800元青岛做公司网站的多吗
  • 中文wordpress网站模板wordpress the7 中文
  • 智慧旅游网站开发与设计专做淘宝的网站
  • 网站开发维护人员学校网站
  • 淄博网站制作哪家好个人建站流程详解
  • asp做网站计数器网站建设项目
  • 怎么做审核网站建设局网站投诉开发商
  • 网站可以用中国二字做抬头吗四川网络科技有限公司