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

ABC206F Interval Game 2

洛谷 ABC206F Interval Game 2

题目大意

n n n个作左闭右开的区间 [ l i , r i ) [l_i,r_i) [li,ri),Alice和Bob用这些区间玩一个游戏。Alice和bob轮流做如下操作,Alice先手:

  • 从这 n n n个区间中选择一个区间,这个区间和之前选中的区间不能有重叠部分

如果轮到一个玩家时这个玩家不能再操作了,则这个玩家输。如果Alice和Bob都采用最优策略,问最终谁会赢?

t t t组数据。

数据范围

1 ≤ t ≤ 20 , 1 ≤ n ≤ 100 , 1 ≤ l i < r i ≤ 100 1\leq t\leq 20,1\leq n\leq 100,1\leq l_i<r_i\leq 100 1t20,1n100,1li<ri100


题解

根据数据范围可得, l i l_i li r i r_i ri的范围很小,所以我们可以令 s g ( l , r ) sg(l,r) sg(l,r)表示在 [ l , r ) [l,r) [l,r)之间的区间中进行游戏的 s g sg sg值。

在求 s g ( l , r ) sg(l,r) sg(l,r)时,枚举当前选的区间,设选择区间 [ l i , r i ) [l_i,r_i) [li,ri),则选择后的状态为 s g ( l , l i )   x o r   s g ( r i , r ) sg(l,l_i) \ xor \ sg(r_i,r) sg(l,li) xor sg(ri,r)。对每个区间 [ l i , r i ) [l_i,r_i) [li,ri),求选择后的状态,最后求 m e x mex mex,即可求出 s g ( l , r ) sg(l,r) sg(l,r)

因为每次向下一层至少会使区间的长度减少一,所以状态数最多只会在100左右,所以求 m e x mex mex时的桶只需要开100多一点。

为了避免重复求同一个 s g ( l , r ) sg(l,r) sg(l,r),可以用记忆化搜索存储sg值。最后的答案为 s g ( 1 , 100 ) sg(1,100) sg(1,100)

时间复杂度为 O ( t × n 3 ) O(t\times n^3) O(t×n3)

code

#include<bits/stdc++.h>
using namespace std;
int t,n,p[105][105];
struct node{
	int x,y;
}w[105];
int gt(int l,int r){
	if(p[l][r]!=-1) return p[l][r];
	int z[205];
	memset(z,0,sizeof(z));
	for(int i=1;i<=n;i++){
		if(w[i].x>=l&&w[i].y<=r){
			z[gt(l,w[i].x)^gt(w[i].y,r)]=1;
		}
	}
	int x=0;
	for(;z[x];x++);
	p[l][r]=x;
	return p[l][r];
}
int main()
{
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		memset(p,-1,sizeof(p));
		for(int i=1;i<=n;i++){
			scanf("%d%d",&w[i].x,&w[i].y);
		}
		if(gt(1,100)) printf("Alice\n");
		else printf("Bob\n");
	}
	return 0;
}

http://www.kler.cn/a/7632.html

相关文章:

  • 【数据库系列】 Spring Boot 集成 Neo4j 的详细介绍
  • 机器学习 决策树
  • ssh登陆服务器后支持Tab键命令补全
  • MFC工控项目实例三十实现一个简单的流程
  • 【Qt聊天室客户端】消息功能--发布程序
  • 两种鼠标hover切换对应图片方法对比
  • python实现一个创建日志收集器代码
  • 智慧水务信息化平台建设,实现供水一体化管控
  • 技术分享| 什么是动态更新?
  • 自动化篇 | 13 | app自动化:airtest
  • Centos搭建k8s
  • 深度学习 - PyTorch入门
  • 十二星座,各适合骑什么牌子的自行车
  • 九、MySQL 优化
  • [Python] 循环语句
  • 线性代数 --- 最小二乘在直线拟合上的应用与Gram-Schmidt正交化
  • 轻松实现文字转语音:推荐5款免费工具
  • 免费ChatGPT接入-国内怎么玩chatGPT
  • 线性回归算法
  • 【LeetCode: 面试题 08.01. 三步问题 | 暴力递归=>记忆化搜索=>动态规划】
  • go : 支持的设计模式
  • PyTorch随笔 - Glow: Generative Flow with Invertible 1×1 Convolutions
  • springboot(07)邮件发送(qq邮箱)
  • 大地量子与亚马逊云科技合作,为新能源业务的发展提供更多的最佳实践
  • P1010 [NOIP1998 普及组] 幂次方
  • JAVASE 继承