洛谷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 舞蹈课 贪心 堆相关推荐

  1. 洛谷 P1878 舞蹈课 —— 小顶堆

    This way 题意: 有 n个人参加一个舞蹈课.每个人的舞蹈技术由整数来决定.在舞蹈课的开始,他们从左到右站成一排.当这一排中至少有一对相邻的异性时,舞蹈技术相差最小的那一对会出列并开始跳舞.如果 ...

  2. 洛谷 P3378 【模板】堆

    2019-05-30 题目 : 洛谷 P3378 [模板]堆 : https://www.luogu.org/problemnew/show/P3378 题目描述 如题,初始小根堆为空,我们需要支持以 ...

  3. 洛谷P2085ssl1411OJ1370-最小函数值【堆,贪心】

    前言 有一个东西卡了我一会 折叠N*或N+ 正整数集 (由全体正整数组成的集合) N*:={1,2,3,-,n,-} 题目 洛谷P2085 OJ1370 给出n个ai,bi,ci.定义一个函数 fi( ...

  4. 洛谷:P2832 行路难(堆优化Dijkstra(错解)bfs(正解) + 记录路径)

    洛谷:P2832 行路难 写这道题确实是行路难- 此题的最短路约束不只是边权,还有边数(每经过一条边,之后经过的边权值都 +1+1+1 ) 从期望的角度分析,我们肯定是想 尽可能走的路程越短,走得路径 ...

  5. 洛谷 P3378 【模板】堆

    嗯... 这是一道堆的模板题,但我个人感觉最好的做法就是通过优先队列来进行操作... 首先我们看一下这道水题.... 题目描述 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示 ...

  6. 洛谷P1080-国王游戏-贪心+高精度

    P1080-国王游戏 啊啊啊,刚才已经写了一次了,但是Edge浏览器不知道为什么卡住了,难受. 好吧,其实是一道可做题,分析得到的贪心策略就是就是将a * b小的放在前面(其他的懒得说了),主要还是要 ...

  7. 洛谷P3378 【模板】堆

    题目描述 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示将x插入到堆中 操作2: 2 输出该小根堆内的最小数 操作3: 3 删除该小根堆内的最小数 输入输出格式 输入格式: ...

  8. [洛谷]P1413 坚果保龄球 (#贪心 -1.18)

    题目描述 PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们. 我们可以认为地图是一个行数为6,列数为60的棋盘.zombie出现的那一秒站在 ...

  9. 洛谷 P1803题解 java 贪心

    题目描述 现在各大 oj 上有 nn 个比赛,每个比赛的开始.结束的时间点是知道的. yyy 认为,参加越多的比赛,noip 就能考的越好(假的). 所以,他想知道他最多能参加几个比赛. 由于 yyy ...

  10. 洛谷P1650:田忌赛马 ← 贪心算法

    [题目来源] https://www.luogu.com.cn/problem/P1650 [题目描述] 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马. ...

最新文章

  1. python input与返回值-Python基础教程之输入输出和运算符
  2. Directx11教程(18) D3D11管线(7)
  3. 随笔② Java中的关键字 --- final关键字
  4. 第六届中国开源年会(COSCon'21)开心开源精彩收官
  5. 如何将docker 镜像上传到docker hub仓库
  6. BDD框架之Cucumber研究
  7. 【转贴】学习Linux的几点忠告
  8. ChaiNext:比特币打穿4.2万美元,市场多空胶着
  9. Python3中一维数组和二维数组的输入
  10. linux定位异常前后日志信息
  11. python写出租车计费系统_基于VHDL的出租车计费器
  12. MIMO如何获得分集增益(2)
  13. html整体图片拆分拼图代码源代码,canvas拼图功能实现代码示例
  14. 一日一Shader·进阶版笔刷【SS_18】
  15. 错误一大堆,为什么机器翻译还有人用?
  16. java七夕实现爱心
  17. ADI Blackfin DSP处理器-BF533的开发详解62:DSP控制ADXL345三轴加速度传感器-贪食蛇游戏(含源码)
  18. iOS---学习研究大牛Git高星项目YYCategories(一)
  19. uefi模式装gho格式系统失败的原因
  20. 中国天气网 天气预报API 国家气象局 根据城市名称抓取城市ID,XML格式、JSON格式、图片代码...

热门文章

  1. java isprime函数_Java8函数式编程入门
  2. android ui 开发界面量具 尺子,android尺子的自定义view——RulerView详解
  3. 获取B站某用户更多的关注数和粉丝数
  4. 【Simscape】用Simscape实现三维物理仿真(二)——创建一个斜坡滚球系统
  5. arduino 读取模拟电压_【Arduino官方教程】基础示例(六):读取模拟电压
  6. i9x系列是服务器CPU吗,Intel推出全新酷睿X系列CPU:i9处理器亮相
  7. Correlation Congruence for Knowledge Distillation
  8. Knowledge evolution
  9. 计算机添加启动程序,电脑如何设置开机启动项
  10. 关于SRE方法论的一些笔记