8.1.T1
string
题面什么的
抱歉,被我咕咕咕了
考场思路:
sort大法好
n2log2n过 40% 令人着实兴奋
正解:
线段树+桶
利用只有26个字母的优势
好吧,26个字母,只怪我没想到
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define l(k) (k<<1)
#define r(k) (l(k)|1)
const int maxn=1e5+5;
struct tree{
int l,r,sum;
}t[maxn<<5];
int a[maxn];
int n,m,bj[maxn],b[27];
void upc(int k)
{
if(t[k].l==t[k].r)
return;
t[k].sum=(t[l(k)].sum==t[r(k)].sum?t[l(k)].sum:0);
}
void build(int k,int l,int r)
{
/*cout<<k<<" "<<l<<" "<<r<<endl;*/
t[k].l=l,t[k].r=r;
if(l==r)
{
t[k].sum=a[l];
bj[l]=k;
return;
}
int mid=(l+r)>>1;
build(l(k),l,mid);
build(r(k),mid+1,r);
upc(k);
}
void cl(int k)
{
if(!t[k].sum) return;
if(t[k].l!=t[k].r) t[l(k)].sum=t[r(k)].sum=t[k].sum;
}
void add(int k,int p,int l,int r)
{
if((t[k].l>=l&&t[k].r<=r)||t[k].sum==p)
{
t[k].sum=p;
cl(k);
return;
}
cl(k);
int mid=(t[k].l+t[k].r)>>1;
if(l<=mid) add(l(k),p,l,r);
if(r>mid) add(r(k),p,l,r);
upc(k);
}
void cha(int k,int l,int r)
{
/*cout<<k<<" "<<l<<" "<<r<<endl;*/
cl(k);
if(l>t[k].r||r<t[k].l)
return;
if(l<=t[k].l&&t[k].r<=r&&t[k].sum)
{
b[t[k].sum]+=t[k].r-t[k].l+1;
return;
}
cl(k);
int mid=(t[k].l+t[k].r)>>1;
if(l<=mid) cha(l(k),l,r);
if(r>mid) cha(r(k),l,r);
}
void work(int k,int l,int r)
{
memset(b,0,sizeof(b));
cha(1,l,r);
/*for(int q=1;q<=26;q++)
if(b[q])
cout<<(char)(q+'a'-1)<<" "<<b[q]<<endl;*/
int tmp=l;
if(k)
{
for(int q=1;q<=26;q++)
if(b[q])
add(1,q,tmp,tmp+b[q]-1),tmp+=b[q];
}
else
for(int q=26;q>=1;q--)
if(b[q])
add(1,q,tmp,tmp+b[q]-1),tmp+=b[q];
}
void down(int k)
{
cl(k);
if(t[k].l==t[k].r) return;
down(l(k)),down(r(k));
}
int main()
{
cin>>n>>m;
for(int q=1;q<=n;q++)
{
char ch=getchar();
while(ch<'a'||ch>'z')
ch=getchar();
a[q]=ch-'a'+1;
}
build(1,1,n);
for(int q=1,x,y,z;q<=m;q++)
cin>>x>>y>>z,work(z,x,y);
down(1);
for(int q=1;q<=n;q++)
putchar(t[bj[q]].sum+'a'-1);
puts("");
}
8.1.T1的更多相关文章
- T1加权像(T1 weighted image,T1WI)
T1加权成像(T1-weighted imaging,T1WI)是指这种成像方法重点突出组织纵向弛豫差别,而尽量减少组织其他特性如横向弛豫等对图像的影响. 弛豫:物理用语,从某一个状态恢复到平衡态的过 ...
- 关于2016.12.12——T1的反思:凸包的意义与应用
2016.12.12 T1 给n个圆,保证圆圆相离,求将圆围起来的最小周长.n<=100 就像上图.考场上,我就想用切线的角度来做凸包.以圆心x,y排序,像点凸包一样,不过用两圆之间的下切线角度 ...
- T2 Func<in T1,out T2>(T1 arg)
委托调用方法的4种方式. using System; using System.Collections.Generic; namespace ConsoleApplication1 { delegat ...
- E1、T1链路
北美的24路脉码调制PCM简称T1 速率是1.544Mbit/s 北美使用的T1系统共有24个话路,每个话路采样脉冲用7bit编码,然后再加上1位信令码元,因此一个话路占用8bit. 帧同步码是在24 ...
- Action<T1, T2>委托
封装包含两个参数的方法委托,没有返回值. 语法 public delegate void Action<in T1, in T2>( T1 arg1, T2 arg2 ) 类型参数 in ...
- 有三个线程T1 T2 T3,如何保证他们按顺序执行-转载
T3先执行,在T3的run中,调用t2.join,让t2执行完成后再执行t3 在T2的run中,调用t1.join,让t1执行完成后再让T2执行 public class Test { // 1.现在 ...
- 现在有T1、T2、T3三个线程,怎样保证T2在T1执行完后执行,T3在T2执行完后执行?使用Join
public class TestJoin { public static void main(String[] args) { Thread t1 = new Thread(new T1(), &q ...
- 【测试】在hr用户下自行创建T1和T2表写一条SQL语句,(NL连接)
SQL> select t1.* from t1,t2 where t1.object_id=t2.object_id; rows selected. Execution Plan ------ ...
- MRI中T1和T2的含义与区分[转]
A. MRI名词解释 T1加权像.T2加权像为磁共振检查中报告中常提到的术语,很多非专业人士不明白是什么意思,要想认识何为T1加权像.T2加权像,请先了解几个基本概念: 1.磁共振(maget ...
- noip2015day1 T1 4510 神奇的幻方
4510 神奇的幻方 noip2015day1 T1 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descripti ...
随机推荐
- PB笔记之取项次最大值(即使用.describe(" evaluate('ITM_max',0) ") 获取列的最大值) 的条件
dw_1.describe(" evaluate('ITM_max',0) ") :使用 describe 配合 evaluate 取列的最大最小值(或其它表达式)时,必须在数据 ...
- jdk8新特性--使用lambda表达式的延迟执行特性优化性能
使用lambda表达式的延迟加载特性对代码进行优化:
- 【es6】promise
一.什么是promise?我们用promise解决什么样的问题 promise是异步编程的一种解决方案:从语法上来说,Promise是一个对象,从他可以获取异步操作的信息:从本意上讲,它是承诺,它承诺 ...
- vue函数化组件 functional
需要在组件中把functional 设置为true 一个函数化组件像这样: Vue.component('testcomponent', { functional: true, // 为了弥补缺少的实 ...
- springboot 打包发布(war包)
版本关系: 软件名称 版本号 软件名称 版本号 spring boot 2.x jdk 1.8 tomcat 9.x springboot中的pom.xml文件 打包:右键点击项目,选择如下图: 填写 ...
- Linux如何监控每个进程所消耗流量
查看整个系统的网卡流量使用情况 可以参考下这篇总结比较全面的文章 监控具体的某个进程所消耗的流程 首先,Linux没有自带这样的工具,通过这款第三方开源工具,也是比较好用,如果有其他的办法欢迎留言 # ...
- 支付宝手机网站支付(基于Java实现支付宝手机网站支付)
支付宝支付核心需要的参数是(APPID,PRIVATE_KEY,ALIPAY_PUBLIC_KEY) APPID:创建应用后就有的APPID. PRIVATE_KEY:应用私钥 ALIPAY_PUBL ...
- DNS服务——服务端 和 客户端 配置
参考:Linux下DNS主从服务器搭建详解 前言 电脑经常会出现一些网络小毛病.有的时候,QQ能正常上网,但是网页却打不开.这种时候十有八九是DNS出问题了. QQ在DNS不可用的时候,可以跳过DNS ...
- 阿里P7架构师是如何解决跨域问题的!你有遇到吗?
现在越来越多的项目就算是一个管理后端也偏向于使用前后端分离的部署方式去做,为了顺应时代的潮流,一前后端分离就产生了跨域问题,所以许多同学把跨域和前后端分离项目联系在了一起,其实跨域产生的原因并不是前后 ...
- JavaScript中对数组的排序
将下列对象数组,通过工资属性,由高到低排序 var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, ge ...