hdu 4559 涂色游戏(对SG函数的深入理解,推导打SG表)
提议分析:
1 <= N <= 4747
很明显应该不会有规律的,打表发现真没有
按题意应该分成两种情况考虑,然后求其异或(SG函数性质)
(1)找出单独的一个(一列中只有一个)
(2)找出连续的两个都没有涂色的求SG值(打表)
#include<stdio.h>
#include<string.h>
#define Max 4750
int dp[Max];
int mex[Max];
int flag[Max];
void Gsdp()
{
int i,j;
int l,r;
dp[]=;
dp[]=;
for(i=; i<Max; i++)
{
for(j=; j<=i; j++)
{
l=j-;
r=i-j;//分成左中右
mex[dp[l]^^dp[r]]=i;//涂色1
if(j+<=i)
{
l=j-;
r=i-(j+);
mex[dp[l]^dp[r]]=i;//涂色2*2
}
}
//for(j=0; mex[j]==i; j++)少了分号
j=;
while(mex[j]==i)j++;
dp[i]=j;
}
//printf("#%d\n",dp[13]);
}
int main()
{
int t,n,m,ans;
int x,y;
int i,j,k;
Gsdp();
scanf("%d",&t);
for(i=; i<=t; i++)
{
scanf("%d %d",&n,&m); memset(flag,,sizeof(flag));
for(j=; j<=m; j++)
{
scanf("%d %d",&x,&y);
flag[y]++;
}
int tmp2=,tmp1=;
ans=;
for(j=;j<=n;j++)
{
if(flag[j]==)tmp1++;//单独一个
if(!flag[j])tmp2++;
else
{
ans^=dp[tmp2];
tmp2=;
}
}
ans=ans^(tmp1%)^dp[tmp2];
printf("Case %d: ",i);
if(ans)printf("Alice\n");
else printf("Bob\n");
}
}
hdu 4559 涂色游戏(对SG函数的深入理解,推导打SG表)的更多相关文章
- hdu 4559 涂色游戏(SG)
在一个2*N的格子上,Alice和Bob又开始了新游戏之旅. 这些格子中的一些已经被涂过色,Alice和Bob轮流在这些格子里进行涂色操作,使用两种涂色工具,第一种可以涂色任意一个格子,第二种可以涂色 ...
- hdu 4559 涂色游戏 博弈论
构造SG函数:sg[i]表示2*i的sg值!! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm ...
- NOIp十连测 涂色游戏
[问题描述]小A 和小B 在做游戏.他们找到了一个n 行m 列呈网格状的画板.小A 拿出了p 支不同颜色的画笔,开始在上面涂色.看到小A 涂好的画板,小B 觉得颜色太单调了,于是把画板擦干净,希望涂上 ...
- [CSP-S模拟测试]:涂色游戏(DP+组合数+矩阵快速幂)
题目描述 小$A$和小$B$在做游戏.他们找到了一个$n$行$m$列呈网格状的画板.小$A$拿出了$p$支不同颜色的画笔,开始在上面涂色.看到小$A$涂好的画板,小$B$觉得颜色太单调了,于是把画板擦 ...
- LYDSY模拟赛day3 涂色游戏
/* 非常好的题 */ #include <cstdio> #include <iostream> #include <cstdlib> #include < ...
- 联赛模拟测试5 涂色游戏 矩阵优化DP
题目描述 分析 定义出\(dp[i][j]\)为第\(i\)列涂\(j\)种颜色的方案数 然后我们要解决几个问题 首先是求出某一列涂恰好\(i\)种颜色的方案数\(d[i]\) 如果没有限制必须涂\( ...
- 【矩阵乘优化DP】涂色游戏
题目大意 用 \(p\) 种颜色填 \(n\times m\) 的画板,要求任意相邻两列的颜色数都不少于 \(q\) ,求方案数. 数据范围 \(1\leq n\leq 100,1\leq m\leq ...
- [NOI Online #2 提高组]涂色游戏 题解
题目描述 你有 1020 个格子,它们从 0 开始编号,初始时所有格子都还未染色,现在你按如下规则对它们染色: 编号是 p1 倍数的格子(包括 0号格子,下同)染成红色. 编号是 p2 倍数的格子染成 ...
- Wannafly挑战赛23 T2游戏 SG函数
哎,被卡科技了,想了三个小时,最后还是大佬给我说是\(SG\)函数. \(SG\)函数,用起来很简单,证明呢?(不可能的,这辈子都是不可能的) \(SG\)定理 游戏的\(SG\)函数就是各个子游戏的 ...
随机推荐
- Swift 中的利刃,函数和闭包
input[type="date"].form-control,.input-group-sm>input[type="date"].input-grou ...
- 未能加载文件或程序集“System.Web.Razor”或它的某一个依赖项。文件或目录损坏且无法读取。
“/”应用程序中的服务器错误. 未能加载文件或程序集“System.Web.Razor”或它的某一个依赖项.文件或目录损坏且无法读取. (异常来自 HRESULT:0x80070570) 说明: 执行 ...
- start apache2 failed in Ubuntu
Invalid command 'WSGIReloadMechanism', perhaps misspelled or defined by a module not included in the ...
- 查看BADI有哪些实现
TCODE:SE18
- mysql 字段编码该为utf8mb4
alter table c_comment modify column content varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unico ...
- nodeJs事件之监听移除事件
var EventEmitter=require('events').EventEmitter var life=new EventEmitter(); //comfort 求安慰,函数名: //fo ...
- 【Reorder List】cpp
题目: Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do ...
- mysql的简单主从复制(ubuntu)
环境:两台ubuntu 12.04.5 虚拟机 mysql-server-5.5 master (192.168.240.130) slave (192.168.240.129) (1)查看二进 ...
- android 自动化压力测试-monkey 2 获取程序包名
monkey 1 中我们写到: C:\Users\chenshan>adb shell shell@hwG750-T20:/ $ monkey -p cn.emoney.acg -v 500 说 ...
- 老陈 WPF
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...