首页 > 其他分享 >比赛

比赛

时间:2024-01-27 09:01:28浏览次数:18  
标签:now 比赛 战斗力 vis 对决 奶牛 105

 第3题     比赛 查看测评数据信息

N 头奶牛,编号 1∼N,一起参加比赛。奶牛的战斗力两两不同。这些奶牛之间已经进行了 M 轮两两对决。在对决中,战斗力高的奶牛一定会战胜战斗力低的奶牛。请问,通过上述 M 轮对决的结果,可以确定多少头奶牛的具体战斗力排名。1≤N≤100 ,1≤M≤4500,数据保证合法。
输入格式

第一行包含两个整数 N,M。

接下来 M 行,每行包含两个整数 a,b,表示奶牛 a 和奶牛 b 之间进行了对决,并且奶牛 a 战胜了奶牛 b。

输出格式

输出可以确定具体战斗力排名的奶牛数量。

输入/输出例子1

输入:

5 5

4 3

4 2

3 2

1 2

2 5

输出:

2

样例解释

2 号奶牛输给了 1,3,4 号奶牛,战胜了 5 号奶牛,可以确定它的战斗力排名为 4。

5 号奶牛输给了排在第 4 的 2 号奶牛,所以它的战斗力排名为 5。

其它奶牛不确定。

 

 

第一个思路是,找点的入度出度(遍历),如果入度+出度-1(减去自己)==n,那就可以确定

#include <bits/stdc++.h>
using namespace std;

int n, m, t1, t2, vis[105], vis2[105], cnt=0, cnt2=0, ans=0;
vector<int>a[105], a1[105]; 
void dfs(int now)
{
	if (vis[now]==1) return ;
	vis[now]=1;
	cnt++;
	for (int i=0; i<a[now].size(); i++)
		dfs(a[now][i]);
}
void dfs2(int now)
{
	if (vis2[now]==1) return ;
	vis2[now]=1;
	cnt2++;
	for (int i=0; i<a1[now].size(); i++)
		dfs2(a1[now][i]);
}
int main()
{
	scanf("%d%d", &n, &m);
	for (int i=1; i<=m; i++)
	{
		scanf("%d%d", &t1, &t2);
		a[t1].push_back(t2);
		a1[t2].push_back(t1);
	}
	for (int i=1; i<=n; i++)
	{
		cnt=0, cnt2=0;
		memset(vis, 0, sizeof(vis));
		memset(vis2, 0, sizeof(vis2));
		dfs(i);
		dfs2(i);
		//printf("%d %d\n", cnt, cnt2);
		if (cnt+cnt2-1==n) ans++;	
	}
	printf("%d", ans);
	
	return 0;
} 

 

第二个思路是floyd,但是现在还没做出来

标签:now,比赛,战斗力,vis,对决,奶牛,105
From: https://www.cnblogs.com/didiao233/p/17991069

相关文章

  • P5738 【深基7.例4】歌唱比赛
    1.题目介绍【深基7.例4】歌唱比赛题目描述\(n(n\le100)\)名同学参加歌唱比赛,并接受\(m(m\le20)\)名评委的评分,评分范围是\(0\)到\(10\)分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下\(m-2\)个评分的平均数。请问得分最高的同学分数是多少?......
  • 搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战
    搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战可以说,DeepFM是目前最受欢迎的CTR预估模型之一,不仅是在交流群中被大家提及最多的,同时也是在面试中最多被提及的:1、Deepfm的原理,DeepFM是一个模型还是代表了一类模型,DeepFM对FM做了什么样的改进,FM的公式如何化简并求......
  • UofTCTF 2024 比赛记录
    这次的题目挺有意思,难度适中,*开头的代表未做出,简单记录一下解题笔记。IntroductionGeneralInformation题目TheflagformatforallchallengesisUofTCTF{...},caseinsensitive.Ifyouareexperiencingtechnicaldifficultieswithchallenges,supportisonour......
  • 新开的信使——比赛总结
    7.7线上组队赛,队友:luomiao,305/400pts,rnk4/6。A题枚举保留的矩阵,坑点是\(k=0\)时可以不保留矩阵。B题简单构造,坑点是\(n=1,m=1\)。C题由于最小一半,可以用随机化,可以枚举模数再随机化判断,也可以随机两个数判断差的模数;也可以利用数量的限制优化枚举,如果模数是\(m\),则......
  • 开始新的新——比赛总结
    8.17小线下赛(小l到小n)T1:数据结构优化DP、最短路都可过,最短路可以用“前(后)缀优化建图的方式”。T2:哈夫曼树。T3:可以发现,对于两个弓箭手\(i,j\),如果\(r_i\leqr_j\),只要\(x_i-r_i\leqx_j\leqxi+r_i\),则这两个弓箭手能互相在对方的攻击范围,所以\(i,j\)能互相掩护的条......
  • 9.2 比赛总结
    E到H。T2简单树上DP。T4原题。首先将一个操作拆成两个操作,每个操作加入\((x,y,z),(x+1,y+1,z+2)\dots\)。用堆(队列也行)模拟kruskal的过程,讨论一条边之后,将它的后继加入堆。可以发现,如果一条边无法使用,则可以不加入它的后继,因为树上连接这两个点的路径上的边的边权都......
  • 9.18 比赛总结
    题目。A,B水,D随便一种算法找环,然后随便一种数据结构维护。C:两个点等价,当且仅当以两个点为根的树同构。如果存在一个点不与其它点等价,则以这个点作为根,否则一定有两个连有边的点等价,断开这条边形成两棵同构的子树。经过这步处理之后,等价的点一定在相同深度。状态采用一般的树......
  • 9.9 比赛总结
    P~S。A改成kruskal重构树或直接并查集合并,跑一个树上背包。C贪心1容易发现,从\(k\)到\(k+1\),最多有\(4\)种情况:增加一个A类。增加一个B类。减少一个A类,并增加组。减少一个B类,并增加组。如果不是这些,那\(k\)的方案不是最优的。用\(5\)个可删堆维护......
  • 9.23 比赛
    b-e。T1数据范围,小,但不能暴力枚举路径。把路径切成两半,用meetinthemiddle。注意数据范围刚好爆int。赛后assert发现并无问题T2打表找规律,本质是组合数Lucas。T3kmp建立自动机,就可以直接DP。T4类似这个链接下的E题,注意到起点和终点都是充电桩,以所有带有充电......
  • ZJC比赛
    昨天\(Huge\)说要给信奥的考场试,我以为我们仨不用考来着,一来机房,打开OJ,哦,ZJC比赛,妙啊,(话说为啥把我放在最后一个,虽然最后我考的也最烂就是了,下次一定要让他把我放在第一个T1题意:给一个字符串,第二个字符串是前一个字符串的前一半+一个字符,问1的前缀和2的后缀最多相等的个......