HDU1536 S-Nim(博弈入门暴力打SG表)

(组合游戏)SG函数与SG定理详解 文章目录前言什么是组合游戏必胜点和必败点的概念Sprague-Grundy(SG)定理SG函数 前言   好久没写博客了,上一篇博客还是去年实训写的,一是因为寒假,二是因为随着难度的加深,学一个算法的时间也变长了很多(蒟蒻专有buff)。当然,最重要的还是因为自己懒~   后面会继续努力的。(这csdn的markdown编辑器又改版了越来越难用了) 转载请注明转自bestsort的博客 ... 阅读详情

还是跟之前的博弈题一样  暴力打SG表

之前每次循环都memset(book,0,sizeof(book))   这里的数据比较大。所以用一个技巧,只要在开始memset一次。然后之后设book[...]=i+1 然后判断 if(book[k]!=i+1)是否成立就好了。

187ms 好险。


AC代码如下:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define maxn 10005
int T,s,n,book[maxn],a[maxn],f[105],sg[maxn],matc[maxn],m;
using namespace std;
int main()
{
    sg[0]=0;//预处理 没得取的话为0 必输态 
    while(scanf("%d",&s)==1&&s)
    {
        for(int i=0;i<s;i++)scanf("%d",&f[i]);
        f[s]=999999999;
        s++;
        sort(f,f+s);
        cin>>T;
        m=0;
        memset(sg,0,sizeof(sg));
        memset(book,0,sizeof(book));
        for(int i=0;i<maxn;i++)
        {
            int tmax=0;
            for(int j=0;f[j]<=i;j++)
            {
                book[sg[i-f[j]]]=i+1;
                tmax=max(tmax,sg[i-f[j]]);
            }
            for(int k=0;k<=tmax+1;k++)
            {
                if(book[k]!=i+1)
                {
                    sg[i]=k;
                    break;
                }
            }
        }
        while(T--)
        {
            cin>>n;
            for(int i=0;i<n;i++)scanf("%d",&a[i]);
            sort(a,a+n);
            //for(int i=0;i<=a[n-1];i++)cout<<sg[i]<<" ";
            //cout<<endl;
            int res=0;
            for(int i=0;i<n;i++)res^=sg[a[i]];
            if(res)matc[m++]=1;
            else matc[m++]=0;    
        }
        for(int i=0;i<m;i++)
        {
            if(matc[i])printf("W");
            else printf("L");
        }
        cout<<endl;
    }
}

产业园区如何高效对接企业技术需求与高校科研成果?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

相关推荐

Unity类银河恶魔城学习记录1-10 PlayerWallJump源代码 P37

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考

Homura_的博客 1379

Hdu1404 Digital Deletions(暴力SG博弈)

Digital Deletions Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1902    Accepted Submission(s): 682 Problem Description Digital d

无奈滴微笑 2003

点云体素化算法研究-3.Voxelization 三维模型体素化

体素(voxel)即体积元素的简称,是数字数据在三维空间分割上的最小的单位。体素化就是通过创建三维体素网格来表示三维物体,是一种将无序点云变为有序点云的降采样的空间数据结构方法,便于实现点云的空间卷积。激光雷达(LiDAR)| Open3D:第五节 表面重建-体素化。

周陽讀書 2067

sg函数模板(打表)

int sg[maxn];//sg[n] n表示每堆数量 int s[k];//每次能取的值,下标从0开始,0 ~ k-1,必须有序,可以sort(s,s+k); bool vis[maxn]; const int k;//k是集合s的大小 void get_sg() { int i,j; for(i=0;i<maxn;i++) { memset(vis,0,

退役的铜牌狗 2382

机械臂电机力矩计算

设计 6 轴机械臂时,电机力矩计算是确保机械臂负载能力、运动精度和安全性的核心环节,需围绕和两大核心展开,结合机械臂结构参数(如关节长度、质量分布)、负载需求(如末端负载重量、惯性)和运动参数(如加速度、角速度)逐步推导。

ZPC8210的博客 1857

避开STM32中断优先级配置的坑:HAL_NVIC_SetPriority()参数你真的用对了吗?

本文深入解析STM32中断优先级配置中的关键问题,重点剖析HAL_NVIC_SetPriority()函数的正确使用方法。通过实际案例揭示优先级分组设置、抢占优先级与子优先级的区别,提供多中断系统中的优化策略和调试技巧,帮助开发者避免常见配置错误,提升系统稳定性。

weixin_42532938的博客 423

HDU 1524 树上无环博弈 暴力SG

一个拓扑结构的图,给定n个棋的位置,每次可以沿边走,不能操作者输。 已经给出了拓扑图了,对于每个棋子找一遍SG最后SG和就行了。 /** @Date : 2017-10-13 20:08:45 * @FileName: HDU 1524 树上无环博弈 暴力SG.cpp * @Platform: Windows * @Author : Lweleth (Soung...

weixin_30237281的博客 151

Vue3 - 详细实现将多个文件批量导出为ZIP压缩包格式并下载功能,vue3将文件批量下载打包成ZIP下载保存本地,下载多个文件打包输出成zip格式(支持二进制文件流/base64图片/文件URL)

vue3,nuxt3,vue3批量导出文件打包成压缩包,Vue3中如何批量导出文件(图片/PDF)并打包压缩成ZIP,实现多张图片导出zip文件,vue3导出pdf文件很多如何变成导出一个zip文件,jszip插件文档流,vue3中下载多个文件打包为一个zip,Vue3中将文件批量下载打包成zip格式,批量下载图片并打包成压缩包,vue3导出多个pdf或excel打包成zip压缩包进行下载,批量下载文件并打压缩包,vue3中如何批量下载文件并生成zip格式文件,文件通过服务端接口返回二进制文件流如何处理,文

🏆 前端领域优质创作者 1万+

(博弈/sg打表)E&D

https://www.luogu.org/problemnew/show/P2148 给出n对(a, b)石子堆,每次可以选择一堆去掉后将另一堆分元素到这堆,每次操作后个堆数目&amp;gt;0 即(a, b) -&amp;gt; {(c, d) | c + d = a | c + d = b} 根据分析打表,预处理每个a的c + d的sg #include &amp;lt;bits/stdc++.h&amp;gt; usin...

weixin_40588429的博客 477

Sigrity System SI SerialLink模式进行Pcie3协议仿真分析操作指导-pcie3_client_single_pre

Sigrity System SI SerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议需要检查的项目,通过协议分析视为满足设计要求,下面介绍pcie3_client_single_pre仿真分析,具体操作如下。Random(Rj):随机抖动,该抖动用高斯概率分布来描述,通常是由热噪声和其它随机噪声引起的,默认为1.24%UI RMS(平均值),即和标准值的偏差为1.24%UI。

weixin_54787054的博客 598

【产品经理修炼之道】- 基金产品-“TA系统 ”

TA:Transfer Agent 缩写,通常称成“登记过户”。开放式基金登记过户(TA)系统是基金的登记过户系统。其功能涵盖了基金交易业务的各个环节,包括账户业务处理,如投资者开户、修改账户资料、挂失/解挂等;日常交易业务处理,如认购、申购(一般申购和定期定额)、赎回(一般赎回、指定赎回、预约赎回等)、转托管、基金转换等;特殊业务处理,如非交易过户、账户冻结/解冻等;分红业务处理,如现金分红和红利再投资。

xiaoli8748的专栏 1678

算法 SG函数

昨天我们省的大神犇xys大佬,要跟我玩一个小游戏,大概是有几个数,每次你可以选择一个,减去某个值,最后到谁这些数都被减成0,谁就输。很不巧,我一眼就看穿了这是一个先手必胜的游戏,然后我选了先手,然后……我记错了必胜策略,然后就在大佬的微笑中输掉了比赛…… 据说这个SG函数的证明过程比较复杂,我就大概会先写一下,他是啥,怎么做,就不去证明了。 我们定义必输的局面的SG函数值为0,

Gqe 1181

一文搞懂YOLO各版本差异:v5易用、v8多任务、v10低延迟,该怎么选?

YOLOv5的“易用”是为了降低入门门槛,适合新手启蒙和旧项目维护;YOLOv8的“多任务”是为了满足工业需求,成为目前的主流版本;YOLOv10的“低延迟”是为了适配边缘计算,代表未来的发展趋势。选型的核心不是“选最新的”,而是“选最适合自己场景的”。记住选型口诀,按场景对号入座,就能避开99%的坑。希望这篇文章能帮你彻底搞懂各版本差异,选对属于自己的YOLO版本!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1169

博弈论习题

vj题目汇总 一, 威佐夫博弈: (1)HDU 1527(入门) (2) HDU 2177 (进阶1) (3)51Nod 1185(进阶2) 注:进阶1中提处理了输出威佐夫博弈的第一种可行方案的问题; 进阶2处理了威佐夫博弈中(黄金比例*大数)精度会损失的问题; 补充:威佐夫博弈中,非奇异局势可以通过一步找到奇异局势。 二, Nim(尼姆)博弈: Nim博弈: (1)HDU 1850 判断是否获胜...

地衣的博客——qdu 675

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

博弈题目集结+题解(不定期更新)

HDOJ1079&POJ1082&ZOJ1024Calendar Game 开始是用求SG的方法做的,后来发现和奇偶性有点关系,然后问了问大佬,果然如此,然后就是两个日期特判一下就行了。 链接:点这里 题解:点这里HDOJ1527取石子游戏 就是 威佐夫博弈,稍微注意一下精度就行。算是学习威佐夫博弈的练习题吧。 链接:点这里 题解:点这里HDOJ1564Play a game 怎么说呢

温文尔雅 693

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

博弈论大作战之 PART2

HDU1536 S-Nim   先暴力预处理所有的值得sg值,然后就是一样的。 #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,a,b) for(int (i)=(a);(i)<=(b);(i)++) #

utoppia is another word . 827

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SG函数与记忆化搜索实战:从日期博弈题HDU1079解析公平组合游戏

在算法设计与博弈论领域,公平组合游戏(Impartial Game)是一类双方操作规则完全相同的决策问题,其核心分析工具是SG函数(Sprague-Grundy函数)。SG函数通过递归定义,为每个游戏状态赋予一个非负整数值,其核心原理是计算后继状态SG值集合的最小排斥值(mex),以此量化状态的胜负属性:SG值大于0代表先手必胜态,等于0则为先手必败态。这一数学化方法的技术价值在于,它将复杂的博弈局面转化为可计算的状态图,为算法优化提供了理论基础。在工程实践中,直接递归计算SG函数常面临指数级复杂度,此时记

weixin_34288121的博客 454

SG博弈简单题

ZOJ - 2083 - Win the Game题目传送:Win the Game最近正在慢慢体会博弈里面的SG函数的意义此题是最简单的SG博弈问题,只需打个表就OK了AC代码:#include <map> #include <set> #include <list> #include <cmath> #include <deque> #include <queue> #include <stac

Never say never 1865

三大博弈博弈+斐波那契博弈+sg函数

博弈 (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 –>要保持给对手留下(m+1)的倍数,就能最后获胜。 例题 HDU-4764-Stone 【巴什博弈】 http://acm.hdu.edu.cn/showproblem.php?pid=4764 (二)威佐夫博奕(Wythoff Game):有两堆各若...

卖炫迈的小男孩的博客 581

博弈论 SG函数

别被文章长度吓到,学会博弈(SG)只用看前1/10。 鉴于讲明白博弈要写好多字,于是找了些论文拼凑,对疑难点加了注释并配上“美图”助解。 Nim游戏 重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。 Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论

Strangedbly 4万+

2021-牛客多校第一场(ABDFG)含暴力sg

博弈,要么败要么胜.在我看来,博弈就是一个状态转移问题,由必胜态向必败态两者之间不断转换.常规博弈,比如bash博弈(两个人取m个物品,最多取n个,先取完胜利)这类,就是找到了必胜必败的规律来直接找到问题答案,一般要么记规律,要么暴力打表找规律......当然,像nim游戏这类求异或和再判断的博弈,也可以将问题化为二进制数来寻找规律.你也许会想:博弈就这?但是,这些都是特殊情况,那么在没有特殊情况的一般博弈里面,我们该如何求呢?为了解决这些,我们引入了sg函数. 必胜点,必败点 在引入sg函数之前,先引

qq_49593247的博客 774

ACM2016多校联赛1B hdu5724 Chess(博弈)

感谢围巾师兄,不然完全想不到。 Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1006    Accepted Submission(s): 439 Problem Description

overload1997 1万+

HDU1848 Fibonacci again and again(SG函数的应用)

学习自SG函数讲解http://blog.sina.com.cn/s/blog_83d1d5c70100y9yd.html 上代码 #include #include #include #include #include #include #include int book[1005]; using namespace std; int f[1005]

overload1997 464

2016多校联赛3C (hdu5754) Life Winner Bo

Life Winner Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 61    Accepted Submission(s): 16 Problem Description Bo is a "Life

overload1997 399
上一篇: HDU1848 Fibonacci again and again(SG函数的应用)
下一篇: HDU5239 Doom
overload1997
博客等级 码龄11年 328粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值