链接:https://ac.nowcoder.com/acm/contest/11185/C
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld
题目描述
给出一个正整数序列 [a_1\dots a_n][a
1

…a
n

] 以及定值 kk,每次可以选择一个区间 [l,r]\ (r-l+1\ge k)[l,r] (r−l+1≥k),把这个区间内的 a_ia
i

除以二下取整。是否可能通过一些操作,把所有 a_ia
i

变成 11?

若能,求出一种操作次数最少的操作方案。若有多种方案,可以输出任意一种。
输入描述:
本题有多组数据。

第一行是数据组数 TT。(1\le T\le 2000)(1≤T≤2000)

每组数据中:

第一行两个正整数 n,kn,k。(1\le k\le n\le 10^4)(1≤k≤n≤10
4
)

接下来一行 nn 个正整数 a_1\sim a_na
1

∼a
n

。(1\le a_i\le 10^{15})(1≤a
i

≤10
15
)

同一个测试点内,所有数据中 nn 的和不超过 2\times 10^42×10
4

输出描述:
对于每组数据:

若无解,输出 -1

若有解,第一行输出最小操作次数 mm。

接下来 mm 行每行两个正整数 l,rl,r,代表对 [l,r][l,r] 进行一次操作。(1\le l\le r\le n)(1≤l≤r≤n)
示例1
输入
复制
2
5 3
3 3 5 3 3
5 3
3 3 3 5 3
输出
复制
2
1 3
3 5
-1

思路 :

  • 首先将原数组转化一下,问题就转化为将新的数组中每个元素值都变为0
  • 为了使操作次数最少,对于每一个左端点,枚举贪心最优的右端点,选一个尽可能大的 非递减 的区间,然后将它们值都减一,作为一次操作
#include <iostream>
#include <cstring>
using namespace std;typedef long long ll;const int N = 1e4 + 10, M = 1e6 + 10;int a[N];
int ansl[M], ansr[M], cnt;void solve()
{int n, k; cin >> n >> k;
//     memset(a, 0, sizeof a);for (int i = 1; i <= n; i ++ ){ll x; cin >> x;a[i] = 0;while (x > 1) x >>= 1, a[i] ++ ;}int l, r;cnt = 0;for (l = 1; l <= n; ){if (!a[l]) l ++ ;else{for (r = l; r <= n && a[r] >= a[r - 1]; r ++ );if (r - 1 - l + 1 < k){cout << -1 << endl;return ;}for (int i = l; i <= r - 1; i ++ ) a[i] -- ;ansl[ ++ cnt] = l, ansr[cnt] = r - 1;}}cout << cnt << endl;for (int i = 1; i <= cnt; i ++ ) cout << ansl[i] << ' ' << ansr[i] << endl;
}int main()
{ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int _; cin >> _;while (_ -- )solve();
}

Division 贪心,模拟 牛客练习赛95相关推荐

  1. Non-interger Area 分类讨论 奇偶 取模 牛客练习赛95

    链接:https://ac.nowcoder.com/acm/contest/11185/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言10 ...

  2. Duplicate Strings 字符串 取模 牛客练习赛95

    链接:https://ac.nowcoder.com/acm/contest/11185/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52 ...

  3. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

  4. 牛客练习赛29 题解

    牛客练习赛29 A. 可持久化动态图上树状数组维护01背包 题解 这题跟标题没有任何关系- 贪心的使得负数删除的时候下标尽可能大,然后正数的时候下标尽可能小. 观察到每个数下标最大的时候就是它的初始下 ...

  5. 2021牛客练习赛90

    2021牛客练习赛90 B.寒冬信使 C.盾与战锤 B.寒冬信使 题目链接:https://ac.nowcoder.com/acm/contest/11180/B code: #include< ...

  6. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  7. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  8. 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)

    title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...

  9. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

最新文章

  1. cadence原理图软件(orcad)层级原理图与位号
  2. Notepad++ 查找匹配中文
  3. Coursera吴恩达《神经网络与深度学习》课程笔记(3)-- 神经网络基础之Python与向量化
  4. 非常好的一篇关于MYSQL编码问题的文章
  5. recycleviewitem 列表加载动画_2019年Q4动画数据报告 | 伍六七之最强发型师评论数破十万...
  6. linux文件未识别,linux的内核文件vmlinuz介绍-深入理解Linux重定向的使用-网卡eth0,未识别的端口的解决方法_169IT.COM...
  7. mysql proxy 读写分离_mysql-proxy 实现读写分离
  8. #和妹妹一起做毕业设计#从需求到软件发布的流程记录—— 需求、设计篇
  9. Kubeadm installation
  10. linux 文本编辑器Vim/Vi详细介绍
  11. BPSK调制解调的matlab设计和FPGA实现之matlab设计
  12. 如何使用http://paste.ubuntu.com/分享代码
  13. 软件专业面试心理测试题,面试心理测试题目,据说很准
  14. 死亡计算机在线使用,抖音死亡计算器珍惜时间测试入口 抖音珍惜时间死亡计算器在线测试...
  15. 6个Vlookup查找函数用法,总有你想用的!
  16. c语言是汇编语言实现的吗,使用汇编语言实现逻辑表达式
  17. 扫雷游戏(基础版本)
  18. 关于ONVIF协议你不得不知的6个常见问题
  19. CANOpen中SDO和PDO的COB-ID理解
  20. 学计算机选择什么编程语言好一些?

热门文章

  1. 采购Invoice校验_事后借记和事后贷记
  2. SAP 中session和外部断点设置的区别
  3. 导出SAP表结构到EXCEl
  4. java并发排序_Java基于fork/koin类实现并发排序
  5. 为什么mysql与eclipse_为什么这个SQL在MySQL中而不是通过Eclipse执行?
  6. linux数据块的大小不一样,HDFS块大小默认为什么是64MB(或者是128MB)
  7. python函数和方法的入参格式有哪些_Python函数的参数常见分类与用法实例详解
  8. linux透明大页内存,rhel7.2 禁用透明的大页内存--transparent_hugepage(THP)
  9. 安卓okhttp连接mysql_android中okhttp实现断点上传示例
  10. python 结束子线程并保证工作完成_python3中在线程中结束工作进程的方法