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

灵芝住房和城乡建设局局网站智能制造工程

灵芝住房和城乡建设局局网站,智能制造工程,郑州个人网站制作公司,二级网站建设管理制度给你一个长为 n n n 的序列#xff0c;每个位置是 A , B , C A,B,C A,B,C 三个中的一个物品。 A A A 吃 B B B#xff0c; B B B 吃 C C C#xff0c; C C C 吃 A A A。 现在有 m m m 次操作#xff0c;每次操作有两种#xff1a; 区间修改#xff1a;给出 l , r…给你一个长为 n n n 的序列每个位置是 A , B , C A,B,C A,B,C 三个中的一个物品。 A A A 吃 B B B B B B 吃 C C C C C C 吃 A A A。 现在有 m m m 次操作每次操作有两种 区间修改给出 l , r , x , y l,r,x,y l,r,x,y表示将 [ l , r ] [l,r] [l,r] 区间内所有的 x x x 改成 y y y所有的 y y y 改成 x x x两种修改同时进行。 区间询问给出 l , r , x l,r,x l,r,x现在沙奈朵一开始手上拿着的是一个 x x x 物品。沙奈朵从序列的 l l l 位置开始一路走到 r r r 位置结束每次他需要对比他手上的物品和当前序列位置的物品如果手上的物品可以吃掉当前序列位置的物品则手上的物品不变否则手上的物品变成当前序列位置的物品。区间询问操作对序列没有任何修改。 求走完了 [ l , r ] [l,r] [l,r] 这个区间后沙奈朵手上的物品是什么。对区间 [ l , r ] [l,r] [l,r] 中的每一个位置包括端点都需要执行操作。 n , m ≤ 2 × 1 0 5 n,m\le2\times10^5 n,m≤2×105 考虑用分块维护。由于有交换两种字母的操作那么对于每个就要维护三个字母所有置换 6 6 6 种。将 A B C , A C B , B A C , B C A , C A B , C B A ABC,ACB,BAC,BCA,CAB,CBA ABC,ACB,BAC,BCA,CAB,CBA 分别表示为 0 , 1 , 2 , 3 , 4 , 5 0,1,2,3,4,5 0,1,2,3,4,5将修改操作交换 A B , A C , B C AB,AC,BC AB,AC,BC 分别表示为 0 , 1 , 2 0,1,2 0,1,2记块长为 B B B 设 c x , y c_{x,y} cx,y​ 表示字母是 y y y经过置换 x x x 会变成的字母。 b x , y b_{x,y} bx,y​ 表示经过修改 y y y 后置换 x x x 会变成的置换。 t o i d , x , y to_{id,x,y} toid,x,y​ 表示第 i d id id 个块置换为 x x x开始是字母 y y y走完这个块后所变成的字母。 t i d t_{id} tid​ 表示第 i d id id 个块的置换。 显然 c , b c,b c,b 可以打表 t o to to 可以 O ( B ) O(B) O(B) 求出。 下面考虑维护。 修改。对于散块先更新所在的块的真实值然后直接修改再 O ( B ) O(B) O(B) 求出 t o i d to_{id} toid​对于整块就用 b b b 更改 t i d t_{id} tid​ 即可。查询。对于散块就直接暴力比对对于整块就用之前求出的 t o to to 更新答案。 时间复杂度 O ( n n ) O(n\sqrt n) O(nn ​)但是由于修改时对于散块的求 t o to to 的时间复杂度实际上要带上 18 18 18 的常数所以块长取 ⌈ n 18 ⌉ \sqrt{\lceil\frac n{18}\rceil} ⌈18n​⌉ ​ 比较合适。 具体实现参照代码 #includebits/stdc.h #define getnxt(now,x) (now(x1)%3?x:now) using namespace std; const int N2e51; int n,m,block,to[2000][6][3],t[2000]; int c[6][3]{{0,1,2},{0,2,1},{1,0,2},{1,2,0},{2,0,1},{2,1,0}}; int b[6][3]{{2,5,1},{3,4,0},{0,3,4},{1,2,5},{5,1,2},{4,0,3}}; char a[N]; void renew(int id) {int lid*block1,rmin(id*blockblock,n);for(int il;ir;i) a[i]c[t[id]][a[i]-65]65;t[id]0; } void update(int id) {int lid*block1,rmin(id*blockblock,n);for(int x0;x6;x){for(int y0;y3;y){to[id][x][y]y;for(int il;ir;i){to[id][x][y]getnxt(to[id][x][y],c[x][a[i]-65]);}}} } int main() {freopen(training.in,r,stdin);freopen(training.out,w,stdout);cin.tie(0)-sync_with_stdio(0);cinnm(a1);blocksqrt((n17)/18);for(int i0;i(nblock-1)/block;i) update(i);for(int i1,op,l,r;im;i){char x,y;cinoplrx;if(op){int minrmin((l-1)/block*blockblock,r),id(l-1)/block;x-65;while(lminr){xgetnxt(x,c[t[id]][a[l]-65]);l;}while(r-l1block){id(l-1)/block;xto[id][t[id]][x];lblock;}id(l-1)/block;while(lr){xgetnxt(x,c[t[id]][a[l]-65]);l;}coutchar(x65)\n;}else{ciny;if(xy) continue;if(xy) swap(x,y);int type(xA?yB?0:1:2);int minrmin((l-1)/block*blockblock,r),id(l-1)/block;renew(id);while(lminr){if(a[l]x) a[l]y;else if(a[l]y) a[l]x;l;}update(id);while(r-l1block){t[(l-1)/block]b[t[(l-1)/block]][type];lblock;}renew(id(l-1)/block);while(lr){if(a[l]x) a[l]y;else if(a[l]y) a[l]x;l;}update(id);}} }
http://www.hkea.cn/news/14477166/

相关文章:

  • 大气黑色机械企业网站源码石家庄建设厅官方网站
  • 乡村文化建设网站栏目设置wordpress update_post_meta
  • 网站加上视频对seo影响创新的武进网站建设
  • 宁波手机网站制作媚娘直播
  • 网站建设竣工验收报告动漫制作专业简历
  • google 网站突然一条收录也没有wordpress下载弹窗插件
  • 什么东西可以做网站沈阳建信建设工程有限公司
  • 莱州市招聘网站建设网站的要求吗
  • 仿网站被封怎么办建设音乐网站
  • 哈尔滨网站建设方案开发上海网站建设管理系统
  • 网站开发_超速云河北邢台新河网
  • seo优化网站词绵阳住房和城乡建设部网站
  • 网站登录页面模板下载企业网站开发综合实训
  • asp商业网站源码华为手机开发者模式怎么关闭
  • 做网站是学什么编程语言为网站添加统计
  • 做网站技术要求怎么写石排镇网站建设
  • 简单好看个人主页网站模板wordpress管理地址
  • 山东省建设部继续教育网站小学托管班
  • 做网站有没有前途聊城市东昌府区建设局网站
  • 揭阳网站制作托管seo网站做推广
  • 聊城市公司网站建站网站的基本概念
  • 涿州做网站开网店需要什么流程
  • 佛山网站建设网站建设收费wordpress 添加订阅按钮
  • 网站开发亿玛酷技术普宁做男科检查长江网站L
  • 国外html5做的音乐网站做高端网站建设公司
  • 开发网站需要问什么wordpress 后台登陆界面
  • 网站的特征包括哪些方面潍坊专职消防员待遇
  • 网站教育培训机构十大排名网页游戏排行榜2022前十名最新排名图片
  • 快速做彩平图得网站全网最低价查询网站
  • 模块化网站建设一般多少钱互联网营销策略有哪些