洛谷P1878 舞蹈课 贪心 堆
洛谷P1878 舞蹈课
贪心 堆
1 #include <bits/stdc++.h> 2 #define LL long long 3 #define GG int 4 #define For(i, j, k) for(register int i=j; i<=k; i++) 5 #define Dow(i, j, k) for(register int i=j; i>=k; i--) 6 using namespace std; 7 inline GG read() { 8 GG x = 0, f = 1; 9 char ch = getchar(); 10 while(ch<'0'||ch>'9') { if(ch=='-') f = -1; ch = getchar(); } 11 while(ch>='0'&&ch<='9') { x = x*10+ch-48; ch = getchar(); } 12 return x * f; 13 } 14 void write(GG x) { 15 if(x<0) putchar('-'), x = -x; 16 if(x>9) write(x/10); 17 putchar(x%10+48); 18 } 19 inline void writeln(GG x) { write(x); putchar('\n'); } 20 21 const int N = 2e5+11; 22 struct node{ 23 int l, r, del; 24 friend bool operator <(node a, node b) { 25 if(a.del != b.del) return a.del > b.del; 26 return a.l > b.l; 27 } 28 }; 29 priority_queue <node> Q; 30 int n, tot; 31 int val[N], vis[N], L[N], R[N]; 32 char s[N]; 33 34 inline void work() { 35 while(!Q.empty()) { 36 node p = Q.top(); Q.pop(); 37 if(vis[p.l] || vis[p.r]) continue; 38 vis[p.l] = 1; vis[p.r] = 1; 39 L[++tot] = p.l; R[tot] = p.r; 40 41 int l = p.l-1, r = p.r+1; 42 while(l>=1 && vis[l]) --l; 43 while(r<=n && vis[r]) ++r; 44 if(l>=1 && r<=n && s[l]!=s[r]) 45 Q.push((node){l, r, abs(val[l]-val[r]) }); 46 } 47 } 48 49 int main() { 50 n = read(); 51 scanf("%s", s+1); 52 For(i, 1, n) val[i] = read(); 53 For(i, 1, n-1) 54 if(s[i] != s[i+1]) 55 Q.push((node){i, i+1, abs(val[i]-val[i+1])} ); 56 work(); 57 writeln(tot); 58 For(i, 1, tot) { 59 write(L[i]); putchar(' '); writeln(R[i]); 60 } 61 }
转载于:https://www.cnblogs.com/third2333/p/8476276.html
洛谷P1878 舞蹈课 贪心 堆相关推荐
- 洛谷 P1878 舞蹈课 —— 小顶堆
This way 题意: 有 n个人参加一个舞蹈课.每个人的舞蹈技术由整数来决定.在舞蹈课的开始,他们从左到右站成一排.当这一排中至少有一对相邻的异性时,舞蹈技术相差最小的那一对会出列并开始跳舞.如果 ...
- 洛谷 P3378 【模板】堆
2019-05-30 题目 : 洛谷 P3378 [模板]堆 : https://www.luogu.org/problemnew/show/P3378 题目描述 如题,初始小根堆为空,我们需要支持以 ...
- 洛谷P2085ssl1411OJ1370-最小函数值【堆,贪心】
前言 有一个东西卡了我一会 折叠N*或N+ 正整数集 (由全体正整数组成的集合) N*:={1,2,3,-,n,-} 题目 洛谷P2085 OJ1370 给出n个ai,bi,ci.定义一个函数 fi( ...
- 洛谷:P2832 行路难(堆优化Dijkstra(错解)bfs(正解) + 记录路径)
洛谷:P2832 行路难 写这道题确实是行路难- 此题的最短路约束不只是边权,还有边数(每经过一条边,之后经过的边权值都 +1+1+1 ) 从期望的角度分析,我们肯定是想 尽可能走的路程越短,走得路径 ...
- 洛谷 P3378 【模板】堆
嗯... 这是一道堆的模板题,但我个人感觉最好的做法就是通过优先队列来进行操作... 首先我们看一下这道水题.... 题目描述 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示 ...
- 洛谷P1080-国王游戏-贪心+高精度
P1080-国王游戏 啊啊啊,刚才已经写了一次了,但是Edge浏览器不知道为什么卡住了,难受. 好吧,其实是一道可做题,分析得到的贪心策略就是就是将a * b小的放在前面(其他的懒得说了),主要还是要 ...
- 洛谷P3378 【模板】堆
题目描述 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示将x插入到堆中 操作2: 2 输出该小根堆内的最小数 操作3: 3 删除该小根堆内的最小数 输入输出格式 输入格式: ...
- [洛谷]P1413 坚果保龄球 (#贪心 -1.18)
题目描述 PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们. 我们可以认为地图是一个行数为6,列数为60的棋盘.zombie出现的那一秒站在 ...
- 洛谷 P1803题解 java 贪心
题目描述 现在各大 oj 上有 nn 个比赛,每个比赛的开始.结束的时间点是知道的. yyy 认为,参加越多的比赛,noip 就能考的越好(假的). 所以,他想知道他最多能参加几个比赛. 由于 yyy ...
- 洛谷P1650:田忌赛马 ← 贪心算法
[题目来源] https://www.luogu.com.cn/problem/P1650 [题目描述] 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马. ...
最新文章
- python input与返回值-Python基础教程之输入输出和运算符
- Directx11教程(18) D3D11管线(7)
- 随笔② Java中的关键字 --- final关键字
- 第六届中国开源年会(COSCon'21)开心开源精彩收官
- 如何将docker 镜像上传到docker hub仓库
- BDD框架之Cucumber研究
- 【转贴】学习Linux的几点忠告
- ChaiNext:比特币打穿4.2万美元,市场多空胶着
- Python3中一维数组和二维数组的输入
- linux定位异常前后日志信息
- python写出租车计费系统_基于VHDL的出租车计费器
- MIMO如何获得分集增益(2)
- html整体图片拆分拼图代码源代码,canvas拼图功能实现代码示例
- 一日一Shader·进阶版笔刷【SS_18】
- 错误一大堆,为什么机器翻译还有人用?
- java七夕实现爱心
- ADI Blackfin DSP处理器-BF533的开发详解62:DSP控制ADXL345三轴加速度传感器-贪食蛇游戏(含源码)
- iOS---学习研究大牛Git高星项目YYCategories(一)
- uefi模式装gho格式系统失败的原因
- 中国天气网 天气预报API 国家气象局 根据城市名称抓取城市ID,XML格式、JSON格式、图片代码...
热门文章
- java isprime函数_Java8函数式编程入门
- android ui 开发界面量具 尺子,android尺子的自定义view——RulerView详解
- 获取B站某用户更多的关注数和粉丝数
- 【Simscape】用Simscape实现三维物理仿真(二)——创建一个斜坡滚球系统
- arduino 读取模拟电压_【Arduino官方教程】基础示例(六):读取模拟电压
- i9x系列是服务器CPU吗,Intel推出全新酷睿X系列CPU:i9处理器亮相
- Correlation Congruence for Knowledge Distillation
- Knowledge evolution
- 计算机添加启动程序,电脑如何设置开机启动项
- 关于SRE方法论的一些笔记