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

2556. 第八大奇迹

有人困难题 一次提交ac 谁呀?

我呀 hhhh

但是代码有点不简洁...

2556. 第八大奇迹 - AcWing题库

ac代码:

#include<iostream>
#include<cstring>
using namespace std;
const int N=400010;
struct node{int a[8],b[8];int l,r;
}h[N];
void pushup(int idx){if(idx==0) return ;int i0=0,i1=0,i2=0;while(i0<8){if(h[idx<<1].a[i1]<h[idx<<1|1].a[i2]) h[idx].a[i0]=h[idx<<1|1].a[i2], i2++;else h[idx].a[i0]=h[idx<<1].a[i1], i1++;i0++;}pushup(idx>>1);
}
void build(int idx,int l,int r){h[idx].l=l,h[idx].r=r;if(l==r) return ;int mid=l+r>>1;build(idx<<1,l,mid);build(idx<<1|1,mid+1,r);
}
int find(int idx,int p){if(h[idx].l==h[idx].r) return idx;int mid=h[idx].l+h[idx].r>>1;if(p<=mid) return find(idx<<1,p);else return find(idx<<1|1,p);
}
void add(int p,int x){int idx=find(1,p);h[idx].a[0]=x;pushup(idx>>1);
}
void up(int idx,int idx1,int idx2){int i0=0,i1=0,i2=0;while(i0<8){if(h[idx1].b[i1]<h[idx2].b[i2]) h[idx].b[i0]=h[idx2].b[i2], i2++;else h[idx].b[i0]=h[idx1].b[i1], i1++;i0++;}
}
void f(int x,int y,int idx){if(x<=h[idx].l&&y>=h[idx].r){memcpy(h[idx].b,h[idx].a,sizeof(h[idx].a));return ;}int mid=h[idx].l+h[idx].r>>1;int flag1=0,flag2=0;memset(h[idx].b,0,sizeof(h[idx].b));if(x<=mid){f(x,y,idx<<1); flag1++;}if(y>mid){f(x,y,idx<<1|1); flag2++;}if(flag1&&flag2){up(idx,idx<<1,idx<<1|1);}else if(flag1){up(idx,idx<<1,0);}else{up(idx,0,idx<<1|1);}
}
int main(){int l,n; scanf("%d%d",&l,&n);build(1,1,l);while(n--){char c; int p,x;getchar(); scanf("%c",&c);scanf("%d%d",&p,&x);if(c=='C'){add(p,x);}else{f(p,x,1);printf("%d\n",h[1].b[7]);}// for(int i=0;i<=19;i++){//     printf("#%d\n",i);//     for(int j=0;j<8;j++){//         printf("%d ",h[i].a[j]);//     }//     printf("\n");//     for(int j=0;j<8;j++){//         printf("%d ",h[i].b[j]);//     }//     printf("\n");// }}return 0;
}

相关文章:

  • 机器学习-朴素贝叶斯分类
  • IP协议解析
  • RabbitMQ 集群与高可用方案设计(二)
  • 对数的运算困惑
  • C# Windows Forms应用程序-003
  • 数据洪流下,如何让数据库管理不再成为效率瓶颈?
  • 总结:进程和线程的联系和区别
  • 记录一个有用的tcpdump命令
  • Filter和Interceptor详解(一文了解执行阶段及其流程)
  • C#面试问题2
  • QT中常用的类
  • Cadence学习笔记之---PCB过孔替换、封装更新,DRC检查和状态查看
  • 三极管射极跟随器(推挽放大电路)
  • 大语言模型 提示词的少样本案例的 演示选择与排序新突破
  • 单片机上按键功能通常都是用什么方法写?
  • 协同过滤实现电影推荐
  • Java中Map集合的遍历方式详解
  • 【密码学——基础理论与应用】李子臣编著 第十三章 数字签名 课后习题
  • 03 环境变量和标签
  • 多线程(5)——单例模式,阻塞队列