CF1341C. Nastya and Strange Generator(思维 模拟 构造)

简介: CF1341C. Nastya and Strange Generator(思维 模拟 构造)

linkkkk

题意:

给出n,要求将1   n 的数放到n个位置,问给出的p数组能否按照如下规则放置得到。

规则是:r数组满足r i > = i并且r i没有被占用,c i表示r数组里值为i的数的个数。每次选择c数组的最大值放置对应的位置放置,如果有多个位置的话,任意选择一个放置。

思路:

模拟一下样例后发现,如果一个元素放在了第k个位置,那么下一个元素会放在第k + 1个位置,因为这时候c k + 1 = = 2。但是如果k kk是数组里最后一个位置呢,那么下一个位置就可以从前面的位置任意选择不受限制了。

用f l a g表示放置是否受到限制,如果k不是最后一个位置,那么下一个位置必须是k + 1

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+10,inf=0x3f3f3f3f;
int n,p[maxn],st[maxn];
int main(){
    int _;cin>>_;
    while(_--){
        cin>>n;
        for(int i=1;i<=n;i++) cin>>p[i],st[i]=0;
        int las=n,flag=1,flag1=1;
        if(p[1]==las){
            flag=0;las--;
        }
        st[p[1]]=1;
        for(int i=2;i<=n;i++){
            st[p[i]]=1;
            if(flag){
                if(p[i]!=p[i-1]+1){
                    flag1=0;break;
                }
            }
            if(p[i]==las){
                flag=0;
                while(st[las]) las--;
            }
            else flag=1;
        }
        if(!flag1) puts("No");
        else puts("Yes");
    }
    return 0;
}

参考


目录
相关文章
|
3月前
|
Java
【编程基础知识】《Java 基础探秘:return、break、continue、label、switch 与 enum 的深度解析》
本文深入解析了 Java 中的 return、break、continue、label、switch 和 enum 等基础概念,通过代码示例和流程图,帮助读者理解这些控制结构和枚举类型在编程中的应用,提升编程能力。
33 3
|
5月前
dict 和 set 的 8 个经典使用例子
dict 和 set 的 8 个经典使用例子
55 4
|
8月前
|
设计模式 Java 测试技术
【设计模式】JAVA Design Patterns——Arrange/Act/Assert(安排/执行/断言模式)
【设计模式】JAVA Design Patterns——Arrange/Act/Assert(安排/执行/断言模式)
|
8月前
|
存储 缓存 安全
learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景、volatile 的基本理解与实验证明)
learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景、volatile 的基本理解与实验证明)
|
人工智能
CF1556D. Take a Guess(交互 性质)
CF1556D. Take a Guess(交互 性质)
98 0
CF1556D. Take a Guess(交互 性质)
|
人工智能 BI
CF761D Dasha and Very Difficult Problem(构造 思维)
CF761D Dasha and Very Difficult Problem(构造 思维)
87 0
CF1567D. Expression Evaluation Error(思维 贪心)
CF1567D. Expression Evaluation Error(思维 贪心)
70 0
|
JavaScript
什么是Generator函数,有何作用
什么是Generator函数,有何作用
157 0
|
JSON JavaScript 前端开发
【重温基础】11.Map和Set对象
【重温基础】11.Map和Set对象
194 0