codeforces 558E A Simple Task 线段树

题目链接

题意较为简单。

思路:

由于仅仅有26个字母,所以用26棵线段树维护就好了,比較easy。

#include <iostream>
#include <string>
#include <vector>
#include <cstring>
#include <cstdio>
#include <map>
#include <queue>
#include <algorithm>
#include <stack>
#include <cstring>
#include <cmath>
#include <set>
#include <vector>
using namespace std;
template <class T>
inline bool rd(T &ret) {char c; int sgn;if (c = getchar(), c == EOF) return 0;while (c != '-' && (c<'0' || c>'9')) c = getchar();sgn = (c == '-') ? -1 : 1;ret = (c == '-') ? 0 : (c - '0');while (c = getchar(), c >= '0'&&c <= '9') ret = ret * 10 + (c - '0');ret *= sgn;return 1;
}
template <class T>
inline void pt(T x) {if (x <0) {putchar('-');x = -x;}if (x>9) pt(x / 10);putchar(x % 10 + '0');
}
typedef long long ll;
typedef pair<ll, ll> pii;
const int N = 1e5 + 100;
#define lson (id<<1)
#define rson (id<<1|1)
#define L(x) tree[x].l
#define R(x) tree[x].r
#define Hav(x) tree[x].hav
#define Siz(x) tree[x].siz
#define Lazy(x) tree[x].lazy
struct Tree {struct Node {int l, r, siz;//siz表示区间长度int hav;//hav表示这个区间的和 int lazy;//lazy为2表示清空区间 lazy为1表示把区间都变为1}tree[N << 2];void build(int l, int r, int id) {L(id) = l; R(id) = r; Siz(id) = r - l + 1;Hav(id) = Lazy(id) = 0;if (l == r)return;int mid = (l + r) >> 1;build(l, mid, lson); build(mid + 1, r, rson);}void Down(int id) {if (Lazy(id) == 1) {Lazy(id) = 0;Hav(lson) = Siz(lson); Hav(rson) = Siz(rson);Lazy(lson) = Lazy(rson) = 1;}else if (Lazy(id) == 2) {Lazy(id) = 0;Hav(lson) = Hav(rson) = 0;Lazy(lson) = Lazy(rson) = 2;}}void Up(int id) {Hav(id) = Hav(lson) + Hav(rson);}void updata(int l, int r, int val, int id) {if (l == L(id) && R(id) == r) {if (val == 1) Hav(id) = Siz(id);else Hav(id) = 0;Lazy(id) = val;return;}Down(id);int mid = (L(id) + R(id)) >> 1;if (r <= mid)updata(l, r, val, lson);else if (mid < l)updata(l, r, val, rson);else {updata(l, mid, val, lson);updata(mid + 1, r, val, rson);}Up(id);}int query(int l, int r, int id) {if (l == L(id) && R(id) == r) {return Hav(id);}Down(id);int mid = (L(id) + R(id)) >> 1, ans = 0;if (r <= mid)ans = query(l, r, lson);else if (mid < l)ans = query(l, r, rson);else {ans = query(l, mid, lson) + query(mid + 1, r, rson);}Up(id);return ans;}
};
Tree alph[26];
int n, q;
char s[N];
int sum[26];
int main() {rd(n); rd(q);for (int i = 0; i < 26; i++)alph[i].build(1, n, 1);scanf("%s", s + 1);for (int i = 1; i <= n; i++) {alph[s[i] - 'a'].updata(i, i, 1, 1);}while (q--) {int l, r, in;rd(l); rd(r); rd(in);memset(sum, 0, sizeof sum);for (int i = 0; i < 26; i++){sum[i] += alph[i].query(l, r, 1);alph[i].updata(l, r, 2, 1);}int tim = 26, i;if (in)i = 0; else i = 25, in = -1;for (;tim--; i += in) {if (sum[i] == 0)continue;alph[i].updata(l, l + sum[i] - 1, 1, 1);l += sum[i];}}for (int i = 1; i <= n; i++){for (int j = 0; j < 26; j++)if (alph[j].query(i, i, 1)){putchar(j + 'a'); break;}}return 0;
}


转载于:https://www.cnblogs.com/jzssuanfa/p/6938260.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android新建多个java,Java-如何在Android的警报对话框中添加多项选...

我已经在Android应用程序中创建了“同步”菜单.当我们单击“同步”警报时,打开4个复选框的布局.我想要的是让它们起作用,例如,当我单击15分钟,然后自动取消单击其他选项时.Overridepublic boolean onCreateOptionsMenu(Menu menu){MenuInflater inflater getMenuInflater();in…

Spring IOC详解与配置

Spring&#xff1a; 框架&#xff1a; 具有一定功能的半成品软件&#xff0c;基于框架会节省开发成本 框架作用&#xff1a; 提高开发效率、复用性、编写规范、节约维护成本、解耦底层实现原理 Spring&#xff1a; Spring是分层的JavaSE/EE应用full-stack轻量级开源框架Sprin…

android8.0的蓝牙版本,android o 新特性详解 安卓8.0蓝牙音频增强以及更加可爱的表情包...

android 8.0什么时候推出&#xff1f;有哪些新特色&#xff1f;很多安卓用户非常想知道答案吧&#xff01;不用着急&#xff0c;下面是大麦子小编整理出来的安卓8.0新特性详解&#xff0c;希望可以帮到大家。有媒体近日曝光了有关谷歌Pixel XL 2手机会首发Android 8.0系统。现在…

操作系统介绍

操作系统&#xff1a; 操作系统(Operation System, OS)&#xff0c;是管理计算机硬件与软件资源的计算机程序&#xff0c;同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基…

DOM初级篇

DOM是什么、作用、与javascript&#xff1f; DOM是对HTML文档的访问和操作&#xff0c;对文档的增删改查。 DOM相当于是javascript一个类&#xff0c;这个类中提供了多种操作HTML的方法&#xff0c;也可以说DOM是依附在JavaScript上进行操作的。 一、标签的查找命令&#xff1b…

Activiti工作流的简单介绍

1.概念 工作流(Workflow)就是“业务过程的部分或整体在计算机应用环境下的自动化”&#xff0c;它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息 或任务的过程自动进行&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使此目标的实现。” 2.…

vs2019开发android应用,VS 2019开发APP(一)界面和代码

1.界面在Resources>layout>目录下的*.xml文件就是界面文件2.关联界面接下来&#xff0c;通过将支持代码插入到 MainActivity 类中来添加代码以关联用户界面。在 MainActivity 类中找到 OnCreate 方法&#xff0c;在其中添加关联按钮代码如下&#xff1a;protected overri…

关于AM335X移植SDIO WIFI的简易教程(转)

最近应一个朋友邀请&#xff0c;帮他移植了SDIO WIFI到3.2版本内核。因为之前已经成功移植了3.14内核&#xff0c;所以整个过程花了一个下午就完成了。话不多说&#xff0c;先交待一下平台&#xff1a; CPU&#xff1a;TI AM3352 600MOS&#xff1a;ubuntu core 12.04 for armS…

oracle 数据库字段html显示正常text显示不全,layui表格字段表格显示不全(自适应)...

本文将为您描述layui表格字段表格显示不全(自适应),具体操作方法:好记性不如烂笔头。本来就是没什么好记得东西&#xff0c;下次再用时已经想不起来了。问题如下&#x1f41f;使用layui表格&#xff0c;表格字段显示不全&#xff0c;如果超出分配的位置&#xff0c;就会显示省略…

使用 VSCode 编写 .NET Core 项目之初体验

注&#xff1a;本文在根据 微软官方文档指导下&#xff0c;根据自己的学习中整理&#xff0c;并不完全照搬文档&#xff0c;但也大体和文档学习路线相似&#xff0c;主要为记录学习过程。 官方学习地址&#xff1a; https://code.visualstudio.com/docs/other/dotnet https://d…

html载入hta文件,HTA文件去除html控件认证和接收命令行参数

一是利用hta 去掉htm的控件验证hta1的代码如下&#xff1a;sample html application oneactivexcontrol.htm代码如下&#xff1a;dim filesystem creates the filesystemobjectset filesystem createobject("scripting.filesystemobject")这样就可以去掉htm的本地验…

sql 同一字段合并

select a.* from (select id,Detail,partId(select cast(partId as char(36)), from (select * from table) as b where b.ida.id for xml path()) ,code from table a group by id,Detail,code) a 转载于:https://www.cnblogs.com/chang1/p/6952715.html

android个人日记本论文,手机app移动开发论文-个人心情日记本的设计实现 毕设论文.doc...

手机app移动开发论文-个人心情日记本的设计实现 毕设论文毕业设计(论文)题 目 个人心情日记本的设计与实现专 业 计算机网络技术班 级 网络学 号姓 名指导教师2016 年 1 月 14 日个人心情日记本【摘要】据准确数据调查&#xff0c;全球人口已超过65亿&#xff0c;其中&#xff…

html模板安装到织梦,织梦网站安装教程 织梦模板通用安装图文教程

织梦模版怎么安装使用呢 下面就把我的经验分享给大家解压文件上传到服务器指定根目录输入主域名访问“例如&#xff1a;//www.jb51.net/install”步骤1&#xff1a;勾选同意协议&#xff0c;点击继续按钮。步骤2&#xff1a;检查系统环境和文件权限&#xff0c;确定权限正确才能…

html循环查询的数据,SQL查询遍历数据方法一 [ 临时表 + While循环]

以下以SQL Server 2000中的NorthWind数据库中的Customers表为例,用 临时表 While循环 的方法, 对Customers表中的CompanyName列进行遍历create table #temp(id int identity(1,1),customer nvarchar(50))declare customer nvarchar(50)declare n intdeclare rows i…

atitit.Sealink2000国际海运信息管理系统

atitit.Sealink2000国际海运信息管理系统 操作手冊 文件夹 第一章 使用说明 第一节 系统登录 双击桌面的系统运行程序图标。进入选择数据库的对话框&#xff0c;如图1&#xff0d;1所看到的。选择对应的数据库后&#xff0c;点击【OK】button或在所选数据库上双击。进入登录身份…

金乡高考成绩查询2021,金乡一中举行2021届高三年级一模成绩分析暨表彰大会!现场颁奖...

集思广益查缺补漏&#xff0c;全力以赴保驾护航。为增强备考紧迫性&#xff0c;提高备考有效性&#xff0c;激发师生积极性&#xff0c;2021年3月22日晚&#xff0c;山东省金乡一中2021届高三年级一模成绩分析暨表彰大会&#xff0c;在文峰楼二楼报告厅召开&#xff0c;本次会议…

计算机等级考试初级网络工程师,2019年全国计算机等级考试网络工程师四级,需..._网络编辑_帮考网...

网络工程师考试和计算机等级考试是从属关系。1、计算机等级考试分为四个等级&#xff0c;分别是计算机一级、计算机二级、计算机三级、计算机四级。2、网络工程师考试是计算机四级其中的一个考核项目&#xff0c;所以属于计算机四级。区别&#xff1a;网络工程师考试会分为软件…

匿名类

一、匿名类&#xff1a;[ C# 3.0/.NET 3.x 新增特性 ] 1.1 不好意思&#xff0c;我匿了 在开发中&#xff0c;我们有时会像下面的代码一样声明一个匿名类&#xff1a;可以看出&#xff0c;在匿名类的语法中并没有为其命名&#xff0c;而是直接的一个new { }就完事了。从外部看来…

Java中的方法

方法&#xff1a; 概念&#xff1a; 方法&#xff08;method&#xff09;是将具有独立功能的代码块组织成为一个整体&#xff0c;使其具有特殊功能的代码集 注意&#xff1a; 方法必须先创建才可以使用&#xff0c;该过程成为方法定义 方法创建后并不是直接可以运行的&#xf…