POJ - 2599 A funny game NP状态定理

【小组专题二:博弈论入门综述(1)】NP状态 | SG函数 | 巴什博奕、威佐夫博弈、斐波那契博弈、Nim游戏、SJ定理 博弈论综述【1】前言博弈与博弈论博弈树NP状态SG函数(Sprague-Grundy)Sprague-Grundy Theorem巴什博奕 Bash Game威佐夫博弈扩展威佐夫博弈斐波那契博弈Nim博弈拓展Nim博弈与Nim博弈的各个变种(1)拓展维度(2)先手怎么取(3)求先手一开始有多少种取得方式能够赢(4) 变形:有拿取上限(NYOJ-135)(5) 阶梯博弈(**Nim Staircase**博弈)最后的最后:SJ定理与Anti-SG游戏各种练习题啦!可能下期会将的内容(?) 博弈与博弈论 阅读详情

题目:有一棵无向树,从某个结点出发,两个人轮流移动,走过的结点不能再走,不能移动的人输。判断先手必胜还是先手必败,如果先手必胜,输出必胜到达的节点。

思路:利用NP状态定理,把起点的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=1e3+5;
vector<int> G[maxn];
int sg[maxn];
int get_sg(int u,int fa){
    if(sg[u]!=-1)
        return sg[u];
    sg[u]=0;
    for(int i=0;i<G[u].size();i++){
        int v=G[u][i];
        if(v==fa) continue;
        if(get_sg(v,u)==0)
            sg[u]=1;
    }
    return sg[u];
}
int main(){

    int n,start,u,v;
    while(~scanf("%d%d",&n,&start)){
        for(int i=1;i<=n;i++){
            G[i].clear();
            sg[i]=-1;
        }
        for(int i=1;i<n;i++){
            scanf("%d%d",&u,&v);
            G[u].push_back(v);
            G[v].push_back(u);
        }
        int ans=get_sg(start,0);
        if(ans>0){
            int id=n+1;
            for(int i=0;i<G[start].size();i++){
                int v=G[start][i];
                if(sg[v]==0)
                    id=min(id,v);
            }
            printf("First player wins flying to airport %d\n",id);
        }
        else{
            printf("First player loses\n");
        }
    }
    return 0;
}


点云配准SIFT+SI+RANSAC+ICP Spin Image(SI)是一种用于点云数据描述的特征描述子,广泛应用于三维点云配准、识别和重建等领域。它能够捕捉点云中的局部几何信息,具有旋转不变性和部分平移不变性等优点,是一种非常强大的特征描述子。Spin Image是一种强大的点云特征描述子,具有旋转不变性、局部几何信息捕捉等优点,适用于点云配准、目标识别和三维重建等多个领域。通过合理选择局部区域、建立参考框架和计算描述子,可以充分利用Spin Image描述点云的特征,从而实现各种三维场景分析和处理任务。 阅读详情

相关推荐

ICC 实战解析——CTS 时钟树综合中的关键设置与优化策略

本文深入解析ICC工具中CTS时钟树综合的关键设置与优化策略,涵盖时钟树异常引脚设置、目标参数配置、非默认布线规则(NDR)等核心技术。通过实战案例展示如何有效控制时钟偏差、优化信号完整性,并平衡功耗与面积,为芯片物理设计提供专业指导。

weixin_30872577的博客 324

牛客 - 树上博弈(思维)

题目链接:点击查看 题目大意:给出一棵树,现在有两个人在玩一个游戏,两人依次在树上行走,只能走没有人的结点,无法行走的人失败,题目需要我们求出有多少个初始点对,对于先手而言是必胜的情况 题目分析:其实稍微画图就能看出来,如果初始时两个人之间的距离为偶数,那么先手必胜,否则先手必败,因为如果初始距离为偶数的话,那么先手总是可以有路可走的,而后手总会被逼到叶子结点上去,而距离为偶数,意味着深度奇偶...

Falcon的博客 1014

VMware虚拟机调用NVIDIA显卡全攻略:从3D加速到直通与vGPU

显卡虚拟化技术是虚拟化领域的关键组成部分,它通过在虚拟机中模拟或直接分配物理GPU资源,实现了图形渲染与通用计算的加速。其核心原理在于通过Hypervisor层对GPU指令进行拦截、转换或直接映射,从而平衡资源隔离与性能损耗。这项技术的核心价值在于提升资源利用率、实现计算环境隔离,并支持AI训练、3D渲染、科学计算等高性能负载的灵活部署。在应用场景上,轻量级图形界面加速、CUDA学习验证适合使用虚拟3D加速;而追求极致性能的机器学习训练、专业渲染则需依赖PCIe直通技术;对于企业级GPU资源池化与多租户共享

weixin_32308101的博客 994

Calendar Game HDU - 1079(博弈 NP状态定理)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1079 非常经典的 NP状态博弈,有三种方法,记忆化搜索,逆序递推,找规律。 NP状态定理:P是“胜利终止状态”或者它的一切后继状态都是N状态,N是“失败终止状态”或者至少拥有一个后继状态是P状态。 也就是说后继状态为P的一定为N状态,不存在后继状态为N的为P状态。 进行记忆化搜索 将年份-1900...

呼吸 388

【Qt】Qt5.15在线安装避坑指南:从代理配置到组件选择的完整实践

本文详细介绍了Qt5.15在线安装的全流程避坑指南,包括代理配置、组件选择和常见问题解决方案。通过使用Fiddler工具和国内镜像源,可显著提升下载速度。文章还提供了组件选择的黄金法则和安装后的验证步骤,帮助开发者高效完成Qt5.15的安装与配置。

weixin_42550052的博客 269

FusionCompute8.0.0实战指南:从零部署CNA与VRM环境

本文以华为FusionCompute 8.0.0为例,详细介绍了如何利用老旧硬件从零开始部署CNA计算节点与VRM管理节点的完整实战指南。内容涵盖实验环境准备、CNA安装与网络配置、VRM虚拟机部署方案对比,并提供了典型故障排查与性能调优技巧,帮助读者低成本构建可用的虚拟化学习环境。

weixin_29306317的博客 315

POJ - 2068 Nim NP状态定理

题目:有S个石子,有两个队,每个队有n个人,每个人每次有数量限制,取最后一个石子的输,0,2,4,6,...属于1队,其余的属于2队,按0,1,2,3,4,..,2n,0,1,2,....的顺序轮流操作,问先手必胜还是先手必败,1队先手。 思路:利用NP状态定理解决 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #in

ACVevtor的博客 453

UniApp 与 Taro 深度解析:如何根据项目需求选择最佳跨平台框架?

本文深度对比了UniApp和Taro两大主流跨平台开发框架。UniApp基于Vue生态,提供开箱即用的高效开发体验,尤其适合快速覆盖多端小程序;Taro则根植React范式,架构灵活,便于与现有React生态集成,更适合对性能和原生体验有高要求的复杂项目。文章结合团队技术栈、项目类型及性能需求,为开发者提供了清晰的选型指南。

snow3的博客 204

HDU 1079 Calendar Game(NP状态交替)

It's a easy Game Theory...... 网上是这么说的,思想到时不难,但操作起来自己遇到些麻烦。作为一只博弈论入门级别弱脊,于是来写一篇题解总结一下吧,虽然是自己模拟出来的,但中间还是遇到了一丝丝麻烦。大家都知道,所有的后继状态是N状态的某个状态叫做P状态,后继状态中存在一个或多个状态为P状态的某个状态叫做P状态,哎,当时写的时候不知道咋想的,写×了,于是WA了好多次,但今天

yo_bc的博客 487

S7-200 SMART PLC 子程序功能块(阀门控制)

由于S7-200 SMARTPLC的子程序种种功能、容量限制,有时想实现多次调用的子程序可能并不是太容易,这篇博客还是给出一些推荐写法,供大家参看。

RXXW_Dor的博客 8064

高通GAIA V3命令参考手册的研读学习(15):自定制命令的详细工作描述

里的示例一样,手机APP发出这个GetManuFacturer的命令发0x0000,那么耳机回复:0x8000, 同时在回复的playload部分,用最多15个字节的ACSII码来表达制造商信息(因此最多15个字母)。那么这个APP在通过GAIA协议控制这个耳机时,不仅可以通过前面讲过的vendor ID来识别,也可以更进一步通过这个命令来识别这个耳机,到底是不是本公司的。通过这个可变长度的playload,真的是可以传达极多的事先约定的信息,相当的灵活,真是不错!这个命令用来得到设备的制造商信息。

qq_37191547的博客 397

NP、OSPF链路状态数据库

OSPF是一种基于链路状态的动态路由协议,每台OSPF路由器都会生成相关的LSA,并将这些LSA通告出去。路由器收到LSA后,会将它们存放在链路状态数据库LSDB中。 LSA有多种不同类型,不同类型的LSA的功能和作用是不同的。 Type-1 LSA(Router LSA):每台路由器都会产生,用来描述路由器的直连链路状态和开销值。Type-1 LSA只能在所属区域内部泛洪,不能泛洪到其它区域。 Type-2 LSA(Network LSA):它是由DR产生的,主要用来描述该DR所在网段的网络掩码以及该网段

weixin_44551911的博客 1093

一个服务如何被找到、被调用、被看见:注册中心、发布注册、发现调用与服务监控的治理闭环

服务数量一多,“对方在哪儿”就成了时刻变化的变量。本文沿发布、注册、发现、调用、监控的治理闭环展开:注册中心的数据模型、健康检查与AP/CP取舍,自我保护、推空保护与本地快照三道自保机制;服务发布的启动器、动态代理、发布管理器、协议服务器与登记顺序;消费端的服务目录、请求ID配对、六种集群容错与三种发现模式;日志、指标、链路三支柱与熔断舱壁。配套五个Java演示程序实测:默认参数下宕机实例平均240秒才被摘除,优雅下线可降至45秒,统计窗口长于租约会让自我保护失效,尾部采样可捕获全部慢请求。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 169万+

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

android 蓝牙通讯demo

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU - 1527 取石子游戏

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

ACVevtor的博客 947

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

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

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

ACVevtor的博客 796

IMSL CNL 7.0.0 (x86-64)Crack

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

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 - 1846 Brave Game

题目: 游戏是这样定义的:  1、  本游戏是一个二人游戏;  2、  有一堆石子一共有n个;  3、  两人轮流进行;  4、  每走一步可以取走1…m个石子;  5、  最先取光石子的一方为胜;  如果游戏的双方使用的都是最优策略,请输出哪个人能赢。  思路:我们可以发现sg[n]=n%(m+1) 代码: #pragma comment(linker, "/STAC

ACVevtor的博客 622

ZOJ - 3057 Beans Game NP状态定理

题目:有3堆石子,分别有a,b,c个石子,两个游戏者轮流操作,每次可以选择取走某一堆x个石子,或选择某2堆石子在2堆石子中取走相同数目的石子。问先手必胜(输出1),还是先手必败(输出0)。 思路:利用NP状态定理,把所有状态预处理出来 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #

ACVevtor的博客 616

HDU - 3094 A tree game 树的删边博弈

题目:有一棵树,每一次操作有两步,第一步选择一条边删除,第二步把没有和根相连的边和点全部删除。不能进行操作的人输。 思路:每一个节点的sg值都是其子节点的sg值加1的异或和 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #incl

ACVevtor的博客 591

HDU - 1847 Good Luck in CET-4 Everybody!

题目: 总共n张牌;  双方轮流抓牌;  每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)  抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;  假设Kiki和Cici都是足够聪明,并且每次都是Kiki先抓牌,请问谁能赢呢?  思路:求出n的sg值,sg>0先手必胜,sg=0先手必败 代码: #pragma comment(linker, "/STACK:1024

ACVevtor的博客 583

POJ - 3317 Stake Your Claim 极大极小搜索+alpha-beta剪枝+记忆化搜索

题目:给出一个n*n包含0或1或.的矩阵,两个依次找一个空格子,放入0和1,最终看连通0多还是连通的1多,得分是一个选手的最大连通数减去另一个选手的。问当前局面的操作者能够得的最大的分数,及最大分数下最小字典序的操作。 思路:有的说alpha-beta剪枝和记忆化搜索不能一起使用,有的说只要把参数记下来就可以一起用   代码: #pragma comment(linker, "/STACK:

ACVevtor的博客 564

UVALive - 3668 A Funny Stone Game

题目:David 玩一个石子游戏。游戏中,有 n 堆石子,被编号为 0..n-1。两名玩家轮流取石子。 每一轮游戏,每名玩家选取 3 堆石子 i,j,k(i 思路:利用SG函数来做。可以把每个石头看作是独立的游戏,那么对于某个在第i位的石头,它的后续状态是所有的在第j、k位的两个石头,这两个石头也是独立的游戏,那么sg[i] = mex{sg[j] ^ sg[k]},对于每个位置的sg[i]可以

ACVevtor的博客 562

HDU - 2999 Stone Game, Why are you always there? 求sg值

题目:给出一串连续的K个石头,一个集合allow,每次取出若干个连续的石头(数量必须为集合allow中的),最后取完的获胜,问有没有必胜策略。 思路:求出sg值 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #i

ACVevtor的博客 555

ZOJ - 1039 Number Game 状态压缩

题目:2-20这19个数字的游戏。每取走一个数之后,这个数的倍数便不能再取,而且某两个取过的数的倍数的和,也不能再取。给出当前可取数字的状态,问当前状态是不是先手必胜状态。如果是,输出取法 思路:利用NP状态定理和状态压缩做。 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #incl

ACVevtor的博客 535
上一篇: POJ - 2068 Nim NP状态定理
下一篇: POJ - 3710 Christmas Game tarjan+树的删边游戏
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值