zoukankan      html  css  js  c++  java
  • CF#637 C. Nastya and Strange Generator

    C. Nastya and Strange Generator

    题意

    有一个随机全排列生成器,给出你一个全排列,让判断是否可以通过这个生成器产生。

    生成器工作方式:

    第i步为数字i寻找位置pos。

    首先pos是一个空位置,定义每个空位置的价值为左边连续有数字的位置数,会为数字i在价值最大的一个或者多个位置中选择一个位置。

    比如上图,第三个位置的值是2,第4个位置的值是0,这时4就选择了第3个位置。

    思路

    写一下就会发现,这个生成器生成的全排列是有规律的。

    n的全排列

    x+y+1 x+y+2.....n x+1 x+2... x+y 1 2 3 4.......x

    可以知道如果当前位小于后一位,一定是小1。如果有不是小1的,就说明不能通过生成器生成

    代码

    #include<bits/stdc++.h>
    #define pb push_back
    using namespace std;
    typedef long long ll;
    const int N=2e5+10;
    const int mod=1e9+7;
    const int inf=0x3f3f3f3f;
    
    int arr[N],vis[N];
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
                scanf("%d",&arr[i]);
            int flag=0;
            for(int i=n;i>1;i--)
            {
                if(arr[i]>arr[i-1])
                {
                    if(arr[i]-arr[i-1]!=1)
                    {
                        flag=1;
                        break;
                    }
                }
            }
            if(flag) printf("No
    ");
            else printf("Yes
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    字符串去特定字符
    字符串的查找删除
    输出梯形
    元素节点的 innerText、innerHTML、outerHTML、outerText
    JavaScript DOM 特殊集合Collection
    Collection 访问方式
    JS Browser BOM
    异常
    JCBD
    try-with-resources 方式关闭注意事项
  • 原文地址:https://www.cnblogs.com/valk3/p/12843672.html
Copyright © 2011-2022 走看看