日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【模拟】【codeforces】599B Spongebob and Joke

發布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【模拟】【codeforces】599B Spongebob and Joke 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=282385

?

就是一個人最開始有一串數a1 a2 ... am

他的熊孩子隊友用一組函數f1 f2 ... fn 以及bi = fai 把串A換成了串B

現在告訴你B和F,讓你把A換回來,能換回來輸出A,換回來可能有多重情況輸出ambiguity,不可能換回來輸出impossible

?

ai其實就是f的一個定位,給出一個f(x),求x

所以出現多解的情況就是對于一個b中的值,f有超過一個以上的位置上的值等于bi

出現不可能的情況就是對于一個bi,沒有f中的值與之對應

?

因為最后輸出的就是x這個位置,所以直接在輸入的時候把f翻轉一下,f[i]的值表示f在i這個值的時候的定位,之后直接輸出即可?

?

1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int f[100005]; 5 int b[100005]; 6 int a[100005]; 7 int n, m; 8 bool Ambiguity; 9 bool Impossible; 10 bool ambi[100005]; 11 12 int main(){ 13 while(~scanf("%d%d", &n, &m)){ 14 Ambiguity = false; 15 Impossible = false; 16 memset(ambi, 0, sizeof(ambi)); 17 memset(f, 0, sizeof(f)); 18 memset(b, 0, sizeof(b)); 19 memset(a, 0, sizeof(a)); 20 for(int i = 1; i <= n; i++){ 21 int pos; 22 scanf("%d", &pos); 23 if(f[pos] == 0) f[pos] = i; 24 else{ 25 ambi[pos] = true; 26 } 27 } 28 for(int i = 1; i <= m; i++){ 29 scanf("%d", &b[i]); 30 } 31 32 //solve() 33 for(int i = 1; i <= m; i++){ 34 if(f[ b[i] ] != 0 && ambi[ b[i] ] != true) a[i] = f[ b[i] ]; 35 else if(f[ b[i] ] == 0){ 36 Impossible = true; 37 } 38 else{ 39 Ambiguity = true; 40 } 41 } 42 43 if(Impossible){ 44 printf("Impossible\n"); 45 } 46 else if(Ambiguity){ 47 printf("Ambiguity\n"); 48 } 49 else{ 50 printf("Possible\n"); 51 for(int i = 1; i<= m; i++){ 52 printf("%d", a[i]); 53 if(i != m) printf(" "); 54 } 55 printf("\n"); 56 } 57 } 58 59 return 0; 60 }

?

轉載于:https://www.cnblogs.com/miaowTracy/p/5336192.html

總結

以上是生活随笔為你收集整理的【模拟】【codeforces】599B Spongebob and Joke的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。