CF1450 D. Rating Compression(贪心+stl)

2024-05-31 15:18

本文主要是介绍CF1450 D. Rating Compression(贪心+stl),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

链接 https://codeforces.com/contest/1450/problem/D

On the competitive programming platform CodeCook, every person has a rating graph described by an array of integers a of length n. You are now updating the infrastructure, so you’ve created a program to compress these graphs.

The program works as follows. Given an integer parameter k, the program takes the minimum of each contiguous subarray of length k in a.

More formally, for an array a of length n and an integer k, define the k-compression array of a as an array b of length n−k+1, such that
bj=minj≤i≤j+k−1ai
For example, the 3-compression array of [1,3,4,5,2] is [min{1,3,4},min{3,4,5},min{4,5,2}]=[1,3,2].
A permutation of length m is an array consisting of m distinct integers from 1 to m in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array) and [1,3,4] is also not a permutation (m=3 but there is 4 in the array).

A k-compression array will make CodeCook users happy if it will be a permutation. Given an array a, determine for all 1≤k≤n if CodeCook users will be happy after a k-compression of this array or not.

Input
The first line contains a single integer t (1≤t≤104) — the number of test cases.

The first line of the description of each test case contains a single integer n (1≤n≤3⋅105) — the length of the array.

The second line of the description of each test case contains n integers a1,…,an (1≤ai≤n) — the elements of the array.

It is guaranteed, that the sum of n for all test cases does not exceed 3⋅105.

Output
For each test case, print a binary string of length n.

The k-th character of the string should be 1 if CodeCook users will be happy after a k-compression of the array a, and 0 otherwise.

Example
input
5
5
1 5 3 4 2
4
1 3 2 1
5
1 3 3 3 2
10
1 2 3 4 5 6 7 8 9 10
3
3 3 2
output
10111
0001
00111
1111111111
000
Note
In the first test case, a=[1,5,3,4,2].

The 1-compression of a is [1,5,3,4,2] and it is a permutation.
The 2-compression of a is [1,3,3,2] and it is not a permutation, since 3 appears twice.
The 3-compression of a is [1,3,2] and it is a permutation.
The 4-compression of a is [1,2] and it is a permutation.
The 5-compression of a is [1] and it is a permutation.

题意
给你一个长度为n的序列,可以有n次操作,第i次操作为把序列变成几个长度为i的子段,然后子段最小值构成一个新的序列,其中没有重复的且不超过这个序列长度的值出现,则为1,不然这次操作为0,输出n次操作后结果。

思路
长度为1到n数,我们要的是一个头或尾慢慢增大的一个序列,我们从1到n慢慢枚举就行,头尾特殊处理一下,只要有1出现,尾必然是1,只要没有重复数,头是1。

代码

#include <bits/stdc++.h>
typedef long long ll;
const ll mod = 1e9 +7;
using namespace std;
const int N = 2e3 + 5;
ll Case,n,x;
void solve(){scanf("%d",&n);vector<int> ans(n+5,0),vis(n+5,0);deque<int> zr;for(int i=1;i<=n;i++){scanf("%d",&x);zr.push_front(x);vis[x]++;}for(int i=1;i<=n;i++){if(vis[i]==0) break;ans[i]=1;if(vis[i]>1) break;if(zr.front()==i) zr.pop_front();else if(zr.back()==i) zr.pop_back();else break;}bool flag = true;for(int i=1;i<=n;i++) if(vis[i]!=1) flag = false;ans[n]=flag;for(int i=n;i>=1;i--) printf("%d",ans[i]);puts("");
}
int main(){Case=1;scanf("%d",&Case);while(Case--){solve();} return 0;
}

这篇关于CF1450 D. Rating Compression(贪心+stl)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018288

相关文章

usaco 1.3 Barn Repair(贪心)

思路:用上M块木板时有 M-1 个间隙。目标是让总间隙最大。将相邻两个有牛的牛棚之间间隔的牛棚数排序,选取最大的M-1个作为间隙,其余地方用木板盖住。 做法: 1.若,板(M) 的数目大于或等于 牛棚中有牛的数目(C),则 目测 给每个牛牛发一个板就为最小的需求~ 2.否则,先对 牛牛们的门牌号排序,然后 用一个数组 blank[ ] 记录两门牌号之间的距离,然后 用数组 an

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

POJ2010 贪心优先队列

c头牛,需要选n头(奇数);学校总共有f的资金, 每头牛分数score和学费cost,问合法招生方案中,中间分数(即排名第(n+1)/2)最高的是多少。 n头牛按照先score后cost从小到大排序; 枚举中间score的牛,  预处理左边与右边的最小花费和。 预处理直接优先队列贪心 public class Main {public static voi

ural 1820. Ural Steaks 贪心

1820. Ural Steaks Time limit: 0.5 second Memory limit: 64 MB After the personal contest, happy but hungry programmers dropped into the restaurant “Ural Steaks” and ordered  n specialty steaks

ural 1014. Product of Digits贪心

1014. Product of Digits Time limit: 1.0 second Memory limit: 64 MB Your task is to find the minimal positive integer number  Q so that the product of digits of  Q is exactly equal to  N. Inpu

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

C++ STL 适配器

系列文章目录 模板特例化,偏特化,左右值引用 https://blog.csdn.net/surfaceyan/article/details/126794013 C++ STL 关联容器 https://blog.csdn.net/surfaceyan/article/details/127414434 C++ STL 序列式容器(二) https://blog.csdn.net/surfac

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相