AtCoder Grand Contest 032 A - Limited Insertion( 思维)
Time Limit: 2 sec / Memory Limit: 1024 MB
Score : 400400 points
Problem Statement
Snuke has an empty sequence aa.
He will perform NN operations on this sequence.
In the ii-th operation, he chooses an integer jj satisfying 1≤j≤i1≤j≤i, and insert jj at position jj in aa (the beginning is position 11).
You are given a sequence bb of length NN. Determine if it is possible that aa is equal to bb after NN operations. If it is, show one possible sequence of operations that achieves it.
Constraints
- All values in input are integers.
- 1≤N≤1001≤N≤100
- 1≤bi≤N1≤bi≤N
Input
Input is given from Standard Input in the following format:
NN
b1b1 …… bNbN
Output
If there is no sequence of NN operations after which aa would be equal to bb, print -1. If there is, print NN lines. In the ii-th line, the integer chosen in the ii-th operation should be printed. If there are multiple solutions, any of them is accepted.
Sample Input 1 Copy
3
1 2 1
Sample Output 1 Copy
1
1
2
In this sequence of operations, the sequence aa changes as follows:
- After the first operation: (1)(1)
- After the second operation: (1,1)(1,1)
- After the third operation: (1,2,1)(1,2,1)
Sample Input 2 Copy
2
2 2
Sample Output 2 Copy
-1
22 cannot be inserted at the beginning of the sequence, so this is impossible.
Sample Input 3 Copy
9
1 1 1 2 2 1 2 3 2
Sample Output 3 Copy
1
2
2
3
1
2
2
1
1
题意:
初始你有一个空的数组,
你将执行以下操作n次,
第i次你可以选择一个1~i的数,
并把这个数插入数组的第i个位置,之前的i和i的位置如果有数将向后移动。
现在给你最后的结果数组,让你判断是否可以通过操作来完成,如果可以请输出一个方案。
思路:
我们可以用逆向思维,我们知道这n个操作的最后一个操作一定是把i放在i的位置,那么我们不妨从大到小枚举数组的a[i] 是否等于 i
如果等于,我们可以把它作为我们的最后一次操作,然后把这个数从数组中删除,然后再重复上面的操作,来找次最后的操作。。
如果某一步找不到一个a[i]==i时,那么可以得出没有方案得到这个数组。
如果都可以删除掉,然后把中途找到的数i,逆序输出,就说我们要输出的答案了。
细节见代码:
#include <iostream>
#include <bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#define ALL(x) (x).begin(), (x).end()
#define rt return
#define dll(x) scanf("%I64d",&x)
#define xll(x) printf("%I64d\n",x)
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define eps 1e-6
#define gg(x) getInt(&x)
#define db(x) cout<<"== [ "<<x<<" ] =="<<endl;
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
ll powmod(ll a,ll b,ll MOD){ll ans=;while(b){if(b%)ans=ans*a%MOD;a=a*a%MOD;b/=;}return ans;}
inline void getInt(int* p);
const int maxn=;
const int inf=0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/
int n;
int a[maxn];
int main()
{
//freopen("D:\\common_text\\code_stream\\in.txt","r",stdin);
//freopen("D:\\common_text\\code_stream\\out.txt","w",stdout);
// list<int> ls;
// int n;
gbtb;
cin>>n;
repd(i,,n)
{
cin>>a[i];
}
int isok=;
std::vector<int> ans;
int len=n;
while(len)
{
int temp=len;
for(int i=len;i>=;i--)
{
if(a[i]==i)
{
ans.push_back(i);
repd(j,i,len)
{
a[j]=a[j+];
}
len--;
break;
}
}
if(temp==len)
{
break;
}
}
if(len>)
{
cout<<-<<endl;
}else
{
reverse(ALL(ans));
for(auto x:ans)
{
cout<<x<<endl;
}
} return ;
} inline void getInt(int* p) {
char ch;
do {
ch = getchar();
} while (ch == ' ' || ch == '\n');
if (ch == '-') {
*p = -(getchar() - '');
while ((ch = getchar()) >= '' && ch <= '') {
*p = *p * - ch + '';
}
}
else {
*p = ch - '';
while ((ch = getchar()) >= '' && ch <= '') {
*p = *p * + ch - '';
}
}
}
AtCoder Grand Contest 032 A - Limited Insertion( 思维)的更多相关文章
- Atcoder Grand Contest 032
打的第一场Atcoder,已经知道会被虐得很惨,但没有想到竟然只做出一题-- 思维急需提升. A - Limited Insertion 这题还是很签到的. 感觉正着做不好做,我们反着来,把加数变为删 ...
- Atcoder Grand Contest 032 E - Modulo Pairing(乱搞+二分)
Atcoder 题面传送门 & 洛谷题面传送门 神仙调整+乱搞题. 首先某些人(including me)一看到最大值最小就二分答案,事实上二分答案对这题正解没有任何启发. 首先将 \(a_i ...
- Atcoder Grand Contest 031B(DP,思维)
#include<bits/stdc++.h>using namespace std;int a[200007];int b[200007];long long dp[200007];lo ...
- AtCoder Grand Contest 032 B - Balanced Neighbors——构造
题意 B - Balanced Neighbors 给定一个整数 $N$($3\leq N \leq 100$),构造一个顶点编号为 $1...N$ 的无向图,需满足如下两个条件: 简单图且连通 存在 ...
- Atcoder Grand Contest 037A(贪心,思维)
#include<bits/stdc++.h>using namespace std;string s;char ans[200007][7];char anss[200007][7];i ...
- AtCoder Grand Contest 019 B - Reverse and Compare【思维】
AtCoder Grand Contest 019 B - Reverse and Compare 题意:给定字符串,可以选定任意i.j且i<=j(当然i==j时没啥卵用),然后翻转i到j的字符 ...
- Atcoder Grand Contest 024 E - Sequence Growing Hard(dp+思维)
题目传送门 典型的 Atcoder 风格的计数 dp. 题目可以转化为每次在序列中插入一个 \([1,k]\) 的数,共操作 \(n\) 次,满足后一个序列的字典序严格大于前一个序列,问有多少种操作序 ...
- AtCoder Grand Contest 012
AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大 ...
- AtCoder Grand Contest 011
AtCoder Grand Contest 011 upd:这篇咕了好久,前面几题是三周以前写的... AtCoder Grand Contest 011 A - Airport Bus 翻译 有\( ...
随机推荐
- Linux下Springboot解决`APR based Apache Tomcat Native library`提示
最近转行做java,开发基于Springboot的项目,版本号为2.1.0.RELEASE. 启动应用,发现以下提示: The APR based Apache Tomcat Native libra ...
- mysql的学习笔记(一)
前言 开发中经常用mysql和SQL server交替使用,自己都产生知识的混乱.在这里重新整理下mysql的知识,也是梳理自己知识点,因为是学习笔记,所以并不会使用到图形化管理工具.mysql的安装 ...
- 『练手』001 Laura.SqlForever架构基础(Laura.XtraFramework 的变迁)
001 Laura.SqlForever架构的基础(Laura.XtraFramework 的变迁之路) Laura.XtraFramework 到底是 做什么的? Laura.XtraFramewo ...
- 【原创】Mindjet Manager思维导图软件云服务功能的使用方法
注:自己使用了mindjet manager来画思维导图已经有一段时间了,无疑mindjet manager的功能是很强大的,但是最近因为自己两台电脑都安装了mindjet manager,每 ...
- LeetCode 上最难的链表算法题,没有之一!
题目来源于 LeetCode 第 23 号问题:合并 K 个排序链表. 该题在 LeetCode 官网上有关于链表的问题中标注为最难的一道题目:难度为 Hard ,通过率在链表 Hard 级别目前最低 ...
- pdf文件下载水印添加的中文与空格问题解决
public static boolean waterMark(String inputFile, String outputFile, String waterMarkName)throws IOE ...
- Django 创建一个返回当前时间的页面
创建一个 Django 项目及应用 django-admin startproject mysite cd mysite # 手动创建一个 templates 文件夹用来保存 html 文件 mkdi ...
- iOS----------use_frameworks!
1.https://segmentfault.com/a/1190000007076865 2.https://www.jianshu.com/p/8269e4cac48f 3.https://www ...
- [Python] wxPython 高防Windows10记事本 (end...)
1.开始 接触Python 也有一段时间了,o.o ,断断续续加起来没几天. 一般新学习一门新语言,除了必先输出一个 Hello World 外,都会以模拟 Windows 记事本来写一个结合自己想法 ...
- HTML导出excel
在博客园找到的相关问题http://q.cnblogs.com/q/12952 还有相关的回答http://www.cnblogs.com/zhouxin/archive/2009/12/11/16 ...