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的更多相关文章

  1. T1加权像(T1 weighted image,T1WI)

    T1加权成像(T1-weighted imaging,T1WI)是指这种成像方法重点突出组织纵向弛豫差别,而尽量减少组织其他特性如横向弛豫等对图像的影响. 弛豫:物理用语,从某一个状态恢复到平衡态的过 ...

  2. 关于2016.12.12——T1的反思:凸包的意义与应用

    2016.12.12 T1 给n个圆,保证圆圆相离,求将圆围起来的最小周长.n<=100 就像上图.考场上,我就想用切线的角度来做凸包.以圆心x,y排序,像点凸包一样,不过用两圆之间的下切线角度 ...

  3. T2 Func<in T1,out T2>(T1 arg)

    委托调用方法的4种方式. using System; using System.Collections.Generic; namespace ConsoleApplication1 { delegat ...

  4. E1、T1链路

    北美的24路脉码调制PCM简称T1 速率是1.544Mbit/s 北美使用的T1系统共有24个话路,每个话路采样脉冲用7bit编码,然后再加上1位信令码元,因此一个话路占用8bit. 帧同步码是在24 ...

  5. Action<T1, T2>委托

    封装包含两个参数的方法委托,没有返回值. 语法 public delegate void Action<in T1, in T2>( T1 arg1, T2 arg2 ) 类型参数 in ...

  6. 有三个线程T1 T2 T3,如何保证他们按顺序执行-转载

    T3先执行,在T3的run中,调用t2.join,让t2执行完成后再执行t3 在T2的run中,调用t1.join,让t1执行完成后再让T2执行 public class Test { // 1.现在 ...

  7. 现在有T1、T2、T3三个线程,怎样保证T2在T1执行完后执行,T3在T2执行完后执行?使用Join

    public class TestJoin { public static void main(String[] args) { Thread t1 = new Thread(new T1(), &q ...

  8. 【测试】在hr用户下自行创建T1和T2表写一条SQL语句,(NL连接)

    SQL> select t1.* from t1,t2 where t1.object_id=t2.object_id; rows selected. Execution Plan ------ ...

  9. MRI中T1和T2的含义与区分[转]

    A. MRI名词解释   T1加权像.T2加权像为磁共振检查中报告中常提到的术语,很多非专业人士不明白是什么意思,要想认识何为T1加权像.T2加权像,请先了解几个基本概念:   1.磁共振(maget ...

  10. noip2015day1 T1 4510 神奇的幻方

    4510 神奇的幻方 noip2015day1 T1  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descripti ...

随机推荐

  1. 【HC89S003F4开发板】 3串口调试

    HC89S003F4开发板串口调试 使用资料自带的demo 主程序 /************************************系统初始化************************ ...

  2. Mybatis动态sql及分页、特殊符号

    目的: mybatis动态sql(案例:万能查询) 查询返回结果集的处理 mybatis的分页运用 mybatis的特殊符号 mybatis动态sql(案例:万能查询) 根据id查询 模糊查询 (参数 ...

  3. idea代码提示快捷键设置

    代码提示快捷键设置: keymap--Main Menu--Code--Completion--Basic

  4. X64驱动:内核操作进线程/模块

    注意:下面的所有案例必须使用.C结尾的文件,且必须在链接选项中加入 /INTEGRITYCHECK 选项,否则编译根本无法通过(整合修正,Win10可编译,须在测试模式下进行),内核代码相对固定,如果 ...

  5. sprint boot websocket 服务端+html5 示例测试

    包依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  6. Python之(matplotlib、numpy、pandas)数据分析

    一.Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 它主要用来回事图形,用来展现一些数据,更加直观的展示,让你第一眼就只要数 ...

  7. java第一次笔试+面试总结

    今天是自己第一次java笔试和面试,总体感觉比预期好一点. 笔试题第一面是问答题,主要考查java基础,一共有18题,我有6道题没有写出来.第二面主要是算法题,一共有8道题,我大概写出来4道题,第三面 ...

  8. MonkeyRunner——Mac

    1. MonkeyRunner介绍: Android的SDK中集成了三个可用来进行自动化测试的工具:Monkey.MonkeyRunner和Robotium.这三个测试工具都是基于黑盒测试. Monk ...

  9. stm32 CAN通信 TJA1040

    CAN协议特点 1.多主控制 所有单元都可以发送消息,根据标识符(Identifier简称ID)决定优先级.仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工 ...

  10. Android NDK 学习之接受Java传入的字符串

    本博客主要是在Ubuntu 下开发,且默认你已经安装了Eclipse,Android SDK, Android NDK, CDT插件. 在Eclipse中添加配置NDK,路径如下Eclipse-> ...