zoukankan      html  css  js  c++  java
  • 【8.5 测试】辉夜的序列

                            辉夜的序列
    【题目背景】
    又是某高中学生会无聊的一天,辉夜同学由于实在太闲,在摆弄她的 n 颗巧克力
    【问题描述】
    突然,由于某种神秘力量,她的巧克力形成了一个神秘序列。她看到这个神秘
    的序列,想到了一条水题。由于真的太水了,她不好意思告诉别人。但她看着你好奇
    的目光,偷偷告诉了你题目。
    每个巧克力都有一个可爱值 x ,x 为小于 n 的正整数,且互不相同。问最少的
    操作数使巧可力的可爱值从左到右,由小到大递增。
    对于每个操作,你可以取出一部分巧克力(可以不连续的子序列),按原有的顺序放到
    所有巧克力的最左边。
    然而出题人想起了 GDOI 拼题的优秀传统(想起了被 网络流拼SAM作为签到题 支配的恐
    惧),想要考下快速幂。设答案为 y ,输出 y^998244355 ( y 的 998244355 次方)
    对 998244353 取模
    【输入格式】
    第一行,一个整数 T,T<=5,表示有T组数据。
    对于每组数据
    第一行 1 个整数 n。
    第二行 n 个整数,表示每个巧克力的可爱值,它们构成一个排列。
    【输出格式】
    输出一行 1 个整数表示答案。
    【样例输入】
    2
    5
    5 4 3 2 1
    4
    1 2 3 4
    【样例输出】
    27
    0
    对于第一组
    第一次取 4 2,放到左边,变成 4 2 5 3 1
    第二次取 2 3,放到左边,变成 2 3 4 5 1
    第三次取 1, 放到左边,变成 1 2 3 4 5
    【数据范围】
    序号 n的最大值
    1 5
    2 10
    3 20
    4 50
    5 100
    6 1000
    7 1000
    8 2000
    9 100000
    10 200000
    对于第3,6个测试点,满足 x 单调递减

    题解:     玄学算法石锤了!who能想到二进制。。。。

               每个数取二进制再-1。从低位向高位不断“找”。

               只要这一位是0就把提到最前面。

               然后如果两个数有序,后一数字的二进制和前面数字一样。

              (可能还是不懂,举个例子哈,图片有点透明,但还是能看清的)

               ps:原文的快速幂其实就是这个数立方…太玄学! 

      

    附上更玄学的代码

    #include <bits/stdc++.h>
    
    using namespace std;
    #define mmst(a, b) memset(a, b, sizeof(a))
    #define mmcp(a, b) memcpy(a, b, sizeof(b))
    
    typedef long long LL;
    
    const int N=300300;
    
    int T,n,num[N],ans,tu;
    
    int main()
    {
        freopen("kaguya1.in", "r", stdin);
        freopen("kaguya1.ans", "w", stdout);
        
        cin>>T;
        while(T--)
        {
        tu=ans=0;
        
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            int x;
            scanf("%d",&x);
            num[x]=i;
        }
        
        for(int i=2;i<=n;i++)
        if(num[i]<num[i-1])
        ans++;
        
        while(ans)
        {
            ans/=2;
            tu++;
        }
        
        cout<<tu*tu*tu<<endl;
        
        }
        
        return 0;
    }
  • 相关阅读:
    安装 SciPy 和 scikit-learn 升级pip 及pip基本命令表
    js修改:before、:after的内容
    初试Celery
    python中的@
    python去除空格和换行符的方法
    Beautiful 疑问小记
    http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321
    浏览器提示框事件
    从欧几里得距离、向量、皮尔逊系数到http://guessthecorrelation.com/
    win安装NLTK出现的问题
  • 原文地址:https://www.cnblogs.com/wuhu-JJJ/p/11307806.html
Copyright © 2011-2022 走看看