中山大学校队选拔赛第二试题试题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;
}

四:总结

本题就是逆向思维的运用,以及对找到数组之间的规律的综合体现。

时间: 2024-08-02 11:02:45

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

中山大学校队选拔赛第一章题4【简单数迷Simple Kakuro】-------2015年1月28日

一:题意描述 本题就是给定一个迷宫,其中第一行和第一列都给定了数值.现在我们的任务就是需要把剩余的空格用1-9的数字把它填满,并且每行每列数值之和需要和行列标定的值相等.问最后是否可行,如果有多种方案需要输出一种方案. 二 :题目分析 本题主要考查DFS当中剪枝技巧的利用以及DFS的方向规划问题. 首先我们可以根据题目已知信息得出行之和必须等于列之和.(第一次剪枝) 然后我们可以根据每一个数字不能在同一行或者同一列重复出现[设定标记]进行剪枝(第二次剪枝) 对于如果某一行(一列)数值还没有填满但

中山大学校队选拔赛第一章题1【紧急逃离Emergent escape】----2015年1月26日

一: 题意描述 二:题目分析 本题的大致意思是讲:在给定的一个大圆上挖去很多圆(这些圆有的在大圆里面,有的在大圆外面,有的与圆相加),凡是被圆占据的部分则不能通行. 现在给定两个点,(lifeship和controlling room)如果两者能够到达的话表示能够Escape,否则就只有Die hard. 本题的主要考查图论知识和计算几何方面的知识.首先我们对于这个问题需要建模.我们首先可以把这个大圆看成单独的一个区域.现在的问题就是在整个大圆内找不到一条线可以让lifeship和control

中山大学校队选拔赛第一章题1【计算生成树】------2015年1月23日

1.1问题描述 1.2问题分析 本题主要考查图论中生成树及组合数学的求法.通过观察我们可以发现当输入为n时,我们一共有(5*n-n)=4n个点.通过思考我们可以知道,要想求得生成树,我们必须使所有五角形的圈全部破掉.那么我们可以思考: 如果对于一个五角形而言,它的每一条边都不删除,那么我们可以发现这必定不能构成生成树,因为这会导致在五角形内任意两个点会至少含有两条路径,不符合生成树的含义.所以我们可以得出如下结论: (1)对于有边数为n的回圈,我们可以发现一共有4n个点,共有5n条边.根据生成树

2015年5月9日公开课第二季—《自动化运维平台的设计理念》

朋友们,随着我们上期公开课的成功举办,马哥linux运维为了给大家分享更多的干货,我们将于2015年5月9日进行公开课第二季,本季公开课将由magedu-comyn老师为大家进行分享! 运维即将迈入2.0时代,越来越追求平台化,自动化,工具化等多元化的整合,相应的,对运维的要求在慢慢的提升,知名互联网公司中,devops已经成为一种新趋势,新的职业,在未来的运维职业中,自动化运维程度要求将会更高,comyn大神的运维自动化框架,已经成熟的运用于多家互联网公司中,标准化流程化自动化,极大的提高了运

中山大学校队内部选拔赛试题3.1【Factorial Factors】--------2015年2月9日

一:题目大意 当给定一个数时,先求出它的所有因子N1,N2······Nk,然后求出它的因子对应的因子的个数n1,n2·····nk,并求出最终结果S=n1^3+n2^3+n3^3+·····+nk^3. 二:题目分析 本题的数据范围是N<2^31.如果对于每一趟直接判断时间复杂度将会很高.因此我们需要做预处理,先求出在最大范围内所有的质数. 对于每一个质数p,它的因子只有1和p本身,那么S(p)=1+2^3=9. 对于数字x=p^k,我们可以得知它有1,p,,,,p^k这么多因子,那么S(x)

中山大学校队内部选拔赛试题试题2【New Year Gift】--------2015年2月8日

一 题意分析 本题就是说给定n种类型的珍珠,每一种珍珠都有固定的数目.现在我们需要串需要M种不同类型珠子的珍珠链,现在问我们最多可以组成多少珍珠链? 二 题目分析 这道题主要考查二分思想的运用.对于二分法我们首先需要找到上界与下界,这里的下界我们可以设置为0,上界可以设定为最大(2000000表示一个珍珠链只需要一个珍珠),我们在进行二分,如何二分我们可以定义一个变量sum,不同类型珍珠数量的数组num[],中间变量Mid.对于每一种类型的珍珠,如果num[i]>mid则让sum+=mid,否则

中山大学校队内部选拔赛3.5【Horse Racing】------2015年2月10日

一:题目大意 给定A和B两人各自n条马,每一条马的能力值不同,现在由裁判C主持比赛.每一次比赛A和B各自出一条马,能力值大的一方会获胜.现在规定如果当进行到最后时A和B打成平手的话我们就说C赢.现在问怎样才能保证C赢? 二:题目分析 本题主要考查贪心(不太好想)策略.我们首先可以得到一个起码的规律那就是如果n是奇数,那么这个肯定不会赢.当n时偶数时: 我们要想C赢,那么A和B需要各自赢一半.现在我们对于A的输入的马能力值定义为:a1,a2,a3······an.B的输的能力值定义为:b1,b2,

中山大学选拔赛第一章题1【计算生成树】------2015年1月23日

1.1问题描述 1.2问题分析 本题主要考查图论中生成树及组合数学的求法.通过观察我们可以发现当输入为n时,我们一共有(5*n-n)=4n个点.通过思考我们可以知道,要想求得生成树,我们必须使所有五角形的圈全部破掉.那么我们可以思考: 如果对于一个五角形而言,它的每一条边都不删除,那么我们可以发现这必定不能构成生成树,因为这会导致在五角形内任意两个点会至少含有两条路径,不符合生成树的含义.所以我们可以得出如下结论: (1)对于有边数为n的回圈,我们可以发现一共有4n个点,共有5n条边.根据生成树

2015年7月9日 CSS第二课(浮动、盒子模型、绝对定位和相对定位)

list-style-type:none是指不显示项目符号 1.块级元素的特点:       常用的块级元素有:body,ul li,ol li,h1-6,div,hr,p,table……等 (1)块级元素里面的内容,或者背景图片,默认显示在块的左上角 (2)块级元素,默认情况下,单独占满一行. 常用的块级元素:div.p.h1-h6.hr.ul li.ol li.table.body... 2.浮动:float 作用:通过漂浮,让块级元素实现并排 float:left 或 right 注意:如