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\n");
else printf("Yes\n");
}
return 0;
}

最新文章

  1. Java:单例模式的七种写法
  2. 1.Linux系统安装
  3. 用javascript得到客户端IP的新方法
  4. Android自定义进度条颜色
  5. Java命名:
  6. Java 第五天 Spring IOC 配置文件
  7. web前端知识
  8. Android Studio默认产生Fragment
  9. python3网络编程之socket
  10. AMDP + XSLX Workbench 报表开发模式
  11. ListView属性及divider设置分割线
  12. sql 中 and 和 or的坑
  13. day 11 - 1 装饰器
  14. Confluence 6 属性的一个活动
  15. eclipse c++11 cmake gnuradio
  16. vscode setting.jsonxx
  17. 拜托!面试请不要再问我Spring Cloud底层原理[z]
  18. Orchard Core 版本冲突 The type &#39;FormTagHelper&#39; exists in both &#39;Microsoft.AspNetCore.Mvc.TagHelpers, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60&#39; and...
  19. 结合IdentityServer4配置Ocelot的Json配置文件管理更新
  20. 图表ASP:Chart

热门文章

  1. css 样式中 margin padding和top类定位的区别
  2. [git] github 推送以及冲突的解决,以及一些命令
  3. 吃瓜的正确姿势,Python绘制罗志祥词云图
  4. UML 建模工具的安装与使用
  5. MVC-过滤器-Action
  6. python 携程asyncio实现高并发示例1
  7. Java 解析 xml 常见的4中方式:DOM SAX JDOM DOM4J
  8. 面试官:你对Redis缓存了解吗?面对这11道面试题你是否有很多问号?
  9. Spring Cloud微服务技术概览
  10. foreach里的按引用传值问题