题解:这个题是个很有意思的一道题,数的范围是很大的,如果我们用线段树来处理这个题的话,很明显会 t l e tle tle。

我们贪心的想一下,如果这个字符要更改的话,我们贪心的想肯定是改成这个字符能改成的最大的字符。所以我们可以给 m m m个魔法排一下序,然后我们从大到小来给这些字符来进行变化。但是如何维护这个点已经变换过了是一个问题。然后我们可以考虑并查集,这是一个很经典的做法,当这个点变化过后,就把这个点的父亲改成它的下一个节点,这样我们就可以 O ( 1 ) O(1) O(1)来维护这个点是否已经更改过,如果已经更改过,也可以很快速的求出他的下一个没有更改过的点是什么,这样就可以更改这个题目了。

#include<bits/stdc++.h>
#define LL long long
#define pr pair<LL,LL>
#define ios ios::sync_with_stdio(false)
#define CRL(a) memset(a,0,sizeof a)
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
const int N = 1e7 + 5;
int f[N];
string s;
int a[N];
int gett(int x)
{if(x==f[x])return x;elsereturn f[x] = gett(f[x]);
}
struct node
{int l, r, d;
} e[N];
bool cmp(node a,node b)
{return a.d > b.d;
}
int main ()
{ios;int n, m;cin >> n >> m;cin >> s;for (int i = 1; i <= n+1;i++){f[i] = i;a[i] = s[i - 1];}int cnt = 0;for (int i = 1;i<=m;i++){int l, r;char b;cin >> l >> r >> b;e[++cnt] = {l, r, (int)b};}sort(e + 1, e + 1 + m, cmp);//cout << m << endl;for (int i = 1; i <= m;i++){//cout << i << endl;for (int j = e[i].l; j <= e[i].r;j=f[j]){int d = e[i].d;//cout << d << endl;if(a[j]<d){a[j] = d;}f[j] = gett(j + 1);}}int ans = 0;for (int i = 1; i <= n;i++){ans += (int)a[i];// cout << (char)a[i] << " ";}cout << ans;
}

魔法学院(hard version)相关推荐

  1. Go C 编程 第4课 变色魔法(魔法学院的奇幻之旅 Go C编程绘图)

    34.画彩色旗帜 (魔法学院第4课)--2022.12.15 登录 35.画转动的方形 (魔法学院第4课) 登录 36.画wifi信号 (魔法学院第4课) 登录 888.哪个大? (课程6) 难度:1 ...

  2. 小学生C++画图 Go C 编程 第8课 魔法计时器(魔法学院的奇幻之旅 Go C编程绘图)

    Goc编程第一课 Goc编程第一课_哔哩哔哩_bilibili Goc编程第一课扩展加复习 Goc编程第一课扩展加复习_哔哩哔哩_bilibili Goc编程第二课 Goc编程第二课_哔哩哔哩_bil ...

  3. ZZULI - 建勋的魔法学院

    题目链接:http://acm.zzuli.edu.cn/problem.php?id=2506 时间限制: 1 Sec  内存限制: 128 MB 题目描述 2019年建国的魔法学院招了一批学生,下 ...

  4. Go C 编程 第9课 放飞汽球(魔法学院的奇幻之旅 Go C编程绘图)

    Goc编程第八课 Goc编程第八课_哔哩哔哩_bilibili Goc编程第九课 Goc编程第九课_哔哩哔哩_bilibili 59.实心椭圆 (魔法学院第9课) 难度:1 登录 60.双色椭圆 (魔 ...

  5. turn魔法学院高材生梅西同学的困惑及里克尔梅坎比亚索回归

    标题有点长,作为一个阿迷在大败之后的郁闷交流: 比分四比一时,我还认为这是个愚人节新闻,然后过了五-一节,最后是六-一节,玻利维亚胜阿根廷,这实在是一个很科幻的比分.赛后的电视镜头给出一个意味深长的画 ...

  6. i春秋魔法学院领衔三大看点引爆ISC2015

    2015中国互联网安全大会(ISC)将于2015年9月28日至9月30日在北京国家会议中心举办.在历时三天的大会中,将有来自全球的30余家专业安全公司.120位全球顶级安全专家与万余参会听众分享全球信 ...

  7. 来自霍格沃茨魔法学院的录取通知(简单的Python代码)

    第一次发博客,不要喷我啊 import time name = input('请输入你的名字,获取自己的录取通知') print('亲爱的同学:',name) time.sleep(2)print(' ...

  8. 慧通编程第4关 - 魔法学院第6课

    梳子 int main(){p.size(8).c(6);for (int i = 1; i <= 6; i ++) {p.fd(40).rt(90);p.fd(40).rt(90);p.fd( ...

  9. 洛谷or牛客数据结构+算法

    栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...

最新文章

  1. oracle 的float(b)转
  2. 从点亮一个LED开始,Cortex-A9裸机程序设计
  3. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第9章-结论与展望
  4. 自相关矩阵和互相关矩阵的matlab实现
  5. sklearn-标准化标签LabelEncoder
  6. 什么是SAP Commerce Server
  7. python 语句简写_自学Python-语句之列表推导式
  8. 中移4G模块-ML302-OpenCpu开发-CJSON
  9. opencv-api contourArea
  10. 【计算机网络】Internet原理与技术2(因特网的路由协议RIP、OSPF、BGP,网络地址转换NAT,网络协议IPv6)
  11. 性能测试adb常用命令
  12. 配置TURN服务器实现NAT穿透
  13. 《教我兄弟学Android逆向12 编写xpose模块》
  14. 被 onnx.checker.check_model 检查出的常见错误
  15. 金融分析python和r语言比较_金融领域R语言对比python
  16. HBuilderX连接夜神模拟器
  17. GIF动态表情图如何制作
  18. H.264/H.265 视频编码解码器单元产品指南
  19. Skleran-线性模型-普通最小二乘法-LinearRegression
  20. 如何根据pom文件创建自己的本地仓库

热门文章

  1. python爬取天气数据
  2. Linux系统与windows系统的优缺点
  3. 【Linux高效小trick】Linux下杀死僵尸进程,释放GPU内存,让代码全速运行~
  4. QGC地面站二次开发教程一
  5. pb mysql longblob_关于mysql表中longblob字段的问题
  6. 程序员应该懂的经济学概念(一)
  7. 人工神经网络的应用有哪些?并举例说明
  8. 杂记-18年夏之五月
  9. meta视口标签、物理像素与物理像素比、二倍图做法、背景缩放background-size、背景图片2倍图
  10. 784-C语言rand和srand用法详解