codeforce gym 100548H The Problem to Make You Happy

题意:

Alice和Bob在一个有向图上玩游戏,每个人各自操作一个棋子,如果两个棋子走到一个点上,判定Bob输;如果轮到任何一方走时,无法移动棋子,判定该方输

现在Bob先走,要求判断胜负

 

题解

模型上看是SG问题,但是通常的SG做法需要DP,但是考虑这不是DAG模型,普通的记忆化搜索写法会RE

正解的DP做法:dp[i][j][k]:i,j是Bob,Alice的位置,k是目前轮到谁走了。

开始将所有显然的Bob输的情况加入队列中,不断拓展,找到所有的Bob输的情况。

转移类似SG

#include<bits/stdc++.h>#define clr(x,y) memset((x),(y),sizeof(x))using namespace std;
typedef long long LL;const int maxn=100;struct Node
{int x1,x2;int turn; // 0:Bob 1:Alice
};int n,m;
int a,b;
int num[maxn+5][maxn+5];
int deg[maxn+5];
bool mp[maxn+5][maxn+5];
bool dp[maxn+5][maxn+5][2];
queue <Node> Q;void solve(int iCase)
{while (!Q.empty()) Q.pop();int u,v;clr(mp,0);clr(deg,0);for (int i=1;i<=m;++i){scanf("%d%d",&u,&v);++deg[u];mp[u][v]=true;}scanf("%d%d",&a,&b);clr(dp,-1);for (int i=1;i<=n;++i){dp[i][i][0]=false;dp[i][i][1]=false;Q.push((Node){i,i,0});Q.push((Node){i,i,1});}for (int i=1;i<=n;++i){if (deg[i]==0){for (int j=1;j<=n;++j){if (i==j) continue;dp[i][j][0]=false;Q.push((Node){i,j,0});}}}clr(num,0);while (!Q.empty()){Node now=Q.front();Q.pop();int x1=now.x1;int x2=now.x2;int turn=now.turn;if (turn==0){for (int i=1;i<=n;++i){if (mp[i][x2]){if (!dp[x1][i][1]) continue;dp[x1][i][1]=false;Q.push((Node){x1,i,1});}}}else{for (int i=1;i<=n;++i){if (mp[i][x1]){++num[i][x2];if (num[i][x2]==deg[i]) //如果从i出发的所有的状态都是必败态,那么dp[i][x2][0]本身也是必败态
                    {if (!dp[i][x2][0]) continue;dp[i][x2][0]=false;Q.push((Node){i,x2,0});}}}}}if (dp[a][b][0]) printf("Case #%d: Yes\n",iCase);else printf("Case #%d: No\n",iCase);
}int main(void)
{#ifdef exfreopen ("../in.txt","r",stdin);//freopen ("../out.txt","w",stdout);#endifint T;scanf("%d",&T);for (int i=1;i<=T;++i){scanf("%d%d",&n,&m);solve(i);}
}

 

转载于:https://www.cnblogs.com/123-123/p/5862357.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES6(三)——Set、WeakSet、Map、WeakMap

一、Set的基本使用 在ES6之前&#xff0c;我们存储数据的结构主要有两种&#xff1a;数组、对象。 在ES6中新增了另外两种数据结构&#xff1a;Set、Map&#xff0c;以及它们的另外形式WeakSet、WeakMap。 Set是一个新增的数据结构&#xff0c;可以用来保存数据&#xff0c;类…

git gui怎么拉取项目代码_Git可视化极简易教程 — Git GUI使用方法

前言之前一直想一篇这样的东西&#xff0c;因为最初接触时&#xff0c;我也认真看了廖雪峰的教程&#xff0c;但是似乎我觉得讲得有点多&#xff0c;而且还是会给我带来很多多余且重复的操作负担&#xff0c;所以我希望能压缩一下它在我工作中的成本&#xff0c;但是搜索了一下…

POJ分类-转载

转载过来&#xff0c;慢慢刷 初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法: (1)图的深度优先…

smzdm 扫地机器人_堪称米家最值!米家系列扫地机器人选购须知

堪称米家最值&#xff01;米家系列扫地机器人选购须知2018-05-14 17:34:44102点赞354收藏81评论本篇内容来自#全民分享季#第三季活动&#xff0c;本周选题#分享你的生活记录#&#xff0c;共同瓜分5000金币&#xff01;拿紫米移动电源&#xff0c;抽取最新款iPad&#xff01;快来…

ES6~ES12——Array Includes、Object values、Object entries、Object fromEntries、flat、flatMap、空值合并运算符、可选链等

一、ES7 - Array Includes 在ES7之前&#xff0c;如果我们想判断一个数组中是否包含某个元素&#xff0c;需要通过 indexOf 获取结果&#xff0c;并且判断是否为 -1。 在ES7中&#xff0c;我们可以通过includes来判断一个数组中是否包含一个指定的元素&#xff0c;根据情况&…

移除通知的时机

链接 结论 最好是在不需要的时候就移除掉。 如果不是特别苛刻&#xff0c;可以直接在dealloc函数里写。因为dealloc函数一定会被调用的。 在dealloc函数中移除的可能问题 由于dealloc在Runloop结束时会被调用。如果在Runloop调用之前&#xff0c;又有一个通知到来&#xff0c;会…

谷歌浏览器有哪些好看的主题_Kibou 简洁的Typecho主题

一款基于 Bootstrap 的单栏的简洁的自适应Typecho主题。这是一款开发于17年的Typecho主题,如果您喜欢简洁的单栏主题&#xff0c;那么这款主题会是您不错的选择Kibou 是一款基于 Bootstrap 的单栏的简洁的自适应Typecho主题。这是一款开发于17年的Typecho主题,如果您喜欢简洁的…

JS高级——Proxy、Reflect

一、监听对象的操作 我们先来看一个需求&#xff1a;有一个对象&#xff0c;我们希望监听这个对象中的属性被设置或获取的过程 通过我们前面所学的知识&#xff0c;能不能做到这一点呢&#xff1f;其实是可以的&#xff0c;我们可以通过之前的属性描述符中的存储属性描述符来…

python为什么不会溢出_深入分析python中整型不会溢出问题

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

Promise学习笔记

一、异步任务的处理 这里我从一个实际的例子来作为切入点&#xff1a; 我们调用一个函数&#xff0c;这个函数中发送网络请求&#xff08;我们可以用定时器来模拟&#xff09;&#xff1b;如果发送网络请求成功了&#xff0c;那么告知调用者发送成功&#xff0c;并且将相关数…

实验代做 行人识别_实验室代做实验项目

实验室代做实验项目一、分子生物学检测服务1、 引物设计合成(人、大鼠、小鼠、兔等)2、 基因表达水平检测、内参检测3、 SNP检测服务4、 甲基化检测服务5、 测序技术服务6、 芯片检测(全基因、MicroRNA)7、 染色体分析二、病理形态学检测1、 HE、特殊染色(PAS、MASSON等)2、 电…

Java学习笔记之:Java引用数据类型之字符串

一、简介 字符串广泛应用在Java编程中&#xff0c;在Java中字符串属于对象&#xff0c;Java提供了String类来创建和操作字符串。 创建字符串最简单的方式如下: String greeting "Hello world!"; 在代码中遇到字符串常量时&#xff0c;这里的值是"Hello world!&…

JS高级——Iterator迭代器、Generator生成器

一、什么是迭代器&#xff1f; 在JavaScript中&#xff0c;迭代器也是一个具体的对象&#xff0c;这个对象需要符合迭代器协议&#xff08;iterator protocol&#xff09;&#xff1a; 迭代器协议定义了产生一系列值&#xff08;无论是有限还是无限个&#xff09;的标准方式&…

删除一行下方单元格上移_快速删除Excel工作表多余空单元格

从其他地方复制了数据&#xff0c;有时候会出现多余的空单元格。手动删除很麻烦&#xff0c;就像下面的图中的工作表区域。下面介绍一种方法&#xff0c;可以快速删除多余空单元格。1.选中目标区域&#xff0c;在这里就选中A1:A9的单元格区域。2.按键盘上的F5或者CtrlG。3.点击…

php的memcache安装,在window10下面

1.memcached-win对应得安装包 2.解压&#xff0c;可以放到任意目录&#xff0c;以管理员身份打开cmd 3.在安装的目录下面&#xff0c;执行如下命令memcached.exe -d install 安装Memcached.exe –d start 开启服务Memcahced.exe –d stop 停止服务Memcached.exe –d rest…

JS高级——await-async

一、异步函数 async function async关键字用于声明一个异步函数&#xff1a; async是asynchronous单词的缩写&#xff0c;异步、非同步&#xff1b;sync是synchronous单词的缩写&#xff0c;同步、同时&#xff1b; async异步函数可以有很多中写法&#xff1a; 二、异步函…

图象关于y轴对称是什么意思_数学概念丨“图象”与“图像”是有区别的 ,你知道吗?...

你与数学间只差一个公众号解读教材教法&#xff0c;研究解题策略&#xff0c;传播数学文化&#xff0c;推广数学应用&#xff0c;推送知识干货&#xff0c;分享学习方法。精彩分享初一数学全国各地期中试卷150套&#xff0c;word版初二数学全国各地期中试卷150套&#xff0c;wo…

数据压缩 第二次作业

1.设X是一个随机变量&#xff0c;取值范围是一个包含M个字母的符号集。证明0<H(X)<log2M。 2.证明如果观察到一个序列的元素为iid分布&#xff0c;则该序列的熵等于一阶熵。 3.给定符号集A{a1,a2,a3,a4},求以下条件下的一阶熵&#xff1a; (a) p(a1)p(a2)p(a3)p(a4)1/4 (…

JS高级——错误处理

一、错误处理方案 开发中我们会封装一些工具函数&#xff0c;封装之后给别人使用&#xff1a; 在其他人使用的过程中&#xff0c;可能会传递一些参数&#xff1b;对于函数来说&#xff0c;需要对这些参数进行验证&#xff0c;否则可能得到的是我们不想要的结果&#xff1b; …

k1658停运到什么时候_春节网购别被商家忽悠!春节快递不停运,但价格会和平时不一样...

现在临春节已经越来越近了&#xff0c;这些天也是网购订单大幅度增长的时间&#xff0c;因为年底的时候很多人的网购需求都爆发了&#xff0c;会想着买各种东西到家&#xff0c;包括年货的置办。也就是在这种时候&#xff0c;很多网店过年的时候都会休息&#xff0c;但是也有一…