魔法学院(hard version)
题解:这个题是个很有意思的一道题,数的范围是很大的,如果我们用线段树来处理这个题的话,很明显会 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)相关推荐
- Go C 编程 第4课 变色魔法(魔法学院的奇幻之旅 Go C编程绘图)
34.画彩色旗帜 (魔法学院第4课)--2022.12.15 登录 35.画转动的方形 (魔法学院第4课) 登录 36.画wifi信号 (魔法学院第4课) 登录 888.哪个大? (课程6) 难度:1 ...
- 小学生C++画图 Go C 编程 第8课 魔法计时器(魔法学院的奇幻之旅 Go C编程绘图)
Goc编程第一课 Goc编程第一课_哔哩哔哩_bilibili Goc编程第一课扩展加复习 Goc编程第一课扩展加复习_哔哩哔哩_bilibili Goc编程第二课 Goc编程第二课_哔哩哔哩_bil ...
- ZZULI - 建勋的魔法学院
题目链接:http://acm.zzuli.edu.cn/problem.php?id=2506 时间限制: 1 Sec 内存限制: 128 MB 题目描述 2019年建国的魔法学院招了一批学生,下 ...
- Go C 编程 第9课 放飞汽球(魔法学院的奇幻之旅 Go C编程绘图)
Goc编程第八课 Goc编程第八课_哔哩哔哩_bilibili Goc编程第九课 Goc编程第九课_哔哩哔哩_bilibili 59.实心椭圆 (魔法学院第9课) 难度:1 登录 60.双色椭圆 (魔 ...
- turn魔法学院高材生梅西同学的困惑及里克尔梅坎比亚索回归
标题有点长,作为一个阿迷在大败之后的郁闷交流: 比分四比一时,我还认为这是个愚人节新闻,然后过了五-一节,最后是六-一节,玻利维亚胜阿根廷,这实在是一个很科幻的比分.赛后的电视镜头给出一个意味深长的画 ...
- i春秋魔法学院领衔三大看点引爆ISC2015
2015中国互联网安全大会(ISC)将于2015年9月28日至9月30日在北京国家会议中心举办.在历时三天的大会中,将有来自全球的30余家专业安全公司.120位全球顶级安全专家与万余参会听众分享全球信 ...
- 来自霍格沃茨魔法学院的录取通知(简单的Python代码)
第一次发博客,不要喷我啊 import time name = input('请输入你的名字,获取自己的录取通知') print('亲爱的同学:',name) time.sleep(2)print(' ...
- 慧通编程第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( ...
- 洛谷or牛客数据结构+算法
栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...
最新文章
- oracle 的float(b)转
- 从点亮一个LED开始,Cortex-A9裸机程序设计
- 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第9章-结论与展望
- 自相关矩阵和互相关矩阵的matlab实现
- sklearn-标准化标签LabelEncoder
- 什么是SAP Commerce Server
- python 语句简写_自学Python-语句之列表推导式
- 中移4G模块-ML302-OpenCpu开发-CJSON
- opencv-api contourArea
- 【计算机网络】Internet原理与技术2(因特网的路由协议RIP、OSPF、BGP,网络地址转换NAT,网络协议IPv6)
- 性能测试adb常用命令
- 配置TURN服务器实现NAT穿透
- 《教我兄弟学Android逆向12 编写xpose模块》
- 被 onnx.checker.check_model 检查出的常见错误
- 金融分析python和r语言比较_金融领域R语言对比python
- HBuilderX连接夜神模拟器
- GIF动态表情图如何制作
- H.264/H.265 视频编码解码器单元产品指南
- Skleran-线性模型-普通最小二乘法-LinearRegression
- 如何根据pom文件创建自己的本地仓库