Floyd--P2419 [USACO08JAN]牛大赛Cow Contest
FJ的$N(1 <= N <= 100)$头奶牛们最近参加了场程序设计竞赛:)。在赛场上,奶牛们按1..N依次编号。每头奶牛的编程能力不尽相同,并且没有哪两头奶牛的水平不相上下,也就是说,奶牛们的编程能力有明确的排名。 整个比赛被分成了若干轮,每一轮是两头指定编号的奶牛的对决。如果编号为A的奶牛的编程能力强于编号为B的奶牛$(1 <= A <= N; 1 <= B <= N; A != B)$ ,那么她们的对决中,编号为A的奶牛总是能胜出。 FJ想知道奶牛们编程能力的具体排名,于是他找来了奶牛们所有 $M(1 <= M <= 4,500)$轮比赛的结果,希望你能根据这些信息,推断出尽可能多的奶牛的编程能力排名。比赛结果保证不会自相矛盾。
看到$n<=100$按$floyd$的$n^3$做法还是可以的,毕竟$floyd$代码简略且少。
首先思考这道题,怎样才能确定一头牛的名次,显然是他与其他所有牛的输赢关系都确定。因为只有输赢两种情况,所以我们只要记录赢得情况就可以。输入$a$和$b$,$s[a][b]=1$表示$a$赢了$b$。这样预处理之后,就开始跑$floyd$。$floyd$代码如下(下面有解释):
void Floyd()
{
for (int t = ;t <= n;t++)
{
for (int i = ;i <= n;i++)
{
for (int j = ;j <= n;j++)
{
if (s[i][t]&&s[t][j])
s[i][j]=;
}
}
}
}
这里的t可以看做一个中转节点,如果i赢了t,且t赢了j,那么i就赢了j,这种简单逻辑还是可以推导出来的。然后我们就可以开始统计答案了。考虑一个问题,怎样知道两头牛之间的关系是否确定,s[i][j]=1表示i赢了j,两头牛的关系是确定的,s[j][i]=1表示j赢了i,两头牛的关系也是确定的,但是如果s[i][j]=0&&s[j][i]=0并不是说i输给了j,j输给了i,这显然是不成立的,而是根本没有确定。由于之前说过的,确定一头牛的名次根据是,他和所有牛的输赢关系都确定,所以只要有一个不确定我们就直接跳到下一个牛开始判断。这部分代码:
for(int i = ;i <= n;i++)
{
int f=;
for (int j = ;j <= n;j++)
{
if (i==j)continue;
if (s[i][j]==&&s[j][i]==)
{
f=;
break;
}
}
if (f==)
ans++;
}
整个代码:
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <cstring>
using namespace std;
int n,m,a,b;
int s[][];
int read()
{
int x=,a=;
char ch=getchar();
while (ch < ''||ch > '')
{
if (ch == '-') x=-;
ch = getchar();
}
while (ch <= ''&&ch >= '')
{
a=a* + ch - '';
ch=getchar();
}
return x*a;
}
void Floyd()
{
for (int t = ;t <= n;t++)
{
for (int i = ;i <= n;i++)
{
for (int j = ;j <= n;j++)
{
if (s[i][t]&&s[t][j])
s[i][j]=;
}
}
}
}
int main()
{
int ans=;
n=read();
m=read();
for (int i = ;i <= m;i++)
{
a=read();
b=read();
s[a][b]=;
}
Floyd();
for(int i = ;i <= n;i++)
{
int f=;
for (int j = ;j <= n;j++)
{
if (i==j)continue;
if (s[i][j]==&&s[j][i]==)
{
f=;
break;
}
}
if (f==)
ans++;
}
cout<<ans;
return ;
}
Floyd--P2419 [USACO08JAN]牛大赛Cow Contest的更多相关文章
- bzoj1612 / P2419 [USACO08JAN]牛大赛Cow Contest(Floyd)
P2419 [USACO08JAN]牛大赛Cow Contest Floyd不仅可以算最短路,还可以处理点之间的关系. 跑一遍Floyd,处理出每个点之间是否有直接或间接的关系. 如果某个点和其他$n ...
- P2419 [USACO08JAN]牛大赛Cow Contest
P2419 [USACO08JAN]牛大赛Cow Contest 题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, conveniently number ...
- floyd的魔改应用——洛谷P2419 [USACO08JAN]牛大赛Cow Contest 题解
想找原题请点击这里:传送门 原题: 题目背景 [Usaco2008 Jan] 题目描述 N ( ≤ N ≤ ) cows, conveniently numbered ..N, are partici ...
- 洛谷 P2419 [USACO08JAN]牛大赛Cow Contest
题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a p ...
- 洛谷—— P2419 [USACO08JAN]牛大赛Cow Contest
https://www.luogu.org/problem/show?pid=2419 题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, convenie ...
- Luogu P2419 [USACO08JAN]牛大赛Cow Contest
题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a p ...
- P2419 [USACO08JAN]牛大赛Cow Contest(dfs走天下/)
题目描述 FJ的N(1 <= N <= 100)头奶牛们最近参加了场程序设计竞赛:).在赛场上,奶牛们按1..N依次编号.每头奶牛的编程能力不尽相同,并且没有哪两头奶牛的水平不相上下,也就 ...
- 洛谷P2419 [USACO08JAN]牛大赛Cow Contest
对于一个能够确定名次的点,可以注意到,对于该点,入度和出度的数量加起来等于N-1(这样还是不够准确的确切的说是,能够到达这个点的数量和这个点能够到达的数量的和 floyd不仅可以求两个点之间的最短路径 ...
- luogu题解 P2419 【牛大赛Cow Contest】传递丢包
题目链接: https://www.luogu.org/problemnew/show/P2419 分析: "在交际网络中,给定若干元素和若干对二元关系,且关系具有传递性. 通过传递性推导出 ...
随机推荐
- 普通用户切换不到root用户--权限更改
https://blog.csdn.net/lianjoke0/article/details/82598149 [root@java133 ~]# ll /etc/passwd -rw-r--r-- ...
- 九 SpringMvc与json交互
将json输出到页面: 1 加入jar包 2 配置Controller层,开启注解ResponseBody,将json发送到页面: 3 访问url 4 响应json,在形参列表里面加上注解
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:块级按钮(拉伸至父元素100%的宽度)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Laradock 开放 workspace 端口
1.在 laradock/workspace/Dockerfile 文件的最后添加一行,申明开放端口: EXPOSE 1215; 2.在 laradock/docker-compose ...
- IDEA 服务器热部署详解(On Update action/On frame deactivation)
https://blog.csdn.net/w15321271041/article/details/80597962 场景:一般服务器(比如tomcat,jboss等)启动以后,我们还需要进一步修改 ...
- flutter 启动时一直Resolving dependencies...
原因:国内网无法从Google获取资源,貌似搭了梯子也没用 修改flutter sdk Path/packages/flutter_tools/gradle/flutter.gradle这个文件,使用 ...
- C# 篇基础知识11——泛型和集合
.NET提供了一级功能强大的集合类,实现了多种不同类型的集合,可以根据实际用途选择恰当的集合类型. 除了数组 Array 类定义在System 命名空间中外,其他的集合类都定义在System.Coll ...
- ajax请求QQ音乐
搜索歌曲 function go() { var val = document.getElementById("name").value; ...
- 校园服务APP使用体验
校园服务APP软件使用体验 一.概况: 校园服务这款软件是针对大学生这一群体量身打造,具有简洁的界面,能让使用者快速上手,不存在第一次使用发懵,发怵等情况,是一款非常实用的功能软件. 二.功能特性: ...
- 三 Road
3—5年程序员的发展和出路在哪里? 是继续做技术人,还是向管理者发力?是继续留在大公司,还是转投潜力小公司?如果没有核心竞争力,入行一两年的新程序员朋友是可以替代你大部分工作的,而且薪资还低,要怎么办 ...