CF 1617C. Paprika and Permutation
题目链接
题意:给一个数列,问通过操作:a[i]=a[i]%x(x自己选择)后,能不能成为1到n的排序,如果能,输出最小操作次数,否则输出-1.
解法:对数组a排序后,先把a中出现的1~n的数删掉最多一个,并标记,因为这个数对可以不经过操作而作为答案的一份子。然后遍历排序后的数组,k为当前的位置应该能操作后得到的数,当a[i]不能变成k,直接输出-1.
对a[i]取模可以得到的数范围0~(a[i]-1)/2
#include<bits/stdc++.h>
#define fo(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll;
int a[100005],b[100005];
int main() {ios::sync_with_stdio(false);cin.tie(0);int t, n;cin >> t;while (t--) {cin >> n;int pan=1, ans = 0,k=1;for (int i = 1; i <= n; i++) { cin >> a[i]; b[i] = 0; }sort(a + 1, a + 1 + n);deque<int>q; for (int i = 1; i <= n; i++) { if (a[i] <= n && b[a[i]] == 0) {b[a[i]] = 1;continue;}q.push_back(a[i]);}while (k <= n && pan) {while (1) {while (b[k])k++;if (k > n)break;if (q.size() == 0) { pan = 0; break; }int res = q.front(); q.pop_front();if (res < k) { pan = 0; break; }else if (res == k) { k++; break; }else {if (res > k * 2) { ans++; k++; break; }else {pan = 0; break;}}}}if (pan)cout << ans << endl;else cout << -1 << endl;}return 0;
}
CF 1617C. Paprika and Permutation相关推荐
- C. Paprika and Permutation
C. Paprika and Permutation 问题描述 题意 给你n个数,定义这样一个操作,对于一个数a,任取一个x>0,使得a=a%x.对这n个数至少进行k次这样的操作后如果能得到1~ ...
- cf 1512 E. Permutation by Sum
cf 1512 E. Permutation by Sum 题意: 我们定义排列的概念为:从1到n的整数组成的序列,每个数字只出现一次 现在给你n,l,r,s,让你构造一个长度为n的排列,使得其中的第 ...
- 【2019雅礼集训】【CF 960G】【第一类斯特林数】【NTT多项式】permutation
目录 题意 输入格式 输出格式 思路 代码 题意 找有多少个长度为n的排列,使得从左往右数,有a个元素比之前的所有数字都大,从右往左数,有b个元素比之后的所有数字都大. n<=2*10^5,a, ...
- CF#303A Lucky Permutation Triple 数论
题意:要求给出一个数N的余数系的三个排列A, B, C,其中使得对于任意的 i 满足(A[i] + B[i]) % N = C[i]. 例如N=5的时候有一下排列: A: 1 4 3 2 0 B: 1 ...
- CF Round Div.3-E Obtain a Permutation //数学规律
题目链接 http://codeforces.com/contest/1294/problem/E 题意 给你一个 n × m n×m n×m 的矩阵(元素从 1 − n × m 1-n×m 1−n× ...
- [cf 1091D]D. New Year and the Permutation Concatenation
新版题解链接:https://blog.csdn.net/aiqiyizz/article/details/115579003 题意:给n!个n的排列,按字典序从小到大连成一条序列,例如3的情况为:[ ...
- [CF]Codeforces Round #529 (Div. 3)
[CF]Codeforces Round #529 (Div. 3) C. Powers Of Two Description A positive integer xx is called a po ...
- CF #764 Div.3(B ~D)
CF #764 Div.3 B题 Make AP 给定a b c 使其中一个数 乘 任意正整数m 问是否能构成成差数列 我们可以想到等差数列的性质 2b=a+c2b = a + c 2b=a+c 思路 ...
- 【cf】Codeforces 题解等汇总
[cf]Codeforces Round #774 (Div. 2) 前4题 [cf]Codeforces Round #774 (Div. 2) 前4题_legend_yst的博客-CSDN博客 [ ...
最新文章
- Python-Pandas 如何shuffle(打乱)数据?
- Java UDP 编程简介.
- 树节点的遍历,查找,删除(前序,中序,后序)
- python数据库增删改查_python实现数据库增删改查
- 图像风格迁移(Neural Style)简史
- 用Netty撸一个心跳机制和断线重连!
- A1107班拜年视频录制过程记录
- Java:月份的中英文转换
- Asterisk目录结构如下
- android gpu 编程,Android设备上的GPU编程
- Hbase二级索引入门
- 开源|Davinci用户体验:你离数据可视精美大屏只差一个Davinci!
- define定义的函数如何引用_3分钟短文:Laravel 编程中优雅地添加定义常量
- python清理浏览器缓存_浏览器缓存看这一篇就够了
- 数据持久化(Json,二进制,PlayerPrefs)
- mysql now()函数调用系统时间不对修正方法
- 首出集团:超级推荐引爆流量,6步店铺跨越到第六层级
- PromQL 直方图 跟踪请求的延迟或响应大小 99%的请求是在多少延迟下完成的?
- linux限制网口带宽指令,Linux使用wondershaper限制网络带宽
- #203-[DFS]狼和羊
热门文章
- unity3d collider自动调整大小_Unity 3D | 美术向系列教程2_地形系统介绍
- event对象的一些方法(取消冒泡,阻止默认行为)
- mix1 android n,因为一条评论引发的讨论——论MIX系列垮掉的第一代
- DataFound 2019用户画像竞赛分析
- 遍历字符串字符 php,php逐个汉字遍历字符串
- 2022危险化学品生产单位安全生产管理人员培训试题及答案
- flexpaper java 例子_Flexpaper二次开发入门教程》(十) Flexpaper简单使用-第一个Flexpaper例子...
- 12c/19c unplug/plug迁移PDB
- 在Linux防火墙上过滤外来的ICMP timestamp和禁止Traceroute探测
- 《惢客创业日记》2020.12.25(周五)咸鱼变鲶鱼