【Codeforces Round 332 (Div 2)B】【扭转题意 位置映射】Spongebob and Joke 给b[]中的每个数找f[]中的位置
来源:互联网 发布:php权限源码 编辑:程序博客网 时间:2024/05/22 15:10
#include<stdio.h>#include<iostream>#include<string.h>#include<string>#include<ctype.h>#include<math.h>#include<set>#include<map>#include<vector>#include<queue>#include<bitset>#include<algorithm>#include<time.h>using namespace std;void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);}#define MS(x,y) memset(x,y,sizeof(x))#define MC(x,y) memcpy(x,y,sizeof(x))#define MP(x,y) make_pair(x,y)#define ls o<<1#define rs o<<1|1typedef long long LL;typedef unsigned long long UL;typedef unsigned int UI;template <class T1,class T2>inline void gmax(T1 &a,T2 b){if(b>a)a=b;}template <class T1,class T2>inline void gmin(T1 &a,T2 b){if(b<a)a=b;}const int N=1e5+10,M=0,Z=1e9+7,ms63=1061109567;int casenum,casei;int n,m;int f[N];int e[N];int p[N];int main(){while(~scanf("%d%d",&n,&m)){MS(e,0);for(int i=1;i<=n;++i){int x;scanf("%d",&x);if(e[x]==0)e[x]=i;else if(e[x]>0)e[x]=-1;}int ans=1;for(int i=1;i<=m;++i){int x;scanf("%d",&x);if(ans==0)continue;if(e[x]==0){ans=0;continue;}//Impossibleif(ans==-1)continue;if(e[x]==-1){ans=-1;continue;}//Ambiguityp[i]=e[x];}if(ans==0)puts("Impossible");else if(ans==-1)puts("Ambiguity");else {puts("Possible");for(int i=1;i<=m;++i)printf("%d ",p[i]);puts("");}}return 0;}/*【trick&&吐槽】有些题,就是给你绕啊绕,我们要好好读题目,再理清思路,做起来就很简单了!【题意】这是理清后题意的版本——发现理清之后就是傻叉题啊!给你一个表示映射关系的数组f[],元素个数为n(1e5),每个数的范围都在[1,n]。给你一个映射之后的数列b[],元素个数为m(1e5),每个数的范围都在[1,n]。对于b的每个位置的数b[i],都是由f[]某个位置的数生成的。是哪个位置呢?记录为a[i]。如果存在至少一个b[i],不能够生成,答案就是Impossible否则,如果至少存在一个b[i],所对应的a[i]不唯一,那么答案就是Ambiguity否则输出Possible和解。【类型】模拟【分析】按照理清之后的题意。我们发现,对于b[]中的每个数,f[]中都要恰好只出现一次。于是我们对于f[]中的所有数x,记录位置。x没出现过,e[]便为0x只出现过一次,e[]便为位置x出现过多次,e[]便为-1然后扫描一遍b[],这道题就做完AC啦!*/
0 0
- 【Codeforces Round 332 (Div 2)B】【扭转题意 位置映射】Spongebob and Joke 给b[]中的每个数找f[]中的位置
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces Round #332 (Div. 2)B. Spongebob and Joke(模拟)
- Codeforces Round #332 (Div. 2) 599B Spongebob and Joke(STL)
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke(水题,构造)
- Codeforces Round #332 (Div. 2)_B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob an Joke (水)
- Codeforces 599B Spongebob and Joke 【水题】
- Codeforces 299 B Spongebob and Joke
- codeforces 599B Spongebob and Joke
- Codeforces 599 B Spongebob and Joke
- CodeForces 599B Spongebob and Joke
- CodeForces 599B A - Spongebob and Joke
- 【CodeForces】[599B]Spongebob and Joke
- NV21 to NV12(YUV420SP)
- <!DOCTYPE html>很重要
- 简七教你找高收益又靠谱的P2P平台 Jane7.com
- 【Codeforces Round 332 (Div 2)A】【水题】A. Patrick and Shopping 遍历三元环的最小成本
- 安卓开发技术内容介绍
- 【Codeforces Round 332 (Div 2)B】【扭转题意 位置映射】Spongebob and Joke 给b[]中的每个数找f[]中的位置
- Linux--CenterOS下JDK安装
- Bootstrap的Modal源码学习
- 【Codeforces Round 332 (Div 2)C】【贪心】Day at the Beach 最多区间数划分使得区间排序构成全局排序
- Android-回调机制
- 【Codeforces Round 332 (Div 2)D】【数学 公式推导】Spongebob and Squares 正方形数量恰好为x个的所有大矩形
- Java语言基础之正则表达式
- ssh中整合spring和hibernate之后的application.xml文件的超详细配置
- BigDecimal中的舍入模式