POJ - 2311 Cutting Game SG函数

SG函数之POJ2311Cutting Game && AcWing219 剪纸游戏 题目链接:链接 Cutting Game 思路:1.1×X 或 X * 1的纸张一定是必胜态,然而他们必须经过2×2,2×3,3×2的局面,而这些局面为必败态,由此推出了在我前一篇博客中讲到的公平组合游戏四要素 1.2人的公平游戏 2.交替操作 3.操作方法一样 4.无法操作的时候为负(在这里便有所涉及) 接下来就是如何写SG函数了,如下: #include<bits/stdc++.h> using namespace std; const int N = 210; int n , m; int 阅读详情

题目:给你一个w*h的矩形,每次可以选择横向或纵向切割矩形,将其分成2个矩形,N次操作后,就会有N+1个矩形,谁先切割出1*1谁就获胜。

思路:谁先切割出1*1谁就胜,那么就是说谁切割出1*x或x*1谁就输了。然后求SG函数就可以了。

代码:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<algorithm>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<list>
#include<numeric>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define INF 0x3f3f3f3f
#define mm(a,b) memset(a,b,sizeof(a))
#define PP puts("*********************");
template<class T> T f_abs(T a){ return a > 0 ? a : -a; }
template<class T> T gcd(T a, T b){ return b ? gcd(b, a%b) : a; }
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
// 0x3f3f3f3f3f3f3f3f
//0x3f3f3f3f

const int maxn=210;
int sg[maxn][maxn];
int get_sg(int w,int h){
    if(w>h) swap(w,h);
    if(sg[w][h]!=-1)
        return sg[w][h];
    bool mex[1000];
    mm(mex,false);
    for(int i=2;i<=w;i++){
        if(w-i>=2){
            int pos=(get_sg(i,h)^get_sg(w-i,h));
            mex[pos]=true;
        }
    }
    for(int i=2;i<=h;i++){
        if(h-i>=2){
            int pos=(get_sg(w,i)^get_sg(w,h-i));
            mex[pos]=true;
        }
    }
    for(int i=0;;i++){
        if(!mex[i]){
            sg[w][h]=i;
            break;
        }
    }
    return sg[w][h];
}
int main(){

    int w,h;
    mm(sg,-1);
    while(~scanf("%d%d",&w,&h)){
        int ans=get_sg(w,h);
        if(ans>0) printf("WIN\n");
        else printf("LOSE\n");
    }
    return 0;
}


高通camx架构学习(零)—— 深入理解Camera 硬件抽象层 从上面的定义可以看出,主要是通过hw_module_t 代表了模块,通过其open方法用来打开一个设备,而该设备是用hw_device_t来表示,其中除了用来关闭设备的close方法外,并无其它方法,由此可见谷歌定义的HAL接口,并不能满足绝大部分HAL模块的需要,所以谷歌想出了一个比较好的解决方式,那便是将这两个基本结构嵌入到更大的结构体内部,同时在更大的结构内部定义了各自模块特有的方法,用于实现模块的功能,这样,一来对上保持了HAL的统一规范,二来也扩展了模块的功能。 阅读详情

相关推荐

(蓝桥杯)STM32G431RBT6(SysTick timer)

选用最基础的定时器。

2301_81764359的博客 1899

【题解】POJ2311 Cutting Game

博弈论,sg函数。

inferior_hjx的博客 502

agent-browser OpenClaw 的最佳搭档

agent-browser 是专为 AI Agent 设计的浏览器自动化工具,目前被公认为 OpenClaw 的最佳配套方案。这份技术文档完整记录了其架构、协议、性能调优与常见问题处理,非常适合想让OpenClaw 真正“上手”互联网的开发者与老用户。

liu_zhiyi的博客 1779

POJ2311(SG函数)解题报告

原题链接:POJ2311 解析:作为书上的例题,用来练手,思路懒得说,主要熟悉代码写法。 代码示例: #include&lt;cstring&gt; #include&lt;cstdio&gt; const int maxn = 300; int sg[maxn][maxn]; int vis[1000]; int get_sg(int n,int m){ if(n == 1 || m ...

帅比王的博客 819

银河麒麟Arm64 v10 sp1系统QT5.12.8离线环境配置全攻略

本文详细介绍了在银河麒麟Arm64 v10 sp1系统上配置QT5.12.8离线开发环境的完整流程。从安装包获取、依赖检查到环境变量配置,逐步指导开发者解决飞腾处理器架构下的常见问题,包括OpenGL库冲突、中文乱码处理等,特别适合军工、政务等需要离线部署的场景。

weixin_26899659的博客 504

OpenClaw Windows 最详细安装指南

Windows上养龙虾:OpenClaw完整安装教程+钉钉接入,助你养只大龙虾

weixin_43405859的博客 2211

poj 2311 (博弈,分解为子问题)

#include #include #include #define MAX_N 200+16 using namespace std; int sg[MAX_N][MAX_N]; int grundy(int w,int h) { int i; if(sg[w][h]!=-1) return sg[w][h]; sets; for(i=2;w-i>=2;i++) s.ins

sky_zdk的博客 435

【Qualcomm高通音频】如何封装音频控件?

音频代码涉及面很广,这篇文档介绍如何封装音频控件给HAL层使用。这里以AW87519芯片调试为例进行介绍封装音频控件和使用的方法。在最初接出到高通音频基础功能调试的时候,都是从tinyalsa指令/mixer_paths文件配置开始。因为单独一个音频设备的调试,都对应一条音频链路的打通。比如以下链接上高通平台基础音频输入输出设备调试: 【Qualcomm音频】Speaker 调试记录http...

crow_ch的博客 1954

[POJ2311]Cutting Game(博弈Multi-SG函数)

一个理想中的学生,应该有极高的学术天分,和刻苦学习的潜能,而且他必须有独立的人格,并且在学术上有独立思考的能力。他要有志向,去不遗余力地鞭策自己,同时具有改变世界的壮志雄心。

zyf2000 1264

PCIE2.0/PCIE3.0/PCIE4.0/PCIE5.0接口的带宽、速率计算

一、PCIE接口速率: 二、PCIE相关概念: 传输速率为每秒传输量GT/s,而不是每秒位数Gbps,因为传输量包括不提供额外吞吐量的开销位; 比如 PCIe 1.x和PCIe 2.x使用8b / 10b编码方案,导致占用了20% (= 2/10)的原始信道带宽。 GT/s —— Giga transation per second (千兆传输/秒),即每一秒内传输的次数。重点在于描述物理层通信协议的速率属性,可以不和链路宽度等关联。 Gbps —— Giga Bits Per Second

技术联盟 1万+

Apache DolphinScheduler 实现了对 OceanBase 的元数据库支持

Apache DolphinScheduler 是一款开源的分布式工作流任务调度系统,它提供了可视化的工作流设计和调度功能,支持大数据任务的自动化调度和监控。最近的更新中,Apache DolphinScheduler 引入了对 OceanBase 数据库的元数据库支持,这为用户在大数据环境中管理和调度任务提供了更多选择。用户可以通过 DolphinScheduler 提供的可视化界面进行工作流的设计和调度,也可以通过 DolphinScheduler 提供的 API 进行任务的编程调度。

VavzNvml的博客 493

【博弈论】POJ 2311 特详细...

题意是一张纸 n*m 每人切一刀 1*1 的赢  切了不扔掉 ----------   默认2 2  / 2 3 / 3 2 都已经失败了 (1 n)这里没进行初始化...  题目里没给  代码里就没达到 (严格的说其实按说都应该拓展成……的) 由异或知, 如果切完之后是两个必败的状态(0和0) ,那么就是当前状态可以达到0 ,mex一下就不会拿到0,所以当前应该是必胜的状态。 如果...

lx233 631

自然语言处理(扩展学习1):Scheduled Sampling(计划采样)与Teacher forcing(教师强制)

作者:安静到无声作者简介:人工智能和硬件设计博士生、优快云与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇。o( ̄▽ ̄)d。

安静到无声 2143

POJ 2311 Cutting Game (SG函数)

转载请注明出处,谢谢 http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents           by---cxlove 题目:给出一个N*M的纸片,每一次可以把一部分剪成两部分,谁剪出1*1的就赢了。 http://poj.org/problem?id=2311 对于任何一个人,都不会先剪出1*n或者n*1,应该这样就必败了。 那我们考

窝不是爱酱,喵~~~~ 6095

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

POJ2311 Cutting Game【SG函数】

Cutting Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7654 Accepted: 2839 Description Urej loves to play various types of dull games. He usually asks other people to play with him. He says that playing those games can show his extraordi

海岛Blog 516

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

POJ-2311 Cutting Game(SG函数,二维)

Cutting Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2750   Accepted: 1009 Description Urej loves to play various types of dull games. He usually ask

狂飙的蜗牛 的专栏 1399

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

kyeremal-poj2311-Cutting Game-sg函数

poj2311-Cutting Game 题意:给定一张n*m的矩形纸片,定义一个决策为:从所有的纸片中任选一张(初始时仅有1张),沿平行于矩形边剪切,将原矩形分割为2个较小的矩形,双方轮流决策,先剪出1*1纸片者获胜,问先手是否必胜. 经典的组合游戏问题,首先一张纸片经过一次裁剪变为两张,即一个游戏变为两个子游戏,那么子游戏和的sg值=子游戏A的sg值异或子游戏B的sg值,即sg[A

kyeremal的专栏 1057

Cutting Game POJ - 2311(SG函数)

Urej loves to play various types of dull games. He usually asks other people to play with him. He says that playing those games can show his extraordinary wit. Recently Urej takes a great interest in ...

tomjobs的博客 650

POJ 2311 Cutting Game【SG函数,子游戏终态】

题目链接:http://poj.org/problem?id=2311题意:给定一张纸,由w×h(2≤w,h≤200)w \times h(2 \le w,h \le 200)个方格组成,两个人轮流横着或者竖着剪一刀,接下来在剪完的所有纸中选择一张继续剪,问谁最先剪出1×11 \times 1的方格。分析:假设(w,h)(w,h)的纸剪一刀之后变成(w1,h1),(w2,h2)(w_1,h_1),

Tuesday 1216

POJ 2311 Cutting Game(SG函数)

题目描述 意思就是说两个人轮流剪纸片,直到有一个人剪出1*1的方格就算这个人赢了。然后给出纸片的长和宽,求先手会赢还是会输 (1<=n,m<=200) 题解 看了一眼,这不是裸的SG吗 啪啪啪写完,一交T了,居然没算复杂度就交了。。。 首先明确,把纸片分成两部分之后的SG是分成两个纸片的异或。 一个非常自然的想法就是,枚举如何分割这个纸片,然后求mex。 但是...

Aaronliu17008的博客 262

Cutting Game POJ2311(SG函数)

Cutting Game - POJ 2311 - Virtual Judge SG函数深入理解orz:博弈论 SG函数_Strangedbly-优快云博客_sg函数 AC代码: #pragma GCC optimize(2) #pragma GCC optimize(3) //#pragma GCC optimize("Ofast") #include <iostream> #include <queue> #include <cstdio> #includ.

eyuhaobanga的博客 338

POJ 2311 Cutting Game 博弈论 SG 函数的理解

传送门 这题是对 SG 函数本质理解的一个绝佳的题目 之前我们做题的时候大多都是 Nim 博弈,想当然的认为 SG 函数用二进制数表示一个局面用的是棋子个数,并且也只适用于这个局面,甚至认为 SG 函数只能解决 Nim 类的题目,并且想当然的认为最初状态(即0的时候 SG = 0) 实际上,SG 函数的适用范围远远比此广得多。而且 SG 函数用来表示局面的二进制只要合理能够区分局面,并且能够自圆其...

企鹅崽博客 354

POJ - 2311 Cutting Game sg函数 二维

Q - Cutting Game POJ - 2311 两个人在玩游戏。游戏规则如下:准备一张分成W x H的格子的长方形纸张,参与游戏的两个人轮流沿着格子的边界线切割纸张,水平或者垂直的奖纸张切割成两个部分。切割了n次之后就得到了n+1张纸,每次都选择切得的某一张纸再次进行切割。首先切出只有一个格子的纸张(1 x 1的各自组成的纸张)的一方获胜。 Input 输入包含多组测试样例。每组...

Wind_bow的博客 298

POJ 2311 Cutting Game SG函数

宽w高h的纸张轮流切割,首先切出1*1纸张的获胜,必败态为宽和高有一个长度为2的状态,剩下的就是SG函数了,就是切成2个纸张的SG值异或和。 package fd; import java.lang.reflect.Array; import java.util.Arrays; import java.util.HashSet; import java.util.Scanner;

嗯。 542

POJ2311_Cutting Game_SG函数

题意 一张分成 w * 好的各自的长方形纸张,两人轮流切割纸张。要沿着格子的边界切割,水平或者垂直地将纸张切成两部分。切割了 n 次之后就得到了 n + 1 张纸,每次都选择切的某一张纸在进行切割。首先切出只有一个格子的纸张的一方获胜。当双方都采取最优策略时,先手必胜还是后手必胜? 思路 SG函数 设当前状态为 x, 定义集合 S(x) = {y | SG(t), t 是 x 可以一步

弱的奋斗之旅 264

POJ2311 Cutting Game SG函数

题目链接:POJ2311 Cutting Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3850   Accepted: 1434 Description Urej loves to play various types of dull g

teddywang 452
上一篇: HDU - 3590 PP and QQ 树的删边博弈+anti_sg
下一篇: POJ - 1678 I Love this Game! 记忆化dp
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值