剑客决斗

http://acm.nyist.net/JudgeOnline/problem.php?pid=110

时间限制:5000 ms  |  内存限制:65535 KB
难度:5

描述

在路易十三和红衣主教黎塞留当权的时代,发生了一场决斗。n个人站成一个圈,依次抽签。抽中的人和他右边的人决斗,负者出圈。这场决斗的最终结果关键取决于决斗的顺序。现书籍任意两决斗中谁能胜出的信息,但“A赢了B”这种关系没有传递性。例如,A比B强,B比C强,C比A强。如果A和B先决斗,C最终会赢,但如果B和C决斗在先,则最后A会赢。显然,他们三人中的第一场决斗直接影响最终结果。

假设现在n个人围成一个圈,按顺序编上编号1~n。一共进行n-1场决斗。第一场,其中一人(设i号)和他右边的人(即i+1号,若i=n,其右边人则为1号)。负者被淘汰出圈外,由他旁边的人补上他的位置。已知n个人之间的强弱关系(即任意两个人之间输赢关系)。如果存在一种抽签方式使第k个人可能胜出,则我们说第k人有可能胜出,我们的任务是根据n个人的强弱关系,判断可能胜出的人数。

输入
第一行是一个整数N(1<=N<=20)表示测试数据的组数。
第二行是一个整数n表示决斗的总人数。(2<=n<=500)
随后的n行是一个n行n列的矩阵,矩阵中的第i行第j列如果为1表示第i个人与第j个人决斗时第i个人会胜出,为0则表示第i个人与第j个人决斗时第i个人会失败。
输出
对于每组测试数据,输出可能胜出的人数,每组输出占一行
样例输入
1
3
0 1 0
0 0 1
1 0 0
样例输出
3
来源
《世界大学生程序设计竞赛高级教程·第一册》
断环成链
判断x是否能胜利,则把x拆为2个点,若他能胜出,条件是它能与自己相遇
#include<cstdio>
#include<cstring>
using namespace std;
int t,n;
bool a[501][501],meet[501][501];
int main()
{scanf("%d",&t);while(t--){memset(a,0,sizeof(a));memset(meet,0,sizeof(meet));scanf("%d",&n);for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&a[i][j]);for(int i=0;i<n;i++) meet[i][(i+1)%n]=true;for(int k=2;k<=n;k++)for(int i=0;i<n;i++){int end=(i+k)%n;if(meet[i][end]) continue; for(int j=(i+1)%n;j!=end;j=(j+1)%n)//注意循环取余的处理 if(meet[i][j]&&meet[j][end]&&(a[i][j]||a[end][j])){meet[i][end]=true;break;}}int ans=0;for(int i=0;i<n;i++) if(meet[i][i]) ans++;printf("%d\n",ans);}
}

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6516696.html

NYOJ 110 剑客决斗相关推荐

  1. 剑客决斗(NYOJ 110)

    T3.题目110剑客决斗 (http://acm.nyist.net/JudgeOnline/problem.php?pid=110) 描述 在路易十三和红衣主教黎塞留当权的时代,发生了一场决斗.n个 ...

  2. NYOJ-110-剑客决斗

    描述 在路易十三和红衣主教黎塞留当权的时代,发生了一场决斗.n个人站成一个圈,依次抽签.抽中的人和他右边的人决斗,负者出圈.这场决斗的最终结果关键取决于决斗的顺序.现书籍任意两决斗中谁能胜出的信息,但 ...

  3. scau 10306 Prison break

    其实在网上查找剑客决斗也是可以找到的.这道题是动态规划,因为之前找题解的时候老是找不到题解,所以AC了以后决定发这份代码,让人们容易找到.这道题是华农的校赛题目,也是NYOJ的题目,华农的提交系统上也 ...

  4. 【73套】Epic Stock Media配乐音效素材合集包

    [73套]Epic Stock Media配乐音效素材合集包 大小:114G丨WAV Epic Stock Media 系列音效合辑 包含了战争电影音效.史诗梦幻音效.日常生活音效.森林环境音效.电影 ...

  5. Conclusion

    /* 高中最后一个暑假 挺有意义的 考了一暑假的试 最后总结一下吧 一天一天来吧7.30 这一天的题有点变态啊 不过难题有难题的做法 T1斗地主 考试的时候打了0分 0分..... 原因好像是读入的格 ...

  6. 从背包问题优化详解动态规划思想

    动态规划: 所有的数据结构与算法的理解必须建立在题目的练习上,否则看多少理论都没有实际用处!!! 所以下面这些理论文字看不懂通通没关系,跟随下面的背包问题还会跟深入的理解. 一.基本概念:任何数学递推 ...

  7. 动态规划(Dynamic Programming, DP)简介

    动态规划(Dynamic programming,DP)是一种在数学.计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划常常适用于有重叠子问题和最优子结 ...

  8. 3-动态规划:数字三角形

    目录 简介 题目 题解 简介 动态规划,最佳路径 题目 "动态规划一般分为4类:线性动规.区域动规.树形动规.背包动规四类. 线性动规:拦截导弹.合唱队形.挖地雷.建学校.剑客决斗等: 区域 ...

  9. 动态规划-各种题型及思路整理(自用笔记,大神绕道)

    目录 简介 分类 基本思想 基本思路 状态转移方程 适用条件 一句话总结 应用 前缀和思想 简介 动态规划(dynamic programming,简称dp),是运筹学的一个分支,是求解决策过程(de ...

最新文章

  1. LeetCode 125 Valid Palindrome(有效回文)(*)
  2. Linux学习之获取帮助
  3. 行意天下正文 Android Day02-Android中单元测试(junit测试)monkey测试
  4. sqlite3 内存持续增加_sqlite3使用简介(内含解决sqlite内存的方法)
  5. Windows 技术篇 - 电脑秒速关机设置方法,注册表修改3个缓冲等待时间
  6. 写给开发向产品转型的同学的3句话
  7. 线性代数之矩阵逆的微分
  8. 解决创建maven项目后,不能创建scala
  9. layui删除后刷新表格_LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)...
  10. NYOJ88(数论)
  11. 嘉峪关计算机网络优化,嘉峪关广播电视大学计算机网络技术专业_甘肃报名_网络教育计算机网络技术专业教学计划_中国教育在线...
  12. 35.Linux/Unix 系统编程手册(下) -- 进程的优先级和调度
  13. snap7/Qt/ros-------ubantu14.04下杂记
  14. 转载:Latex——在线快速生成表格代码
  15. 一次关于聚合根的激烈讨论
  16. 学生个人html静态网页制作 基于HTML+CSS+JavaScript+jquery仿苏宁易购官网商城模板
  17. Self-assessment Checklists of HSK
  18. U盘重装Win10系统教程
  19. Python语法必备篇——Python字符串 学习【文末送书】
  20. 函数的引用透明性(referential transparency)

热门文章

  1. python urllib.request 爬虫 数据处理-python 爬虫之 urllib库
  2. python小项目案例-python_flask小项目实例-编一个小网站
  3. python精通-干货|Python学习必须精通的几个模块
  4. python 能干嘛-python能干嘛
  5. python基础一入门必备知识-Python数据分析入门必备基础知识
  6. python stm32-实现Python与STM32通信方式
  7. python画柱状图代码-python绘制双柱形图代码实例
  8. python importerror怎么解决-解决python有时候import不了当前的包问题
  9. 学python需要什么文化基础-中国文化走的是()的路线。
  10. python基础语法第10关作业-Python基础语法习题