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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2019 年百度之星·程序设计大赛 - 初赛二

發布時間:2024/9/5 编程问答 82 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2019 年百度之星·程序设计大赛 - 初赛二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳送門:

  [1]:HDU

  [2]:bestcoder

B.度度熊與排列(思維)

?題意

  有一個數組 p,p 中包含的數為 1~m 的全排列,一個含 m 個字符的串 s;

  在 s 上有一個操作,對于 s 中的第 i 個位置的字符,放到 p[ i ] 位置,構成一個新串 t;

  即?si=tpisi=tpi;

  給你 2n 個串,每兩個串為一組,前一個串表示原串 s,后一個串表示經過 p 映射后的新串 t;

  求是否存在某個 1~m 的全排列,使得這 n 組串都可以經過 p 由 s 變為 t;

  如果存在,輸出字典序最小的那組,如果不存在,輸出 -1;

?思路

就s->t可以對應實現而言

每個s串的每個位置的字母,與每個t串的對應位置的字母是相同的

例如

? s串     t串?

abcdda  addcba

azxcvv   vvcxza

s串每個位置字母

    ? ?1? ? 2  3  4  5  6  

     a  b  c  d  d  a

     a  z  x   c  v  v

t串每個位置字母

    ? ?1? ? 2  3  4  5  6  

     a  d  d  c  b  a

     v  v  c   x  z  a

所以s與t位置對應

1->6,2->5,3->4,4->3,5->2,6->1

為了方便查找,我們可以將s串每一列按字典序排序,t串每一列按字典序排序

于是變成

s串

    ? ?1? ? 6  2  3  4  5  

     a  a  b  c  d  d

     a  v  z   x  c  v

t串

    ? ?6  ? 1  5  4  3  2  

     a  a  b  c  d  d

     a  v  z   x  c  v

排序之后s的每一列,與t的每一列應該是完全相同的,

s與t所對應的序號,就是對應的位置

?代碼

1 #include<bits/stdc++.h> 2 using namespace std; 3 4 pair<string,int> p1[55],p2[55]; 5 string s[25],t[25]; 6 7 int main() 8 { 9 int T; 10 cin>>T; 11 while(T--) 12 { 13 int n,m; 14 cin>>n>>m; 15 for(int i=1;i<=n;i++) 16 cin>>s[i]>>t[i]; 17 18 for(int j=0;j<m;j++) 19 { 20 string x,y; 21 for(int i=1;i<=n;i++) 22 { 23 x+=s[i][j]; 24 y+=t[i][j]; 25 } 26 p1[j].first=x,p2[j].first=y; 27 p1[j].second=j+1,p2[j].second=j+1; 28 } 29 sort(p1,p1+m); 30 sort(p2,p2+m); 31 32 int index[55]; 33 bool flag=true; 34 for(int i=0;i<m;i++) 35 { 36 if(p1[i].first!=p2[i].first) 37 { 38 puts("-1"); 39 flag=false; 40 break; 41 } 42 index[p1[i].second]=p2[i].second; 43 } 44 if(!flag) 45 continue; 46 for(int i=1;i<=m;i++) 47 { 48 if(i!=1) 49 printf(" %d",index[i]); 50 else 51 printf("%d",index[i]); 52 } 53 puts(""); 54 } 55 } View Code

?

轉載于:https://www.cnblogs.com/MMMinoz/p/11379607.html

總結

以上是生活随笔為你收集整理的2019 年百度之星·程序设计大赛 - 初赛二的全部內容,希望文章能夠幫你解決所遇到的問題。

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