HDU - 3404 Switch lights Nim乘法

【AUTOSAR-CanNM】-3.1-如何让ECU发出的首帧是NM帧(Tx Nm报文先于Tx App应用报文发出) 如何让ECU发出的首帧是NM帧(Tx Nm报文先于Tx App应用报文发出) 阅读详情

 题目:给定一个n*m的矩形,上面的坐标(x,y)满足0<=x<=n,0<=y<=m,每个坐标上面都有一枚硬币,有的是正面向上,有的是反面向上,每次操作可以选择一个矩形,这个矩形要满足x,y最大的那个顶点上的硬币是正面向上的,将4个顶点的硬币翻面。两个游戏者轮流操作,不能操作的人输,告诉你正面向上的硬币的坐标,问先手必胜还是先手必败。

思路:看论文,论文上面有详细介绍,要用到nim乘法运算

SG(x,y)=Nim_mult(x,y)

Nim_mult(x,y)=mex{Nim_mult(a,y)^Nim_mult(x,b)^Nim_mult(a,b)|0<=a<x,0<=b<y}。


代码:

#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 0x3f3f3f3fn
#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

int m[2][2]={0,0,0,1};
int Nim_Mult_Power(int x,int y){
    if(x<2)
        return m[x][y];
    int a=0;
    for(;;a++)
        if(x>=(1<<(1<<a))&&x<(1<<(1<<(a+1))))
            break;
    int m=1<<(1<<a);
    int p=x/m,s=y/m,t=y%m;
    int d1=Nim_Mult_Power(p,s);
    int d2=Nim_Mult_Power(p,t);
    return (m*(d1^d2))^Nim_Mult_Power(m/2,d1);
}
int Nim_Mult(int x,int y){
    if(x<y)
        return Nim_Mult(y,x);
    if(x<2)
        return m[x][y];
    int a=0;
    for(;;a++)
        if(x>=(1<<(1<<a))&&x<(1<<(1<<(a+1))))
            break;
    int m=1<<(1<<a);
    int p=x/m,q=x%m,s=y/m,t=y%m;
    int c1=Nim_Mult(p,s);
    int c2=Nim_Mult(p,t)^Nim_Mult(q,s);
    int c3=Nim_Mult(q,t);
    return (m*(c1^c2))^c3^Nim_Mult_Power(m/2,c1);
}
int main(){

    int T,n,x,y;
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);//正面向上的硬币的个数
        int sg=0;
        for(int i=1;i<=n;i++){
            scanf("%d%d",&x,&y);//读入正面向上的硬币的坐标
            sg=(sg^Nim_Mult(x,y));
        }
        if(sg>0) printf("Have a try, lxhgww.\n");//先手必胜
        else printf("Don't waste your time.\n");//先手必败
    }
    return 0;
}


[QMT量化交易小白入门]-三十七、QMT中如何使用类似于通达信中的VBA函数(量化python代码解析) 这段代码主要围绕着在QMT环境中实现类似通达信VBA函数的功能展开,核心功能是基于RSI指标来判断股票的买卖时机,并根据持仓情况进行相应的交易操作。class G():passg = G()这里定义了一个空类G,并创建了该类的实例g。这个实例g将作为全局变量来存储一些在整个程序运行过程中需要共享的数据,例如除复权类型、股票代码、目标数量等。1、使用VBA开发策略时,参数固化的问题会带来一些限制,比如无法修改MA函数的周期参数,只能使用固定周期。 阅读详情

相关推荐

Win11系统下Abaqus 2025子程序开发环境一站式配置指南

本文详细介绍了在Win11系统下配置Abaqus 2025子程序开发环境的完整流程,包括VS2022和Intel oneAPI的安装与优化,以及Abaqus 2025的目录规划与环境联调。通过避坑指南和实战案例,帮助用户高效完成开发环境配置,避免常见错误,提升工作效率。

weixin_28717431的博客 332

HDU 3404 Switch light (Nim积)

题面: lxhgww is playing a game with his computer Deep Blue. The game is played on a matrix containing lights. At first, some lights are on, while others are off. lxhgww and Deep Blue take turns to switc...

xiaobian_的博客 310

68页|大型车企集团数字化转型汽车数字化信息系统平台规划方案

这份PPT文档提供了一个全面的汽车集团数字化转型规划方案,涵盖了项目目标、规划思路、实施关注点、解决方案建议以及合作优势等多个方面。

baidu_25525561的博客 1327

hdu3404(Nim积)

题目链接 题目大意: 一个二维矩阵上,有若干个亮着的灯泡 每次选择一个矩阵(右上角的灯泡必须是亮的),改变四个角灯泡的状态 分析: 论文:《从“k倍动态减法游戏”出发探究一类组合游戏问题》 这道题就是Nim积的运用啦 但是看不懂啊 直接献上代码: #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;iostream...

Coco_T的博客 864

MQTT(轻量级消息中间件)基本使用指南

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的发布 / 订阅模式(Pub/Sub)消息传输协议,专为低带宽、不稳定网络环境设计,广泛应用于物联网(IoT)、移动设备、传感器网络等场景(如空气净化器、智能家居设备的远程控制)。Eclipse Mosquitto 是一款轻量级、开源的 MQTT 消息服务器(Broker),由 Eclipse 基金会维护,专为低资源消耗和易用性设计。

墨鸦的博客 1万+

利用Python爬虫获取淘宝商品评论:实战案例分析

在数字化时代,数据的价值日益凸显,尤其是对于电商平台而言,商品评论作为用户反馈的重要载体,蕴含着丰富的信息。本文将详细介绍如何利用Python爬虫技术获取淘宝商品评论,包括代码示例和关键步骤解析。

2401_87849335的博客 2833

HDU-3404 Switch lights(NIM积)

Switch light  HDU - 3404      啊

Eiffel的博客 976

CYUSB3065配置CMOS

按照OG02B10的时序电路,在通过SCCB配置CMOS之前,需要三个电源上电,Xshutdown高电平和配置时钟电路。找到手册的第6章SCCB(跟IIC很像),可以看到SCCB的地址与SID引脚有关,这个需要到硬件原理图上确认下。这是Cypress的一个支持MIPI和UVC的模块,有例程支持OV5640,现在要替换替换成OG02B10。寄存器参数需要找到厂家的FAE,由他们提供,OG02B10的资料已经上传。(2)参考得宏的电路,时钟由主控提供,目前程序未实现。这里有两个重要参数需要搞定,摄像头的。

qq_40773212的博客 2943

HDU 3404 Switch lights(Nim积)题解

题意:在一个二维平面中,有n个灯亮着并告诉你坐标,每回合需要找到一个矩形,这个矩形xy坐标最大的那个角落的点必须是亮着的灯,然后我们把四个角落的灯状态反转,不能操作为败 思路:二维Nim积,看不懂啊,只能套模板了 参考:HDU 3404 Switch lights (NIM 积) 代码: #include<set> #include<map> #includ...

weixin_34297704的博客 195

使用Qt Creator自带的Qt Designer构造UI界面流程总结

在本文中,我们将总结使用Qt Creator自带的Qt Designer构造UI界面的流程。在对话框中,您可以选择一个控件的信号,然后将其连接到另一个控件的槽。例如,您可以将按钮的点击信号连接到一个槽函数,以响应按钮的点击事件。右键单击窗口设计器中的空白区域,选择适当的布局管理器,如水平布局、垂直布局或网格布局。在Qt Designer中,您可以使用各种预定义的UI控件来设计应用程序的界面。现在,您可以在应用程序的源代码中使用生成的UI界面。在您的源文件中,包含相应的头文件,然后创建一个UI界面的实例。

cl6789的博客 1392

智能家居系统设计:基于MATLAB的智能家居系统设计和仿真,包括智能家居控制、家庭能源管理和家庭安全监控

基于 MATLAB 的智能家居系统设计方法可以有效地解决各类智能家居问题。

走向CTO的路上... 1775

hdu3404 Switch lights

题目描述 题解: 首先,由$SG$定理得SG(x,y)=mex(SG(x',y)^SG(x,y')^SG(x',y'))(x'<x,y'<y) 这里的$SG(x,y)$叫$Nim$积。 $Nim$积满足交换律、结合律以及对$Nim$和(异或)的分配律。 代码: #include<cstdio> #include<cstring> i...

a6t2007的博客 212

机器翻译:一文掌握离线翻译库 Argos Translate 的详细使用

Argos Translate是一个开源的离线翻译库,支持多语言互译。它通过独立的翻译包(.argosmodel文件)实现翻译功能,每个包对应特定语言对的翻译任务。安装简单,只需pip安装argostranslate库,并通过命令行或Python API管理翻译包。支持批量处理和长期运行优化性能。对于不支持的语种,可采用桥接翻译或自行训练模型。该库提供CLI工具和Python API,适合集成到各种应用中,还可用于批量文件翻译。主要局限包括缺乏上下文理解、专业领域翻译不精准等。

数据知道的博客 3521

hdu3404 Switch lights

Switch lights Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 341 Accepted Submission(s): 180 Problem Description lxhgww is playing a game

习惯与规则决定命运 1306

假人有限元模型

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HDU 3404 Switch lights (NIM 积)

转载请注明出处,谢谢http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents by---cxlove 题目:http://acm.hdu.edu.cn/showproblem.php?pid=3404 选出一个矩形,改变四个角灯的状态,而且右下角的灯初始必须是开的。 这类组合博弈问题在神牛曹钦翔的论文:从“k倍动态减法游戏”出发探究一类组合游戏问...

java开发指南博客 【转载】 170

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HDU3404&POJ3533(Nim积摸版)

这两道题没什么好说的只能佩服发明这些东西的大佬实在是太厉害;Nim积就是关于x和y的新行算法 我就不多说什么了实在是因为太笨只能记住公式: 附加:(Nim积相关资料来自论文曹钦翔《从“k倍动态减法游戏”出发探究一类组合游戏问题》) HDU:3404 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&g...

Dog_dream的博客 635

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

hdu3404 Switch lights-----NIM积

Switch lights Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 215    Accepted Submission(s): 115 Problem Description lxhgww is playin

Shirley 1765

hdu 2051 Switch Game(模拟/数论)

题目意思: http://acm.hdu.edu.cn/showproblem.php?pid=2053 给你n个灯,刚开始全灭,问经过无穷多次操作后,求第n个灯的状态。 题目分析: 见代码注释。 AC代码: /** *@xiaoran *应该是数论问题,先模拟看看(过了),现在来看这道题 *题意:给你n个灯,刚开始全灭,问经过无穷多次操作后,第n个灯状

机器笨猫 1051

Nim积

我也只会模板 可以用类似大整数分治乘法的思路用Fermat 2-power\texttt{Fermat 2-power}Fermat 2-power 做到比较快的log⁡2\log^2log2计算。(只用分成四个乘法而非五个。) 真正的优化其实是部分记忆化 #include<bits/stdc++.h> #define rep(i,j,k) for(int i=(j),LIM=(k);i<=LIM;i++) #define per(i,j,k) for(int i=(

Freopen的博客 915

Nim积解法小结

由于某毒瘤出题人 redbag 不得不学习一下这个史诗毒瘤算法。 本文参考了 Owaski 的 GameTheory 的课件。 定义 我们对于一些二维 \(\mathrm{Nim}\) 游戏(好像更高维也行),可以拆分成两维单独的 \(\mathrm{Nim}\) 然后求 \(\mathrm{Nim}\) 积。 定义为 \[ x \otimes y = \mathrm{mex}\{(a \ot...

weixin_30919919的博客 822

POJ - 2311 Cutting Game SG函数

题目:给你一个w*h的矩形,每次可以选择横向或纵向切割矩形,将其分成2个矩形,N次操作后,就会有N+1个矩形,谁先切割出1*1谁就获胜。 思路:谁先切割出1*1谁就胜,那么就是说谁切割出1*x或x*1谁就输了。然后求SG函数就可以了。 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #

ACVevtor的博客 977

HDU - 1527 取石子游戏

题目: 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 Input输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数

ACVevtor的博客 947

POJ - 2599 A funny game NP状态定理

题目:有一棵无向树,从某个结点出发,两个人轮流移动,走过的结点不能再走,不能移动的人输。判断先手必胜还是先手必败,如果先手必胜,输出必胜到达的节点。 思路:利用NP状态定理,把起点的SG值算出来。 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #i

ACVevtor的博客 895

HDU - 2177 取(2堆)石子游戏 威佐夫博弈

题目: 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。如果你胜,你第1次怎样取子?  Input输入包含若干行,表示若干种石子的初始情

ACVevtor的博客 796

HDU - 2486 A simple stone game k倍动态减法游戏

题目:有n个石子,两个游戏者轮流操作,第一个操作的人最多能拿走n-1个石子,以后,每个游戏者最多能拿走前一个游戏者拿走数目的k倍,如果先手必败输出lose,否则输出必胜的情况下第一步拿走的石子数。 (2 思路:k=1时必败态是2^i。k=2时必败态是斐波那契数列。k>=3时要构造数列,将n写成数列中一些项的和,使得这些被取到的项的相邻两个倍数差距>k 那么每次去掉最后一个1 还是符合上面的

ACVevtor的博客 753

HDU - 1524 A Chess Game 有向无环图上的博弈

题目:在有n个顶点的有向无环图上玩游戏,一些顶点上面有象棋,游戏者轮流操作,每次可以选择一个象棋将其移动到他的后继节点,不能进行操作的人输,问先手必胜还是先手必败。 思路:把节点的sg值全部求出来就行了。 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #includ

ACVevtor的博客 634
上一篇: HDU - 2486 A simple stone game k倍动态减法游戏
下一篇: HDU - 2999 Stone Game, Why are you always there? 求sg值
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值