B.Box
时间:2019-11-30
本文章向大家介绍B.Box,主要包括B.Box使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目:盒子
题目:排列p是一个整数序列 p = [p1, p2,...,pn],由n个唯一的正整数组成
唯一的线索是你需要打开上锁的盒子
你只知道前缀的最大数,q1, q2, ..., qn,保证qi <= qi+1例如
q1 = p1
q2 = max(p1, p2)
q3 = max(p1, p2, p3)
...
qn = max(p1, p2, ..., pn)
你需要构造任意合适的序列
分析:显然,如果qi不等于qi+1,那么pi = qi,因为qi <= qi+1,假设q0 = 0,其它位置的数可以被填充为从左到右增加的序列,构造完后检查构造的序列即可
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int t;
const int N = 100005;
int p[N];
int secret[N];//构造好的秘密
vector<int> v;
bool used[N];
int main()
{
scanf("%d", &t);
while (t--)
{
int n;
bool flag = false;
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
{
scanf("%d", &p[i]);
}
secret[1] = p[1];
used[p[1]] = true;
for (int i = 2; i <= n; ++i)
{
if (p[i] != p[i - 1])
{
secret[i] = p[i];
used[p[i]] = true;
}
}
for (int i = 1; i <= n; ++i)
{
if (!used[i])
v.push_back(i);
}
for (int i = 1, j = 0; i <= n; ++i)
{
if (!secret[i])
{
int t = v[j];
if(t <= p[i])
secret[i] = v[j++];
else
{
flag = true;
break;
}
}
}
if (!flag)
{
for (int i = 1; i <= n; ++i)
{
printf("%d ", secret[i]);
}
printf("\n");
}
else {
puts("-1");
}
v.clear();
memset(used, 0, sizeof used);
memset(p, 0, sizeof p);
memset(secret, 0, sizeof secret);
}
return 0;
}
原文地址:https://www.cnblogs.com/pixel-Teee/p/11963813.html
- 腾讯云联手腾讯安全玄武实验室,提供「应用克隆」漏洞免费检测服务
- 1.注册或登录页面设计:UILabel,UIButton,UITextField
- 和为S的两个数字VS和为s的连续正数序列
- HANDLE
- Kafka的基本概念与安装指南(单机+集群同步)
- 科技专栏:001 机器人为美国带来大量失业人口,我们怎么办?
- HBase跨地区机房的压测小程序——从开发到打包部署(图文版)
- 从零新建小程序
- 计算机网络基础回顾
- iOS应用开发:什么是ARC
- 通过两个小栗子来说说Java的sleep、wait、notify、notifyAll的用法
- 用HPS游戏充值是一种什么样的体验?
- Bootstrap源码分析之dropdown
- Volatile的作用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法