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

dw网站制作素材重庆市建设厅网站

dw网站制作素材,重庆市建设厅网站,赣州网红打卡地,旅游网站建设的目的与意义是什么题目链接 题面 题目描述 在2016年#xff0c;佳媛姐姐喜欢上了数字序列。因而他经常研究关于序列的一些奇奇怪怪的问题#xff0c;现在他在研究一个难题#xff0c;需要你来帮助他。这个难题是这样子的#xff1a;给出一个1到n的全排列#xff0c;现在对这个全排列序列进行…题目链接 题面 题目描述 在2016年佳媛姐姐喜欢上了数字序列。因而他经常研究关于序列的一些奇奇怪怪的问题现在他在研究一个难题需要你来帮助他。这个难题是这样子的给出一个1到n的全排列现在对这个全排列序列进行m次局部排序排序分为两种 1:(0,l,r)表示将区间[l,r]的数字升序排序 2:(1,l,r)表示将区间[l,r]的数字降序排序最后询问第q位置上的数字。 输入输出格式 输入格式 输入数据的第一行为两个整数n和m。n表示序列的长度m表示局部排序的次数。 1 n, m 10^5第二行为n个整数表示1到n的一个全排列。接下来输入m行每一行有三个整数op, l, r, op为0代表升序排序op为1代表降序排序, l, r 表示排序的区间。 最后输入一个整数qq表示排序完之后询问的位置, 1 q n。1 n 10^51 m 10^5 输出格式 输出数据仅有一行一个整数表示按照顺序将全部的部分排序结束后第q位置上的数字。 题解 这道题好有趣 正解居然是二分答案 因为最后要询问的只有一个位置所以直接二分这个位置上的数。 然后修改一下原数组——原数组中比二分的答案大的数都改为1, 小于等于的都改为0。 然后用线段树模拟整个排序过程。把一个01序列的区间排序是很简单的——数出区间内有多少个1, 然后如果是顺序排序把右面对应的几个改成1, 剩下的改成0。 模拟执行一遍之后就可以知道实际上排完序后询问位置上的数应该比你二分的答案大还是小了继续二分即可。 #include cstdio #include cstring #include cmath #include algorithm #include iostream #include vector #define space putchar( ) #define enter putchar(\n) typedef long long ll; using namespace std; template class T void read(T x){char c;bool op 0;while(c getchar(), c 0 || c 9)if(c -) op 1;x c - 0;while(c getchar(), c 0 c 9)x x * 10 c - 0;if(op) x -x; } template class T void write(T x){if(x 0) putchar(-), x -x;if(x 10) write(x / 10);putchar(0 x % 10); }const int N 100005; int n, m, a[N], val[N], pos, op[N], ql[N], qr[N]; int data[4*N]; bool lazy[4*N], tag[4*N];void build(int k, int l, int r){tag[k] 0;if(l r) return (void)(data[k] val[l]);int mid (l r) 1;build(k 1, l, mid);build(k 1 | 1, mid 1, r);data[k] data[k 1] data[k 1 | 1]; } void pushdown(int k, int l, int r){if(!tag[k]) return;int mid (l r) 1;data[k 1] lazy[k] * (mid - l 1);data[k 1 | 1] lazy[k] * (r - mid);lazy[k 1] lazy[k 1 | 1] lazy[k];tag[k 1] tag[k 1 | 1] 1;tag[k] 0; } void change(int k, int l, int r, int ql, int qr, int x){if(ql l qr r) return (void)(data[k] x * (r - l 1), lazy[k] x, tag[k] 1);pushdown(k, l, r);int mid (l r) 1;if(ql mid) change(k 1, l, mid, ql, qr, x);if(qr mid) change(k 1 | 1, mid 1, r, ql, qr, x);data[k] data[k 1] data[k 1 | 1]; } int query(int k, int l, int r, int ql, int qr){if(ql l qr r) return data[k];pushdown(k, l, r);int mid (l r) 1, ret 0;if(ql mid) ret query(k 1, l, mid, ql, qr);if(qr mid) ret query(k 1 | 1, mid 1, r, ql, qr);return ret; }int main(){read(n), read(m);for(int i 1; i n; i) read(a[i]);for(int i 1; i m; i)read(op[i]), read(ql[i]), read(qr[i]);read(pos);int l 1, r n, mid;while(l r){mid (l r) 1;for(int i 1; i n; i)val[i] a[i] mid;build(1, 1, n);for(int i 1; i m; i){int cnt query(1, 1, n, ql[i], qr[i]);if(op[i]){if(cnt) change(1, 1, n, ql[i], ql[i] cnt - 1, 1);if(ql[i] cnt qr[i]) change(1, 1, n, ql[i] cnt, qr[i], 0);}else{if(cnt) change(1, 1, n, qr[i] - cnt 1, qr[i], 1);if(qr[i] - cnt ql[i]) change(1, 1, n, ql[i], qr[i] - cnt, 0);}}if(query(1, 1, n, pos, pos)) l mid 1;else r mid;}write(l), enter;return 0; } 转载于:https://www.cnblogs.com/RabbitHu/p/BZOJ4552.html
http://www.zqtcl.cn/news/687608/

相关文章:

  • 深圳网站开发制作安徽全网优化
  • 陕西建设局网站appcms程序怎么做网站
  • 石家庄城乡建设厅网站牡丹江百度推广
  • 网站建设源代码 费用事件网站推广
  • 购物网站开发文献综述潮汕网站建设
  • 做五金生意什么网站做比较好网站建设市场规模
  • 网站跟app的区别是什么网络搭建结构图
  • 淘宝网站怎么做视频教程山西推广型网站开发
  • 杭州开发网站2018主流网站建设语言
  • 杂志社网站建设方案书响应式网站服务
  • 青岛网站开发建设农村建设有限公司网站
  • 做水晶接单在哪个网站接php做购物网站怎么样
  • 网站内部结构优化网页设计网站搭建
  • 杭州公司建设网站网络营销是一种什么营销
  • 事业单位网站建设费科目定西市小企业网站建设
  • 温州网站推广哪家好网站开发所遵循的
  • 没有网站做APP公司logo设计公司logo设计
  • 网站建设在哪个软件下做中国最大的现货交易平台
  • 西宁做网站公司电话加强局网站建设
  • 佛山做企业网站公司做贸易做个外贸网站有必要吗
  • 南昌制作网站的公司wordpress 分享到插件
  • 大型网站怎样做优化PHP站长工具怎么用
  • 响应式模板网站建设营销型网站建设怎么收费
  • 夺宝网站开发全网seo优化电话
  • 宁夏建设工程招标投标信息管理中心网站广告多的网站
  • c 网站做死循环北京响应式的网站设计
  • 手机门户网站建设莱芜雪野湖国际会议中心酒店
  • 男人女人做那事网站vue加wordpress
  • 古色古香 网站模板西安企业黄页网站
  • 上海企业网站怎么建设交互设计网站有哪些