CF1557B Moamen and k-subarrays 题解
Content
给定一个大小为 \(n\) 的数组。你可以将其分为 \(k\) 个子数组,并按照每个子数组的字典序重新排列这些子数组,再顺次拼接,得到一个新的数组。问是否存在一种划分子数组的方案,使得重新拼接后的数组是单调不降的?
数据范围:\(t\) 组数据,\(1\leqslant t\leqslant 1000\),\(1\leqslant k\leqslant n\leqslant 10^5\),\(0\leqslant |a_i|\leqslant 10^9\),\(\sum n\leqslant 3\times 10^5\)。
Solution
我们不妨将原来的数组中的元素按照其在数组中的大小顺序重新编号。例如说 \([1,-4,0,-2]\)(即样例第二组数据)可以按照这种方式重新编号为 \([4,1,3,2]\)。然后这道题目就转化为是否可以找到一组划分方案使得重新拼接后的数组是 \([1,2,3,\dots,n]\)。
这就非常简单了。首先一个很显然的结论,要想划分的数组尽量少,就尽量把变化后的数组中连续且单调递增的一段分成一个子数组。比如说 \([6,1,4,5,7,8,9,2,3]\) 就可以按照这种思想划分为 \([6],[1],[4,5],[7,8,9],[2,3]\)。可以证明这种划分方案可以使得最终划分的子数组尽量少。
设我们按照上面的方案最终划分的子数组的数量为 \(x\),则最后只需要看是否有 \(x\leqslant k\) 即可。
Code
namespace Solution {
int a[100007], id[100007];
ib cmp(int ida, int idb) {return a[ida] < a[idb];}
iv Main() {
MT {
int n = Rint, k = Rint, cnt = 1;
F(int, i, 1, n) a[i] = Rint, id[i] = i;
sort(id + 1, id + n + 1, cmp);
// F(int, i, 1, n) printf("%d%c", id[i], " \n"[i == n]);
F(int, i, 2, n) if(id[i] != id[i - 1] + 1) cnt++;
cnt > k ? No : Yes;
}
return;
}
}
CF1557B Moamen and k-subarrays 题解的更多相关文章
- K - Subarrays OR Gym - 102152K (思维)
题目链接: K - Subarrays OR Gym - 102152K 题目大意:T组测试样例,然后n个数,让你求每一个l,r中有多少个不同的异或值. 具体思路: 对于(1,i)这个区间, 我们当前 ...
- OJ2237第k小数题解
题目描述: 有n个数,请你找出第k小的数. 输入描述: 第一行有2个正整数n,k(n,k<=10^7)第二行有n个非负数ai(ai<=10^5) 输出描述: 输出第k小的数. 输入样例: ...
- Codeforces gym102152 K.Subarrays OR
传送:http://codeforces.com/gym/102152/problem/K 题意:给定$n(n\le10^5)$个数$a_i(a_i\le10^9)$,对于任一个子数组中的数进行或操作 ...
- 9.1练习题5 差k素数对 题解
题目出处:洛谷 P1348 ,题面略有改编. 题目描述 给你两个数 n 和 k ,请求出所有小于等于 n 的相差为 k 的素数对. 输入格式 两个正整数n,k.1<=k<=n<=10 ...
- 排序入门练习题3 谁考了第k名 题解
题目出处:<信息学奥赛一本通>第二章 上机练习1 题目描述 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名的学生的学号和成绩. 输入格式 输入的第一行包含两 ...
- 2018ICPC网络赛(焦作站)K题题解
一.题目链接 https://nanti.jisuanke.com/t/31720 二.题意 给$N$种船只,第$i$种船的载重量是$V_i$,数量是$2^{C_i}-1$.接下来有$Q$次询问,每次 ...
- 2018HPU暑期集训第四次积分训练赛 K - 方框 题解(图形打印)
思路分析:题目已经明确透露了这道题的解法:就是画框.当 输入的边长 的话,就表示可以在内层继续嵌套一个方框.废话就不多说了,直接上代码吧! 代码如下: #include <iostream&g ...
- Educational Codeforces Round 12 E. Beautiful Subarrays trie求两异或值大于等于k对数
E. Beautiful Subarrays One day, ZS the Coder wrote down an array of integers a with elements a1, ...
- POJ2104 区间第k小
题意就是区间第k大…… 题解: 前段时间用主席树搞掉了…… 如今看到划分树,是在想来写一遍,结果18号对着学长的代码调了一上午连样例都没过,好桑心…… 今天在做NOI2010超级钢琴,忽然发现用划分树 ...
随机推荐
- 【树莓派】Python开发工控机急停设计
背景 我们在一些工业产品中使用树莓派替代了PLC和上位机,并借助树莓派的算力将AI和机器视觉引入工业领域. 以前的产品都不存在动作机构,仅仅将结果输出到指示灯.蜂鸣器或者显示器上,没有安全隐患, 现在 ...
- 洛谷 P5233 - [JSOI2012]爱之项链(Polya 定理+递推)
洛谷题面传送门 首先很明显题目暗示我们先求出符合条件的戒指数量,再计算出由这些戒指能够构成的项链的个数,因此考虑分别计算它们.首先是计算符合条件的戒指数量,题目中"可以通过旋转重合的戒指视作 ...
- Codeforces 923E - Perpetual Subtraction(微积分+生成函数+推式子+二项式反演+NTT)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 首先考虑最朴素的 \(dp\),设 \(dp_{z,i}\) 表示经 ...
- CF1437G Death DBMS
题面传送门. 题意简述:给出 \(n\) 个字符串 \(s_i\),每个 \(s_i\) 初始权值为 \(0\).\(q\) 次操作:修改 \(s_i\) 的权值:查询给出字符串 \(q\) 能匹配的 ...
- Docker Error response from daemon,Docker 换镜像
Docker换镜像,Docker pull.Docker search 失败出现以下错误 Error response from daemon: Get https://index.docker.i ...
- 【数据处理】python将GO注释结果整理为WEGO文件
通常,比对NR库后为m8格式,通过NR和GO数据库对应关系文件,写代码整理为Gene-->GO文件,如下: 这里是一对一的关系,要转换为WEGO格式文件,即一对多关系,如下: 用python脚本 ...
- 睡眠或者重启windows,无法ssh连接或者pingVMware的虚机
睡眠后无法直接ssh重连VMware主机问题 这个问题我在win8上出现过,win10看了下同事可以正常连,不知道其他有没有问题. 解决方法: 1.关闭vmnet8和vmnet0里面的 npcap 功 ...
- 使用Mybatis出现的问题+配置优化+ResultMap
一.可能出现的问题 1.Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: ...
- echarts饼图样式
1.中间标题字体大小不一致(可分为一个title一个graphic) 2.labelLine与饼图分离(两个饼图,其中一个显示一个隐藏) function setmyChartJsgxzq(arr,d ...
- Linux磁盘分区(二)之挂载卸载常用命令
Linux磁盘分区(二)之挂载卸载常用命令 转自:https://blog.csdn.net/qq_36183935/article/details/81053383 https: ...