NYOJ 110 剑客决斗
在路易十三和红衣主教黎塞留当权的时代,发生了一场决斗。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
/*利用中间节点 判断是否可连接i 能连接方案数++*/
#include<cstdio>
#include<cstring>
using namespace std;
int n,m;
int const M=;
bool a[M][M];
bool f[M][M];
int main()
{
scanf("%d",&n);
while (n--)
{
scanf("%d",&m);
memset(a,,sizeof(a));
for (int i=;i!=m;i++)
for (int j=;j!=m;j++)
scanf("%d",&f[i][j]);
int end;
for (int i=;i<m;i++)
a[i][(i+)%m]=true;
for (int i=;i<=m;i++)
{
for (int j=;j!=m;j++)
{
end=(i+j)%m;
for (int k=(j+)%m;k!=end;k++,k%=m)
a[j][end]=a[j][end] || a[j][k] && a[k][end] && (f[j][k] || f[end][k]);
}
}
int ans=;
for (int i=;i<m;i++)
if (a[i][i])
ans++;
printf("%d\n",ans);
}
return ;
}
NYOJ 110 剑客决斗的更多相关文章
- 剑客决斗(NYOJ 110)
T3.题目110剑客决斗 (http://acm.nyist.net/JudgeOnline/problem.php?pid=110) 描述 在路易十三和红衣主教黎塞留当权的时代,发生了一场决斗.n个 ...
- NOI剑客决斗
http://acm.nyist.net/JudgeOnline/problem.php?pid=110 剑客决斗 时间限制:5000 ms | 内存限制:65535 KB 难度:5 描述 在 ...
- NYOJ110 剑客决斗
剑客决斗 来源:Polish Olympiad in Informatics(波兰信息学奥林匹克竞赛) 时间限制:5000 ms | 内存限制:65535 KB 难度:5 描述 在路易十三和红 ...
- 开始奇妙的DP之旅
铭记各位大佬教导,开始看一些很迷的动态规划,那就从比较典型的01背包开始吧,想想还是从比较简单的导弹拦截开始吧,说简单都是骗人的,还是看采药吧. 一.动态规划 刚听到动态规划这个东西,据HLT大佬所言 ...
- 动态规划入门——数字三角形(Java)
动态规划的概念对于新手来说枯燥难懂,就算看懂了,做题的时候依旧抓耳挠腮的毫无头绪,这些比较难理解的算法,还是需要根据例子来一步步学习和理解,从而熟练掌握,下面,咱们就通过一个简单的小例子来学习动态规划 ...
- PostMan的在线安装和简单使用
Postman是一款很流行的WEB接口测试工具,因其强大的功能及清新的界面,赢得许多测试及开发者的喜爱. 1.PostMan的在线安装 因google退出中国,使得chrome上的扩展插件无法在线 ...
- 日暮·第一章·决斗
日暮 第一章 决斗 泉州府,位于帝国的东南沿海,在数百年前,这里已是帝国最大的通商口岸之一,其一城之繁荣喧哗足以与异邦小国的都城相媲美,无数的人曾经来到这里,追逐财富,梦想,女人以及所有他们认为可 ...
- NYOJ 46-最少乘法次数(数论)
题目地址:pid=46">NYOJ 46 思路:能够化成二进制来求解.结果是最高位的位数-1+最高位后面1的个数.比如:对于3.它的二进制代码为11,就是用这个最高位(2-1)加上后面 ...
- nyoj 0269 VF(dp)
nyoj 0269 VF 意思大致为从1-10^9数中找到位数和为s的个数 分析:利用动态规划思想,一位一位的考虑,和s的范围为1-81 状态定义:dp[i][j] = 当前所有i位数的和为j的个数 ...
随机推荐
- uva 280 - Vertex
#include <iostream> #include <cstdio> using namespace std; #include <vector> #defi ...
- 浅谈JS中的闭包
浅谈JS中的闭包 在介绍闭包之前,我先介绍点JS的基础知识,下面的基础知识会充分的帮助你理解闭包.那么接下来先看下变量的作用域. 变量的作用域 变量共有两种,一种为全局变量,一种为局部变量.那么全局变 ...
- Spark学习笔记--stage和task的划分
https://github.com/JerryLead/SparkInternals/blob/master/markdown/3-JobPhysicalPlan.md stage 和 task 的 ...
- Java学习笔记--StringTokenizer的使用
拓展:Pattern.split替代String.split http://www.cnblogs.com/gnivor/p/4386978.html StringTokenizer是一个用来分隔St ...
- 安卓仿制新浪微博(一)之OAuth2授权接口
这里需要用到请求授权(authorize)以及获取授权(access_token) 第一步: 将新浪的sdk放在src/libs下面 二: //创建方法实现authorize public void ...
- bzero()等的区别
bzero 原型: extern void bzero(void *s, int n); 用法: #include <string.h> 功能:置字节字符串s的前n个字节为零. 说 ...
- Blogger安装最新文章 - Blog透视镜
在Blogger中,是没有最新文章的网页元素,不过倒是有信息提供这个小工具,其实这就是用来新增RSS网摘用的,其中就包含最新文章的Feed,所以只要在小工具中,加入RSS网摘Feed,就可以安装最新文 ...
- POJ 3525 Most Distant Point from the Sea
http://poj.org/problem?id=3525 给出一个凸包,要求凸包内距离所有边的长度的最小值最大的是哪个 思路:二分答案,然后把凸包上的边移动这个距离,做半平面交看是否有解. #in ...
- CCI_chapter 13C++
13.9Write a smart pointer (smart_ptr) class template<class T>class SmartPoint{ public: SmartPo ...
- Qt在Mac OS X下的编程环境搭建
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...