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

【学习笔记】[AGC064C] Erase and Divide Game

有点难😅,看到比自己低一级的选手场切这道题就更绷不住了😇

考虑 从低到高位 建立 trie \text{trie} trie 树,但是因为是对反串建立的,所以编号连续的点在 trie \text{trie} trie 树上的位置是分散的😅

但是发现可以对 S G SG SG值相同的一段区间一起转移,具体就是自底向上合并(编号减去 2 j 2^j 2j),每一层合并完了过后的区间数目都不会超过 n n n(考虑端点的数目不会变)

让我想到了这道题 CF1864H Asterism Stream

大概也是分段转移

学了但是不会灵活运用,还是太菜了

复杂度 O ( n log ⁡ V ) O(n\log V) O(nlogV),非常优秀。

#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define fi first
#define se second
#define db double
#define ull unsigned long long
#define inf 0x3f3f3f3f
using namespace std;
const int N=2e4+5;
int T,n,m,cnt1,cnt2,cnt;
int to[3][3];
struct node{ll l,r;int v;
}a[N],b[N],c[N];
int get(int x,int y){return to[min(x,y)][max(x,y)];
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>T;to[0][0]=to[0][1]=to[0][2]=1,to[1][1]=0,to[1][2]=1,to[2][2]=2;while(T--){cin>>n;ll pre=0;cnt=0;for(int i=1;i<=n;i++){ll l,r;cin>>l>>r;if(pre<l)a[++cnt]={pre,l-1,2};a[++cnt]={l,r,1},pre=r+1;}if(pre<(1ll<<61))a[++cnt]={pre,(1ll<<61)-1,2};for(int i=60;i>=0;i--){cnt1=cnt2=0;for(int j=1;j<=cnt;j++){if(a[j].r<(1ll<<i)){b[++cnt1]=a[j];}else if(a[j].l>=(1ll<<i)){c[++cnt2]=a[j];}else{b[++cnt1]=a[j],b[cnt1].r=(1ll<<i)-1;c[++cnt2]=a[j],c[cnt2].l=1ll<<i;}}for(int j=1;j<=cnt2;j++)c[j].l-=1ll<<i,c[j].r-=1ll<<i;int p1=1,p2=1;cnt=0;while(p1<=cnt1&&p2<=cnt2){a[++cnt].l=b[p1].l,a[cnt].r=min(b[p1].r,c[p2].r),a[cnt].v=get(b[p1].v,c[p2].v);if(a[cnt].r==b[p1].r)p1++;else b[p1].l=a[cnt].r+1;if(a[cnt].r==c[p2].r)p2++;else c[p2].l=a[cnt].r+1;}}cout<<(a[1].v?"Takahashi":"Aoki")<<"\n";}
}
http://www.lryc.cn/news/171440.html

相关文章:

  • 算法通关村-----数组中元素出现次数问题
  • Qt-键盘消息的传递-键盘消息的获取-C++
  • 数据结构与算法(五)--链表概念以及向链表添加元素
  • 计算机视觉与深度学习-图像分割-视觉识别任务02-目标检测-【北邮鲁鹏】
  • Flink——Flink检查点(checkpoint)、保存点(savepoint)的区别与联系
  • [篇五章五]-如何禁用 Windows Defender-我的创作纪念日
  • 什么情况下使用微服务?
  • 【Linux】Ubuntu美化主题【教程】
  • spring-boot2.x,使用EnableWebMvc注解导致的自定义HttpMessageConverters不可用
  • 2023-09-20 Android CheckBox 让文字显示在选择框的左边
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv5的口罩人脸检测
  • CentOS7 yum安装报错:“Could not resolve host: mirrorlist.centos.org; Unknown error“
  • 关于token续签
  • 淘宝分布式文件存储系统( 二 ) -TFS
  • Java中synchronized:特性、使用、锁机制与策略简析
  • 记一次clickhouse手动更改分片数异常
  • 深度学习论文: ISTDU-Net:Infrared Small-Target Detection U-Net及其PyTorch实现
  • 图像识别-YOLO V8安装部署-window-CPU-Pycharm
  • js禁用F1至F12、禁止缩放、取消选中并且取消右键操作、打印、拖拽、鼠标点击弹出自定义信息、禁用开发者工具js
  • Zabbix5.0_介绍_组成架构_以及和prometheus的对比_大数据环境下的监控_网络_软件_设备监控_Zabbix工作笔记
  • 百度SEO优化TDK介绍(分析下降原因并总结百度优化SEO策略)
  • 搭建自动化 Web 页面性能检测系统 —— 设计篇
  • 记一次 mysql 数据库定时备份
  • 淘宝分布式文件存储系统(一) -TFS
  • LLM各层参数详细分析(以LLaMA为例)
  • linux ansible(三)
  • Anaconda和Pycharm详细安装 配置教程
  • 利用Linux虚拟化技术实现资源隔离和管理
  • 12基于MATLAB的短时傅里叶变换( STFT),连续小波变换( CWT),程序已调通,可以直接运行。
  • k8s使用时无法ping通服务器From IP地址 icmp_seq=1 Destination Host Unreachable