hdu3980 Paint Chain SG函数

博弈类题目小结(HDU,POJ,ZOJ) 转载请注明出处,谢谢http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents    by---cxlove 首先当然要献上一些非常好的学习资料: 基础博弈的小结:http://blog.youkuaiyun.com/acm_cxlove/article/details/7854530 经典翻硬币游戏小结:http://blog.youkuaiyun.com/ac 阅读详情

Problem Description
Aekdycoin and abcdxyzk are playing a game. They get a circle chain with some beads. Initially none of the beads is painted. They take turns to paint the chain. In Each turn one player must paint a unpainted beads. Whoever is unable to paint in his turn lose the game. Aekdycoin will take the first move.

Now, they thought this game is too simple, and they want to change some rules. In each turn one player must select a certain number of consecutive unpainted beads to paint. The other rules is The same as the original. Who will win under the rules ?You may assume that both of them are so clever.
 

Input
First line contains T, the number of test cases. Following T line contain 2 integer N, M, indicate the chain has N beads, and each turn one player must paint M consecutive beads. (1 <= N, M <= 1000)
 

Output
For each case, print "Case #idx: " first where idx is the case number start from 1, and the name of the winner.
 

Sample Input
2 3 1 4 2
 

Sample Output
Case #1: aekdycoin Case #2: abcdxyzk

  N个珠子,两个人轮流取连续M个,谁不能取了就输了。

  初步了解了一下SG函数,目前只会用,原理到时再研究。

  简单说就是找当前状态下一步的子状态,如果没有子状态当前sg为0,如果操作某一步后分成了多个子状态,则把他们的sg值异或,看成一个整体作为当前的一个子sg。当前sg的取值为他所有子sg里从0开始sg没有取到的那个值。

  对于这个题,就是记忆化搜索,求出当前状态的SG,判断是否为0。

  先操作一步,把环变成链,这样才能递归。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cstdlib>
#include<cmath>
#define INF 0x3f3f3f3f
#define MAXN 1010
#define MAXM 20010
#define MAXNODE 4*MAXN
#define eps 1e-9
using namespace std;
int T,N,M,sg[MAXN];
int SG(int n){
    if(sg[n]!=-1) return sg[n];
    if(n<M) return sg[n]=0;
    int vis[MAXN]={0};
    memset(vis,0,sizeof(vis));
    for(int i=0;i<=n-M-i;i++) vis[SG(i)^SG(n-M-i)]=1;
    for(int i=0;;i++) if(!vis[i]) return sg[n]=i;
}
int main(){
    freopen("in.txt","r",stdin);
    scanf("%d",&T);
    int cas=0;
    while(T--){
        scanf("%d%d",&N,&M);
        printf("Case #%d: ",++cas);
        memset(sg,-1,sizeof(sg));
        if(N<M){
            printf("abcdxyzk\n");
            continue;
        }
        if(SG(N-M)) printf("abcdxyzk\n");
        else printf("aekdycoin\n");
    }
    return 0;
}


SEED-VII 实战指南:如何利用多模态脑电图数据提升情感识别精度 本文提供了SEED-VII多模态脑电图数据集的实战指南,详细介绍了如何利用该数据集提升情感识别精度。内容涵盖数据获取、预处理、特征提取,以及构建多模态融合神经网络模型的关键步骤,并强调了被试者独立评估的重要性,为情感计算研究者提供了从数据到模型的全流程解决方案。 阅读详情

相关推荐

海康威视Web3.0插件实战:快速部署摄像头实时预览方案

本文详细介绍了海康威视Web3.0插件的实战应用,包括快速部署摄像头实时预览方案的完整流程。从插件下载安装到摄像头连接配置,再到浏览器兼容性解决方案,帮助开发者和IT人员高效实现网页端监控功能。特别针对预览功能调优和多摄像头管理等高级应用提供了实用技巧。

weixin_29266679的博客 346

hdu 3980 Paint Chain(SG函数)

Paint ChainProblem DescriptionAekdycoin and abcdxyzk are playing a game. They get a circle chain with some beads. Initially none of the beads is painted. They take turns to paint the chain. In Each tur

Darkarts 1万+

阿里开源最强数字人工具 EchoMimicV2,本地部署(一)

EchoMimicV2是阿里推出的半身人体AI数字人项目,基于参考图片、音频剪辑和手部姿势序列生成高质量动画视频,确保音频内容与半身动作的一致性。现在本地部署,安装体验一下。

缘分天空的专栏 4614

hdu3980Paint Chain+SG博弈

Problem Description Aekdycoin and abcdxyzk are playing a game. They get a circle chain with some beads. Initially none of the beads is painted. They take turns to paint the chain. In Each turn one pla

xtulollipop 1116

我用两种方式玩转 MCP:CherryStudio vs VS Code 实测手记

MCP,全称,你可以理解为——给大模型装上“手脚”和“工具箱”。传统大模型像一位博学但手不能动的学者:“我知道怎么算圆周率,但没法打开计算器。而支持 MCP 的模型,能通过标准协议自动调用外部工具(比如fetch网络请求、readFile读文件、shell执行命令),真正做到“知行合一”。输入后**,保存,**之后就显示出来了MCP 不是“魔法”,而是把 AI 从“问答机”升级为“智能代理”的关键一步。工具本身不难,难的是“知道它能解决什么问题”。

zyq569的博客 1020

番外篇:ADS功放设计实战——负载与源牵引的协同优化

本文深入探讨了ADS功放设计中负载牵引与源牵引的协同优化原理及实战技巧。通过2.4GHz Wi-Fi功放等案例,详细解析了基波阻抗迭代优化、谐波调谐高级技巧及收敛判断方法,帮助工程师显著提升功放效率至78%以上。文章特别强调ADS仿真工具的正确使用方法和实际调试经验,为射频功放设计提供实用指导。

weixin_33483304的博客 341

HDU 3980 Paint Chain(博弈 SG)

HDU 3980 Paint Chain(博弈 SG)

1437

基于DPCNN实现电商情感分析任务

下载链接项目中使用的模型是DPCNN,在模型中我们定义了三个组件,分别是embedding层,卷积层和全连接层。Embedding层:将每个词生成对应的嵌入向量,就是利用一个连续型向量来表示每个词卷积层:提取语句中的语义信息Linear层:将结果映射成2大小用于二分类,即正反面的概率。

优快云 精品推荐 1629

hdu3980 Paint Chain

Paint Chain Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 897 Accepted Submission(s): 316 Problem Description Aekdycoin and abcdxyzk are

习惯与规则决定命运 1000

基于STC8G1K08A单片机的EC11旋转编码器控制(江科大同款,代码可直接使用)

本文介绍了STC8G系列单片机与EC11旋转编码器的接口实现方案。硬件方面详细说明了EC11编码器的机械结构、电气特性及与单片机的典型连接电路,包括上拉电阻和消抖设计。软件部分重点阐述了状态检测算法,通过状态机和查找表实现方向判断,采用中断方式检测信号变化,并配合定时器进行软件消抖处理。文章还提供了完整的代码实现,包括GPIO初始化、中断服务函数、状态转换逻辑等关键模块,展示了如何通过串口输出验证旋转计数。最后讨论了抗抖动优化、高低速应用场景等实际问题解决方案。该方案在菜单导航、参数调节等场景中具有实用价值

weixin_74013772的博客 322

Android编译系统——Android.bp语法介绍(十五)

Android.bp 是 Android 构建系统(Android Build System)中的配置文件,用于描述如何编译和打包项目中的模块。它是用 Blueprint 编写的,其语法类似于 JSON,但专为 Android 编译系统设计,提供了更高效、灵活的模块化管理。

小旭的专栏 939

hdu3980Paint Chain(博弈+SG函数)

hdu3980Paint Chain(博弈+SG函数) 先来说说SG函数的灵魂就是mex函数,这是一个针对于集合的函数,表示最小的不属于这个集合的非负整数。比如mex{1,2,3,4}=0;mex{0,2,3,4}=1; SG函数想要获取的就是mex{“计算出的集合”}; Problem Description Aekdycoin and abcdxyzk are playing a game. They get a circle chain with some beads. Initially none

濡苏的博客 540

使用YOLOv5进行工业检测(如裂纹、划痕、破损等)

本文将详细介绍如何使用YOLOv5实现工业检测项目,以检测生产线上的缺陷产品,如裂纹、划痕、破损等。我们将分步介绍数据准备、模型训练、模型优化和部署等过程。

a871923942的博客 2528

HDU3980 Paint Chain SG函数

题目链接:HDU3980 Paint Chain Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1803    Accepted Submission(s): 629 Problem Description

teddywang 521

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

hdu 3980 Paint Chain 组合游戏 SG函数

题目链接 题意 有一个\(n\)个珠子的环,两人轮流给环上的珠子涂色。规定每次涂色必须涂连续的\(m\)颗珠子,无法继续操作的人输。问先手能否赢。 思路 参考 转化 第一个人取完之后就变成了一条链,现只需要考虑这条链上的操作即可。 SG函数计算 考虑在一个链上涂连续的\(m\)颗珠子这个问题的子问题,记当前有\(x\)颗珠子 \(x\lt m\) 显然已经无法涂了,故\(sg(x)=0\...

ahu12345678的博客 124

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HDU 3980 Paint Chain(sg函数)

Problem DescriptionAekdycoin and abcdxyzk are playing a game. They get a circle chain with some beads. Initially none of the beads is painted. They take turns to paint the chain. In Each turn one play...

←_← 279

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

HDU - 3980 Paint Chain(sg函数)

Aekdycoin and abcdxyzk are playing a game. They get a circle chain with some beads. Initially none of the beads is painted. They take turns to paint the chain. In Each turn one player must paint a unp...

Cymbals的博客 351

HDU 3980 Paint Chain(SG函数)

Problem Description: Aekdycoin and abcdxyzk are playing a game. They get a circle chain with some beads. Initially none of the beads is painted. They take turns to paint the chain. In Each turn one p

蘑菇--走在通往梦想的道路上。 723

HDU---3980:Paint Chain【SG函数】

题意: 两个人轮流给有N个玻璃球的环涂色,每次只能给一段长为M的子段且没有涂过色的玻璃球涂色,不能操作者输 分析: SG函数: SG[x] = mex{SG[y] | y为x能到达的后继点},mex{}返回在自然数中第一个未出现的数,mex{0,1,3,4} = 2;SG[x] = 0,则x为必败点,否则x为必胜点 SG定理: 子游戏SG值的异或和等于全局的SG值 NIM...

KobeDuu 216

HDU3980 Paint Chain(SG函数)

传送门 nnn个点围成一个环,每次每个人可以把连续的mmm个点染色 无法操作的人失败, 问胜负情况 很明显第一个人操作过后,环就变成了一条链 所以可以定义sg[x]sg[x]sg[x]为链长xxx的sgsgsg值 那么显然sg[k]=0 (k∈[0,m−1])sg[k]=0\ (k\in[0,m-1])sg[k]=0 (k∈[0,m−1]) 然后枚举先手第一次把链变成长n−mn-mn−m 所以我们求sg[n−m]sg[n-m]sg[n−m]是后手的胜负状态 注意特判n<mn&lt

jziwjxjd的博客 485

HDU 3980 Paint Chain (sg函数)

Paint Chain Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 804    Accepted Submission(s): 292 Problem Description Aekdycoin and abcdxyzk are...

weixin_34233856的博客 91

HDU 3980 Paint Chain(博弈论,SG函数)

#include<bits/stdc++.h> using namespace std; const int maxn = 1005; int sg[maxn]; int grundy(int n, int m) { if(sg[n] != -1) { return sg[n]; } if(n < m) { return sg[n] = 0; } int ...

Nerdant 435

HDU - 3980-Paint Chain(博弈,SG函数)

题目链接:HDU - 3980-Paint Chain Paint Chain Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2223 Accepted Submission(s): 814 Problem Descrip...

howell 371

hdu 3980 Paint Chain (sg函数 )

Problem Description Aekdycoin and abcdxyzk are playing a game. They get a circle chain with some beads. Initially none of the beads is painted. They take turns to paint the chain. In Each turn one pla

退役的铜牌狗 497

HDU - 3980 Paint Chain(SG函数)

https://vjudge.net/problem/HDU-3980 题意 一串长度为n的柱子,每个人只能给连续的珠子涂色,涂过的不能再涂,不能涂的人就输了,问最后谁获胜。 分析 第一个人先涂m个,就把环变成链了,先手就变为后手。现在考虑长度为N-M的链上的游戏,用子状态来推出当前状态,一个问题的结果是其子问题的结果的亦或,然后使用记忆化推出sg,就知道谁赢了。 #include...

weixin_33806914的博客 176

hdu 3980 Paint Chain 博弈+SG函数 每次选连续M个

Problem Description Aekdycoin and abcdxyzk are playing a game. They get a circle chain with some beads. Initially none of the beads is pain

kongming_acm的专栏 905
上一篇: hdu 3972 1 M possible
下一篇: uva11806 - Cheerleaders 容斥原理
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值