zoukankan      html  css  js  c++  java
  • Codeforces 1262B Box

    思路:

    1.从前往后遍历原序列,如果后减前大于一则将缺失的值放入队列中,如果前后两次一样则从队列中取一个值出来填上去,如果前小于后,那就非法了;
    2.最后查看队列是否为空,不为空说明缺失值都填补上去了,那就输出序列;

    代码:

    #define IOS ios::sync_with_stdio(false);cin.tie(0)
    #include<bits/stdc++.h>
    using namespace std;
    typedef pair<int,int> P;
    typedef long long LL;
    #define fi first
    #define sc second
    #define mp(a,b) make_pair(a,b)
    #define pb(a) push_back(a)
    #define rp(i,n) for(int i=0;i<n;i++)
    #define rpn(i,n) for(int i=1;i<=n;i++)
    const int MAX_N=1e5+99;
    int q[MAX_N];
    int main(){
    	IOS;
    	int t;
    	cin>>t;
    	while(t--){
    		int n;
    		cin>>n;
    		int pre=0;
    		queue<int> que;
    		bool flag=true;
    		rp(i,n){
    			cin>>q[i];
    			int pp=q[i];
    			if(!flag) continue; 
    			if(q[i]-pre>1){
    				for(int j=pre+1;j<q[i];j++) que.push(j);
    			}else if(q[i]-pre==0){
    				if(que.empty()) flag=false;
    				q[i]=que.front();
    				que.pop();
    			}else if(q[i]<pre) flag=false;
    			pre=pp;
    		}
    		if(que.empty()&&flag){
    			cout<<q[0];
    			for(int i=1;i<n;i++) cout<<' '<<q[i];
    		}else cout<<-1;
    		cout<<'
    ';
    	}
    	return 0;
    }
    
  • 相关阅读:
    Java--垃圾回收【转载】
    Android--adb常用命令
    Android--四大组件
    review代码,需要做些什么???
    安全测试基础 -- 概述【转载】
    python操作json
    python代码审查之flake8
    django模板语法
    python操作redis
    python发送邮件
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308820.html
Copyright © 2011-2022 走看看