首页 > 其他分享 >[ABC296E] Transition Game

[ABC296E] Transition Game

时间:2023-07-28 13:33:51浏览次数:36  
标签:du int Transition 200010 Game ABC296E 后继

题意:给定\(n\)个数,\(a_i\)为\(i\)的后继,有\(n\)轮游戏中,若第\(i\)轮游戏,对于\(1~n\)中任意一个后继次数\(j\),都能选择一个数\(x\)使得\(x\)后继\(j\)次之后都为\(i\),则称之赢一局,问赢的局数。

首先可以肯定一个数的后继是唯一确定的,我们可以从任意\(1~n\)中的连向它的后继。考虑如果当前的\(i\)在一个环内,肯定是可行的。否则i的前驱最多只有\(n-1\)个,没有必胜策略。图可能不联通,你考虑一件事,就是说:可悲的恶魔编造残酷的乌拉圭人,所以这个图中的所有点出度为1,拓扑排序就行了。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n,a[200010],du[200010],ans=0;
queue<int> q;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i],du[a[i]]++;
	for(int i=1;i<=n;i++) if(du[i]==0) q.push(i);
	while(!q.empty()){
		int o=q.front();
		q.pop();
		ans++;
		du[a[o]]--;
		if(du[a[o]]==0) q.push(a[o]);
	}
	cout<<n-ans;
	return 0;
}

标签:du,int,Transition,200010,Game,ABC296E,后继
From: https://www.cnblogs.com/wangwenhan/p/17587338.html

相关文章

  • Game as a Service —— 开源云游戏搭载WebRTC
    软件即服务,基础架构即服务,平台即服务,通信平台即服务,视频会议即服务,那么,游戏即服务(GameasaService)如何呢?已经有不少科技公司试水云游戏,最著名的要数Google的Stadia。对WebRTC来说,Stadia已经算是老朋友了,但是其他云游戏也能以同样的方式运用WebRTC吗?ThanhNguyen研究了他自己的开......
  • chinese game
    0.0.0版本震撼来袭代码:#include<bits/stdc++.h>#include<windows.h>#include<conio.h>usingnamespacestd;intpx=10,py=5,ma=0;stringjie[100005]={"这是墙壁,你不能通过","这是地面,上面似乎布满了灰尘"};stringdui[100005]={"墙","地&quo......
  • [ABC310G] Takahashi And Pass-The-Ball Game
    ProblemStatementThereare$N$Takahashi.The$i$-thTakahashihasaninteger$A_i$and$B_i$balls.Aninteger$x$between$1$and$K$,inclusive,willbechosenuniformlyatrandom,andtheywillrepeatthefollowingoperation$x$times.Forevery$i$,......
  • 103.Mr. Liang play Card Game
    杭电第一场补题103.Mr.LiangplayCardGame题目:有n张卡片,每一个卡片有自己的类型,等级、初始等级都是1。有以下两种操作:选择一张卡片打出去,获得权值为:val_{type_i}*p^{level-1}选择两个相邻,且相同种类,相同等级的卡片进行合并,合并之后等级+1.输出可以获得的最大权值......
  • 「解题报告」CF1067D Computer Game
    快国赛了,写点水题玩吧。首先容易有一个贪心策略:先以某种最优策略一直进行,直到成功一次后一直选择\(b_ip_i\)最大的进行。我们可以列出一个DP,设\(f_T\)表示在\(T\)时刻内期望最大收益,容易写出:\[f_T=\max\{p_i((T-1)v+a_i)+(1-p_i)f_{T-1}\}\]看起来就是可......
  • 【刷题笔记】55. Jump Game
    题目Givenanarrayofnon-negativeintegers,youareinitiallypositionedatthefirstindexofthearray.Eachelementinthearrayrepresentsyourmaximumjumplengthatthatposition.Determineifyouareabletoreachthelastindex.Example1:Input:......
  • poj 2311 Cutting Game (sg函数)
    小记:这题是对sg函数的初步理解。对于sg函数只要g[x]==0,则此时为必败态。x作为后继,我们就要对所有的后继进行标记,然后mex之。因为每次只能切一刀,所以切完之后,会有两块方格,而对每一块方格进行游戏又会有一个sg函数值,所以根据sg函数的性质,它这一刀所代表的后继,即为这两块方格的sg函......
  • android:transitionName
    Android:TransitionName的用法详解在Android开发中,我们经常需要在不同的页面或者元素之间进行切换和过渡。为了实现这样的效果,Android提供了一系列的过渡动画效果,其中android:transitionName是一个非常重要的属性。本文将详细介绍android:transitionName的用法,并提供一些......
  • Python pygame实现中国象棋单机版源码
    今天给大家带来的是关于Python实战的相关知识,文章围绕着用Pythonpygame实现中国象棋单机游戏版展开,文中有非常详细的代码示例,需要的朋友可以参考下#-*-coding:utf-8-*-"""CreatedonSunJun1315:41:562021@author:Administrator"""importpygamefrompygame.local......
  • Cutting Game
    题目来源:POJ2311CuttingGame题意给定一张\(N*M\)的矩形网格纸,两名玩家轮流行动。在每一次行动中,可以任选一张矩形网格纸,沿着某一行或者某一列的格线,把它剪成两部分。首先剪出\(1*1\)的玩家获胜。两名玩家都采取最优策略行动,求先手是否必胜。\[1\leqslantN,M\leqslant......