首页 > 其他分享 >题解:CF599B Spongebob and Joke

题解:CF599B Spongebob and Joke

时间:2024-10-26 12:42:19浏览次数:1  
标签:输出 cnt 数组 Spongebob int 题解 100010 CF599B

完整题意详见题面。

已知 $b_i=f_{a_i}$,求数组 $a$ 的值。

先记录每个 $f_i$ 的值的数量,

  • 当 $f$ 数组中与 $b$ 数组中没有相同的值时,输出 Impossible

  • 当 $f$ 数组中与 $b$ 数组中有多组相同的值时,输出 Ambiguity

  • 其余情况输出 Possible

然后考虑如何求出数组 $a$,

对于 $b_i=f_{a_i}$,通过 $f$ 数组记录每一个可能的 $a_i$ 的值。易得,数组 $b$ 的长度与 $a$ 的长度相等。在判断合法后输出 $a_{b_i}$ 即可。

时间复杂度 $O(n)$。

#include<bits/stdc++.h>
using namespace std;
int cnt[100010],b[100010],a[100010];
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		int f;
		cin>>f;
		cnt[f]++;
		a[f]=i;
	}
	for(int i=1;i<=m;i++){
		cin>>b[i];
		if(cnt[b[i]]==0){
			cout<<"Impossible";
			return 0;
		}
	}
	for(int i=1;i<=m;i++){
		if(cnt[b[i]]>1){
			cout<<"Ambiguity";
			return 0;
		}
	}
	cout<<"Possible"<<endl;
	for(int i=1;i<=m;i++)
		cout<<a[b[i]]<<' ';
	return 0;
}
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int cnt[100010],b[100010],a[100010];
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		int f;
		cin>>f;
		cnt[f]++;
		a[f]=i;
	}
	for(int i=1;i<=m;i++){
		cin>>b[i];
		if(cnt[b[i]]==0){
			cout<<"Impossible";
			return 0;
		}
	}
	for(int i=1;i<=m;i++){
		if(cnt[b[i]]>1){
			cout<<"Ambiguity";
			return 0;
		}
	}
	cout<<"Possible"<<endl;
	for(int i=1;i<=m;i++)
		cout<<a[b[i]]<<' ';
	return 0;
}

标签:输出,cnt,数组,Spongebob,int,题解,100010,CF599B
From: https://www.cnblogs.com/CyanStd/p/18503935

相关文章

  • UVA11294 Wedding 题解
    洛谷题目传送门前排提示:本题需要用到知识点2-SAT以及强联通分量,模板传送门P4782【模板】2-SAT。题目大意:有至多303030对夫妻将会参加一个婚宴。他们将会坐在一个......
  • ctfshow web入门命令执行——web29-40题解
    web291.传入c参数来进行代码执行,payload: c=system("catfla*.php");  如图2.浏览器默认不显示php的标签所以需要右键查看源代码web30题目过滤了命令执行函数system,还可以用passthur(),过滤的字符可以用?代替单个字符。payload:?c=passthur("catfla?.p?p");查看源......
  • Anaconda + Vscode 和 Anaconda + Pycharm安装操作教程以及问题解决
    1.anaconda安装2.打不开AnacondaNavigation解决办法3.如何创建虚拟环境(2种方法)4.Anaconda+vscode5.Anaconda+pycharmAnaconda+Vscode和Anaconda+Pycharm安装操作教程以及问题解决1.anaconda安装Anaconda下载地址我选的是2020,11的一个版本。还没装之前电脑是有p......
  • Codeforces Round 981 (Div. 3)A-D题解
    CodeforcesRound981(Div.3)A.SakurakoandKosukeSakurakoandKosukedecidedtoplaysomegameswithadotonacoordinateline.Thedotiscurrentlylocatedinposition\(x=0\).Theywillbetakingturns,andSakurakowillbetheonetostart.Ont......
  • [Ynoi2015] 盼君勿忘 题解
    CSP前学习珂学,祝自己\(while(1)\rp++\)。考虑求解出每种数对答案的贡献。设\(t=r-l+1,k_x=\sum\limits_{i=l}^r[a_i=x]\),由容斥得贡献为\(x(2^t-2^{t-k_x})\)。求解\(k_x\),考虑莫队,时间复杂度为\(O(n\sqrtn)\),这也是本题的复杂度上限。由于\(p\)会变,所以不能用莫......
  • 题解:P11143 「SFMOI Round I」Strange Cake Game
    题目思路考虑贪心算法。根据题意,我们可以猜出结论,在最优状态下,小W将一直向下移动,小M一定向右移动。又因为小W是先手,所以当这块巧克力的横坐标小于等于纵坐标,即\(x\ley\)时,这块巧克力才可能归小W所有。另外,本题还有某些神秘做法可得\(20-25\)分。要特别注意的是......
  • 【题解】A. 错排问题
    递推T1题面(可从下方链接跳转看原题题面):求多少个n个数的排列,满足对于任意的i(1≤i≤n),有Ai≠i。题目传送门序言&结论:这是一道经典的题目,可以先记一下这个结论,设f[n]表示有n个数错排f[n]=(n-1)*(f[n-1]+f[n-2])推理过程:f[n]状态的设置是显然的(无需多言)边界......
  • 题解:Tokitsukaze, CSL and Stone Game
    ProblemLinkTokitsukaze,CSLandStoneGame题外话对于某些人说降绿甚至降黄,本人是很不同意的,毕竟多一道水蓝有什么不好题意翻译得很简洁,不再赘述。Solution不难发现有以下几种情况:只有两堆不等的,肯定选少的那堆,因为这样不易使得两堆相等。若两堆相等,一定破坏相等......
  • ZZJC新生训练赛第九场题解
    A题思路重点在于题目操作蕴含的奇偶数关系,一个偶数可以和一个奇数一起删除,两个奇数可以一起删除。代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn;cin>>n;vector<int>ar(......
  • 蓝桥首场算法团队战2024.10.24 题解(1~5)
    蓝桥首场算法团队战2024.10.24题解1:不同角度【算法赛】题意:给定自然数S,需要找出一个自然数T。使得数字T>数字S并且S和T转化为字符串后,满足S的字典序>T的字典序。T一定存在,找出符合条件且字典序最小的T。输入:第一行一个整数t,表示t组测试用例。\((......