参考:http://blog.csdn.net/di4covery/article/details/73065684
我以为是后缀数组+某某数据结构,结果居然是01trie!!题解说“因为是随机的所以大概不会超过40个~”所以40是咋算的啊我一介非酋真的不能估计……
好了正解是这样的,先把询问离线按r排序,然后按照每个r的位置把这个后缀的前40个(我比较非就写了50个)放进trie树里,每扫到trie深度为dep的一个节点时,对这个dep记录一个tg代表最后一次更新到这个点的后缀的开始位置,于是把这个后缀塞进去就能得到一个tg数组,tg[i]记录了最晚的后缀开始位置与当前后缀的LCP是i这个深度,于是就可以更新了。
注意这里的LCP并不是最长,所以要贪心的更新,即i*(tg[i]-max(q[ti].l-1,tg[i+1])),如果i不是最长后缀就留到i+1更新

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const int N=5000005;
int n,m,tg[N],c[N][2],f[N],tot;
long long ans[N];
char s[N];
struct qwe
{int l,r,id;
}q[N];
int read()
{int r=0,f=1;char p=getchar();while(p>'9'||p<'0'){if(p=='-')f=-1;p=getchar();}while(p>='0'&&p<='9'){r=r*10+p-48;p=getchar();}return r*f;
}
bool cmp(const qwe &a,const qwe &b)
{return a.r<b.r;
}
void add(int x)
{int now=0;for(int i=0;i+x<=n&&i+1<=50;i++){int a=s[i+x]-'0';if(!c[now][a])c[now][a]=++tot;tg[i+1]=max(f[c[now][a]],tg[i+1]);f[c[now][a]]=x;now=c[now][a];}
}
int main()
{n=read(),m=read();scanf("%s",s+1);for(int i=1;i<=m;i++)q[i].l=read(),q[i].r=read(),q[i].id=i;sort(q+1,q+1+m,cmp);int ti=1;for(int i=1;i<=n;i++){add(i);while(ti<=m&&q[ti].r==i){for(int i=1;i<=50;i++){if(tg[i]>=q[ti].l)ans[q[ti].id]+=1ll*i*(tg[i]-max(q[ti].l-1,tg[i+1]));elsebreak;}ti++;}}for(int i=1;i<=m;i++)printf("%lld\n",ans[i]);return 0;
}

转载于:https://www.cnblogs.com/lokiii/p/8522707.html

洛谷 P3732 [HAOI2017]供给侧改革【trie树】相关推荐

  1. Luogu3732 [HAOI2017] 供给侧改革 【后缀数组】【线段树】【乱搞】

    题目分析: 这道题我是乱搞的,因为他说$01$串是随机的. 那么我们可以猜测能够让LCP变大的地方很少.求出后缀数组之后可能让LCP变大的地方就等价于从大到小往height里动态加点同时维护这个点左右 ...

  2. [HAOI2017]供给侧改革

    先将询问离线,把询问按照r分类,从小到大回答每一个询问. 由随机的性质得知两个串的lcp不会特别长,我们令其最长为40 对于区间[1,R],[2,R],[3,R]-[R-1,R],求其中最长的LCP一 ...

  3. 供给侧改革与去产能对安防产业啥影响

    2016年,在经济下行压力巨大,GDP预估增长继续下降的大环境下,中央经济工作会议提出了一系列经济改革措施,其中"供给侧改革与去产能"对各产业的影响尤为关键,优化经济发展结构,提高 ...

  4. 大数据可精细化推进“供给侧”改革

    文:张涵诚 需要产业发展推荐引擎系统和中国产业信息平台 需求和供给的相对平衡是国民经济的平稳的决定性因素.要达到这个平衡,国家提出要供给侧改革.看过很多供给侧改革的文章,大部分比较宏观,而笔者认为精细 ...

  5. 德尔汝继勇:地板行业供给侧改革与企业转型升级

    本次大会吸引了海内外地板行业共三百余位嘉宾莅临现场,主要针对时下热门的"供给侧改革"."互联网+"以及"绿色发展"等内容,进行高端互动.作为 ...

  6. 写一篇关于 供给侧改革 的申论

    供给侧改革是指通过改变生产环境和生产方式,提高供给效率和产品质量,从而推动经济增长的改革方向. 近年来,我国经济发展进入新常态,经济增速放缓,经济结构不断优化.在这种情况下,供给侧改革显得尤为重要.供 ...

  7. 从最近热门的700M看广电有线的供给侧改革

    [背景]700M频段,是世界上其他国家上LTE的主要频段,这个频段非常好用,主要是覆盖能力强,穿透力强.2015年底四省广电联合招标"广电有线无线卫星融合网项目",引起电信与广电关 ...

  8. 国内保险业供给侧改革进行时,中国平安如何应对转型压力?

    2022年,国内许多保险公司依旧处于转型阵痛期中.虽然保险行业全年总保费收入4.7万亿元,相较2021年的4.49万亿元,同比增长了4.58%.不过人身险和财产险的分化加剧,让许多以人身险起家的传统保 ...

  9. IOT物联网观察之物联网建设为什么是供给侧改革的重要途径?

    供给侧结构性改革提出来很久了,简单地说就是要重新根据需求来定义供给,因为供给侧要么多了,要么提供的不到位,导致需求方无法有效地消化. 供给侧有劳动力.土地.资本.制度创造.创新等要素.如何达到最优配置 ...

最新文章

  1. SpringBoot mybatis 输出SQL语句到控制台
  2. js小球与边框碰撞反弹_四叉树在碰撞检测中的应用
  3. JACK——PaintRobot Exercise9
  4. 停止宗教战争,好吗?
  5. php 正则表达式 取所有内容,php正则表达式获取内容所有链接
  6. UVa 1629 切蛋糕(记忆化搜索)
  7. origin三元相图_扩增子图表解读7三元图:三组差异数量和关系
  8. JVM优化系列-JVM G1 垃圾收集器
  9. 利用https实现站点的访问
  10. matlab与STK互联(不使用connect软件的互联)
  11. 用python求两个人的平均身高_黄哥Python:分治算法(Divide-and-Conquer)
  12. yii 使用 有赞sdk_有赞 App 动态化配置中心实践
  13. VTK系列12_VTK读取PNG图像并显示
  14. Java Excel 导出为 PDF
  15. 数字孪生典型应用案例
  16. 搭建网站服务器必须开443端口,记录解决网站443端口不通的问题(启动HTTP或者更换域名)...
  17. 数据分析案例1.0——药品销售分析
  18. Uniswap v3 详解(五):Oracle 预言机
  19. android locale app内设置,Android app应用多语言切换功能实现
  20. 开源3D激光SLAM项目BLAM

热门文章

  1. Linux 中安装 Mysql
  2. 多进程event通信
  3. 从Exchange 通往Office 365系列(十二)发布Outlook Anywhere
  4. shutdown TCP ports,blocked all malicious scan
  5. python入门小程序代码_Python入门小程序(二)
  6. adrms移动设备扩展插件_如何在所有移动设备上扩展网站
  7. linux bash技巧_Bash提示技巧和窍门
  8. 开源贡献 计算_学生如何开始为开源软件做贡献
  9. (10)vue.js 指令(2)
  10. (7)JavaScript字面量