题意:

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

codeforce gym 100548H The Problem to Make You Happy相关推荐

  1. codeforce Gym 100500F Door Lock (二分)

    根据题意略推一下,其实就是问你满足(a*(a+1))/2 < m <= ((a+1)*a(a+2))/2的a和m-(a*(a+1))/2 -1是多少. 二分求解就行了 #include&l ...

  2. codeforce Gym 101102A Coins (01背包变形)

    01背包变形,注意dp过程的时候就需要取膜,否则会出错. 代码如下: #include<iostream> #include<cstdio> #include<cstri ...

  3. codeforce Gym 100418K Cards (概率,数学)

    题意:麦田的故事,n张牌,取x张牌,记住前x张牌最大的值m,继续往后取,遇到第一张比m大的牌就停下来.求一个x使得最后的牌在整副牌里是最大的期望最大. 假设最大的牌是A,A在各种位置出现的概率就是相等 ...

  4. codeforce Gym 100685E Epic Fail of a Genie(MaximumProduction 贪心)

    题意:给出一堆元素,求一个子集,使子集的乘积最大,如有多个,应该使子集元素个数尽量小. 题解:贪心,如果有大于1的正数,那么是一定要选的,注意负数也可能凑出大于1的正数,那么将绝对值大于1的负数两两配 ...

  5. 解题报告(五)组合计数(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  6. visualstudio发布网站到服务器,VisualStudio2017 远程 调试 IIS 服务器 web网站

    准备使用 Office 365 中国版--邮箱迁移 微软产品一贯的作风是从来不缺文档和教程,Office 365也不例外.无论是最终用户还是企业IT管理员,都可参照Office 365使用指南顺利的开 ...

  7. Gym 100646 Problem C: LCR 模拟题

    Problem C: LCR 题目连接: http://codeforces.com/gym/100646/attachments Description LCR is a simple game f ...

  8. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset

    Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...

  9. G - Best ACMer Solves the Hardest Problem Gym - 101955G

    G - Best ACMer Solves the Hardest Problem Gym - 101955G 题意: 我们需要建立一个数据库以支持实时查询和修改.这个数据库中的记录是点坐标 (x,y ...

最新文章

  1. R语言绘制相关性热图
  2. asp.net使用easyUI 前后台数据交互
  3. SpringMvc-Httl-shiro的整合
  4. jsp mysql demo_利用JSP+MYSQL实现注册+登入的demo----0001
  5. Python函数中的变量作用域
  6. mybatis学习(54):鉴定器
  7. 大数据之HDFS应用开发(java API)
  8. LeetCode--80. 删除排序数组中的重复项Ⅱ(双指针,暴力)
  9. mysql 5.5.42,mysql-5.1.42安装完成后,出现如下错误的解决办法
  10. linux虚拟机 xen,XEN虚拟机在Linux上的安装和使用教程分享
  11. 手淘适配-flexible
  12. 实战项目——编辑器实现C#/C++可视化编程#WinFrom
  13. 深入理解设计模式-设计模式分类与关系
  14. shell脚本日常机房巡检
  15. C语言程序设计 课程设计报告
  16. 小程序 微信统计表格_用微信快速收集自定义报名统计,这款小程序做到了
  17. 游戏业务DDoS攻防对抗案例分享
  18. 解决问题:cv::Exception,位于内存位置 0x000000D2956FE120 处
  19. sortBy(-_._2 ) in scala
  20. 2022年长沙初级会计考试模拟题及答案

热门文章

  1. ie7浏览器传输中文的问题
  2. 《离散数学》双语专业词汇表 名词术语中英文索引
  3. JS应用DOM入门:DOM的对象属性
  4. 分布式系统开发工具包 —— 基于Kryo的Java对象序列化
  5. 【前端】这可能是你看过最全的css居中解决方案了~
  6. PXE装机+kickstart无人值守安装
  7. 对SqlServer2008中的日志进行截断的方法
  8. 学成在线--13.RabbitMQ工作模式
  9. iphone11右上角信号显示_苹果iOS11信号强度的标志变了意味着什么?
  10. mybatis foreach map_重学Mybatis(六)-------输入映射(含面试题)