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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

中山大学校队选拔赛第二试题试题3【Compressed suffix array】-------2015年2月8日

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中山大学校队选拔赛第二试题试题3【Compressed suffix array】-------2015年2月8日 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:題目大意

本題通過給定三個數組S0,P,S,其中S0是1到2n的一個排列,P具有2n個整數,且滿足:

數組S是把數組S0中所有奇數元素全部刪除并將所有偶數元素除以2并按照原來的相對順序進行排列而得。

現在給定數組S和數組P,我們需要反求數組S0。

二:題目分析

我們通過對數組P的遞推式分析可知:當數組S0的元素是偶數時,這個元素所對應的Pi的值一定等于i.當數組S0的元素為奇數時,我們可以知道對應的Pi一定不等于i。那么我們可以先對數組P掃一遍,把存在Pi=i的元素全部填好,然后再對數組P重新掃描一遍,把所有奇數位置的元素通過如下公式求得并填好:

? ? ? ? ?

最后就是對數組進行輸出了。over~

三:AC代碼

?

#include<iostream> using namespace std; int ans[1<<14],s[1<<14],p[1<<14]; int main() {int n;while(cin>>n){for(int i=0;i<n;i++)cin>>p[i];for(int i=0;i<n/2;i++)cin>>s[i];int k=0;for(int i=0;i<n;i++){if(p[i]==i+1){ans[i]=s[k++]*2;}}for(int i=0;i<n;i++){if(p[i]!=i+1){ans[i]=ans[p[i]-1]-1;}}int i;for( i=0;i<n-1;i++)cout<<ans[i]<<' ';cout<<ans[i]<<endl;}return 0; }

?

四:總結

本題就是逆向思維的運用,以及對找到數組之間的規律的綜合體現。

?

轉載于:https://www.cnblogs.com/khbcsu/p/4280166.html

總結

以上是生活随笔為你收集整理的中山大学校队选拔赛第二试题试题3【Compressed suffix array】-------2015年2月8日的全部內容,希望文章能夠幫你解決所遇到的問題。

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