NOIP模拟测试11「string·matrix·big」

 

打的big出了点小问题,maxx初值我设的0然后少了10分

第二题暴力打炸

第一题剪了一些没用的枝依然40分

总分70

这是一次失败的考试

string

想到和序列那个题很像,但我没做序列,考场回忆学长讲课,打不出来。最后我口胡了一个CDQ分治,大概能减很多枝比如之前5 6 修改,之后4 6修改,那么其实你5 6不用改。

秉承这个思路,我随意打了一个分治,然后依然40分。

题解

我们可以维护每一段区间字母个数,维护一个桶,每次询问先把桶求出来,按照顺序排序时我们可以顺序枚举26个字母,进行区间修改,然后按照逆序反过来枚举就好了。这样把修改操作转化为若干个区间修改。但单单这么做我们会T,维护起来也不好维护,各种懒标记很恶心,我们还需要别的特殊姿势,

    if(tr[p].a) tr[p<<1].a=tr[p].a,tr[p<<1|1].a=tr[p].a;

这样做我们修改和询问就不用递归到儿子节点了,而且这样我们还节省了维护懒标记时间

那么我们思考如何维护

修改时

    if(tr[p].l>=l&&tr[p].r<=r||tr[p].a==x){tr[p].a=x;return ;}

若区间不完全覆盖

    if(tr[p].a) tr[p<<1].a=tr[p].a,tr[p<<1|1].a=tr[p].a,tr[p].a=0;

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 1010101
struct tree{ll x,f,a,l,r;
}tr[A];
char s[A];
ll w[A];
ll n,m;
map<ll,char>mp;
void built(ll p,ll l,ll r){tr[p].l=l,tr[p].r=r;if(l==r){
//        printf("l=%lld s=%lld\n",l,s[l]-'a'+1ll);tr[p].a=s[l]-'a'+1;return ;}ll mid=(l+r)>>1;built(p<<1,l,mid);built(p<<1|1,mid+1,r);if(tr[p<<1].a==tr[p<<1|1].a)tr[p].a=tr[p<<1].a;
}
void getsum(ll p,ll l,ll r){
//    printf("l=%lld r=%lld l=%lld r=%lld tr[p].a=%lld\n",tr[p].l,tr[p].r,l,r,tr[p].a);if(tr[p].l>=l&&tr[p].r<=r&&tr[p].a){w[tr[p].a]+=(tr[p].r-tr[p].l+1);return ;}ll mid=(tr[p].l+tr[p].r)>>1;if(tr[p].a) tr[p<<1].a=tr[p].a,tr[p<<1|1].a=tr[p].a;if(mid>=l)getsum(p<<1,l,r);if(mid<r)getsum(p<<1|1,l,r);
}
void change(ll p,ll l,ll r,ll x){
//    printf("l=%lld r=%lld ***\n",l,r);if(tr[p].l>=l&&tr[p].r<=r||tr[p].a==x){tr[p].a=x;return ;}ll mid=(tr[p].l+tr[p].r)>>1;
//    printf("tr[%lld]=%lld\n",p,tr[p].a);    if(tr[p].a) tr[p<<1].a=tr[p].a,tr[p<<1|1].a=tr[p].a,tr[p].a=0;if(mid>=l) change(p<<1,l,r,x);if(mid<r) change(p<<1|1,l,r,x);
}
void out(ll p){
//    printf("p=%lld tr[p].a=%lld mp=%c\n",p,tr[p].a,mp[tr[p].a]);if(tr[p].a){for(ll i=1;i<=tr[p].r-tr[p].l+1;i++)printf("%c",(char)mp[tr[p].a]);return ;}out(p<<1);out(p<<1|1);
}
void pre(){for(ll i=1;i<=26;i++)mp[i]='a'+i-1;return ;
}
int main(){pre();scanf("%lld%lld",&n,&m);scanf("%s",s+1);built(1,1,n);for(ll i=1,a,b,c,t;i<=m;i++){scanf("%lld%lld%lld",&a,&b,&c);    getsum(1,a,b);ll l=a;if(c){for(ll t=1;t<=26;t++)if(w[t])change(1,l,l+w[t]-1,t),l=l+w[t],w[t]=0;}else {for(ll t=26;t>=1;t--)if(w[t])change(1,l,l+w[t]-1,t),l=l+w[t],w[t]=0;}}out(1);puts("");
}

big

题解

$40\%$

按照题目说的做,直接枚举

$100\%$

我们建一棵tire树,

代码

#include<bits/stdc++.h>
#define ll long long
#define A 6000000
using namespace std;
ll tire[A][2],t[A],sum[A],dl[A],a[A];
ll tot=1,n,m,maxx=0,ans=0;
bool pan;
ll change(ll x){return (2*x/(1<<n)+2*x)%(1<<n);
}
bool cmp(ll x,ll y){return x>y;
}
inline void insert(ll x)
{ll p=1;for(ll i=1;i<=n;i++){ll zan=(x>>(n-i))&1;
//        printf("zan=%lld tot=%lld\n",zan,tot);if(!tire[p][zan]) tire[p][zan]=++tot;p=tire[p][zan];}
}
inline ll dfs(ll x,ll zhi,ll deep)
{if(deep<0){dl[++dl[0]]=zhi;}
//    printf("trie[0][1]=[%lld][%lld] deep=%lld zhi=%lld 1<<=%lld\n",tire[x][0],tire[x][1],deep,zhi,1ll<<deep);if(tire[x][0]&&!tire[x][1])dfs(tire[x][0],zhi^(1ll<<deep),deep-1);if(!tire[x][0]&&tire[x][1])dfs(tire[x][1],zhi^(1ll<<deep),deep-1);if(tire[x][0]&&tire[x][1]){dfs(tire[x][0],zhi,deep-1);dfs(tire[x][1],zhi,deep-1);}
}
int main()
{scanf("%lld%lld",&n,&m);for(ll i=1;i<=m;i++)scanf("%lld",&a[i]);for(ll i=m;i>=1;i--)sum[i]=sum[i+1]^a[i];for(ll i=0,now=0;i<=m;i++){
//        printf("now=%lld  add=%lld\n",now,now^sum[i+1]);now=now^change(a[i]);insert(now^sum[i+1]);}
//    printf("1 %lld 0%lld\n",tire[1][1],tire[1][0]);dfs(1,0,n-1);sort(dl+1,dl+dl[0]+1,cmp);for(ll i=1;i<=dl[0];i++)if(dl[i]==dl[1]) ans++;printf("%lld\n%lld\n",dl[1],ans);
}

 

转载于:https://www.cnblogs.com/znsbc-13/p/11286426.html

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

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

相关文章

监控摄像头服务器维护要多久,监控摄像机怎么维护和保养?

原标题&#xff1a;监控摄像机怎么维护和保养?在安防监控系统中&#xff0c;起决定作用的是显示器、摄像机和储存设备。那么&#xff0c;问题来了&#xff0c;监控摄像机怎么维护和保养呢?摄像机属于精密家电&#xff0c;使用上也应更加注意。1、注意防潮&#xff1a;潮湿是摄…

Promise 学习心得

当了这么久码农到今天没事才开始去深究 Promise 这个对象 什么是 Promise&#xff0c; Promise 有什么用&#xff1f;在写代码的时候多多少少都有遇见过地狱式的回调 代码看起来没问题就是有点乱&#xff0c;Promise 这个东西就是为了解决回调嵌套而生的 Promise 是异步编程的一…

小米羊城通余额不足服务器维护,再不怕羊城通余额不够了!地铁站现自助补票“神器”...

再不怕羊城通余额不够了&#xff01;地铁站现自助补票“神器”金羊网 作者&#xff1a;陈泽云 2018-04-16金羊网讯 记者陈泽云报道你有没遇到过这样情况&#xff0c;准备出地铁站时&#xff0c;却发现羊城通余额不足刷不出闸、或者闸机读取不到你的进站信息&#xff0c;只能去…

flex 组建重写

flex历经几个版本的变化&#xff0c;其封装性也越来越规范。 今日flex的学习&#xff0c;总结是组件的重写。 项目中为使组件的针对性&#xff0c;易用性更强 &#xff0c;免不了要重写组件。 要改变你的对手你的了解你的对手。 一个组件从被new到渲染出来主要经历几个重要事件…

glassfish发布应用_GlassFish 4升级的构建,Gradle和嵌入式应用服务器

glassfish发布应用最近&#xff0c;大概在去年年底&#xff0c; GlassFish开源团队发布了GlassFish 4.0 beta 72作为升级版 。 阿伦古普塔&#xff08;Arun Gupta&#xff09;在他的博客上发布了有关GlassFish 4 .0 beta 72的Maven坐标的文章。 该版本意义重大&#xff0c;因为…

Zend Framework 多模块配置 (二)

&#xfeff;续 Zend Framework 多模块配置 &#xff08;一&#xff09; 4&#xff09;启动bootstrap文件&#xff1a; 全局bootstrap文件 &#xff08;repos/application/botstrap.php&#xff09; class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {/***加载一…

固定速率与固定延迟– RxJava常见问题解答

如果您使用的是纯Java&#xff0c;从版本5开始&#xff0c;我们有一个方便的调度程序类&#xff0c;该类允许以固定速率或固定延迟运行任务&#xff1a; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService;ScheduledExecutorServ…

cpta 好像有漏洞

https://kwt.cpta.com.cn/转载于:https://www.cnblogs.com/heikeboys/p/7173543.html

通过Spring Boot使用MySQL JDBC驱动程序

在本文中&#xff0c;我将向您展示如何将MySQL数据库与Spring Boot应用程序连接。 本文使用的工具包括&#xff1a; Spring Boot 1.5.6版本 MySQL 5.7.X 马文 Java 8 Spring Data JPA 1 –项目结构 项目结构是典型的Maven结构。 2 –项目依赖性 请注意&#xff0c;父母…

如何开启O2优化

O2环境会使你的程序跑的特别快,然而大多数正式考试都不能开O2 然而平时做有些题强制开O2,会出现在本机运行正确,但是交上去RE的情况,这时你就要开O2了. 例如在本机运行时会有下标为-但可以运行,而O2你就会RE 那么如何开呢 类似这样 #include<bits/stdc.h> using namespac…

数颜色

此数颜色非彼数颜色, 彼者带修莫队,主席树,树套树,分块,权值线段树皆可A之 而此者带修莫队,树套树,分块皆不可A之 此者异常之简单也,而数据异常之傻逼也,卡我分块者也,卡我权值线段树者也 从11.00即开始卡常,然而不让我过 对于分块 使用register inline fread 展开 不写函数 二…

jax-ws cxf_走向REST:将Tomcat嵌入Spring和JAX-RS(Apache CXF)

jax-ws cxf这篇文章是上一篇文章的逻辑延续。 唯一的区别是我们将使用的容器&#xff1a;它将是我们的老兄Apache Tomcat而不是Jetty 。 令人惊讶的是&#xff0c;嵌入最新的Apache Tomcat 7非常容易&#xff0c;因此现在让我展示一下。 我不会重复完整的上一篇文章 &#xff0…

深入理解C指针第一章小结1

1.1 指针和内存&#xff0c;C程序在编译后&#xff0c;会以三种形式使用内存。 (1) 静态/全局内存&#xff1a;在程序开始时分配&#xff0c;程序结束才消失&#xff0c;所有函数都能访问全局变量&#xff0c;static静态变量的作用域局限在定义它们的函数内部 (2)自动内存&…

WSO2注册表安装简介

这篇文章基于有关注册表安装及其工作方式等常见问题。以下是人们提出的主要问题&#xff1a; 1&#xff09;。 安装如何工作&#xff1f; 2&#xff09;。 Config Registry和Governance Registry有什么区别&#xff1f; 3&#xff09;。 可以将H2以外的数据库用于本地注册表…

[Swift]LeetCode1147. 段式回文 | Longest Chunked Palindrome Decomposition

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

运用PyTorch动手搭建一个共享单车预测器

本文摘自 《深度学习原理与PyTorch实战》 我们将从预测某地的共享单车数量这个实际问题出发&#xff0c;带领读者走进神经网络的殿堂&#xff0c;运用PyTorch动手搭建一个共享单车预测器&#xff0c;在实战过程中掌握神经元、神经网络、激活函数、机器学习等基本概念&#xff0…

jax-rs jax-ws_通过JAX-WS Provider在Web服务中利用MOXy

jax-rs jax-ws在以前的文章中&#xff0c;我演示了如何将EclipseLink JAXB&#xff08;MOXy&#xff09;直接集成到WebLogic&#xff08;从12.1.1开始&#xff09;和GlassFish&#xff08;从3.1.2开始&#xff09;的JAX-WS实现中 。 在本文中&#xff0c;我将演示如何通过使用J…

3个经常被忽略的APM关键功能

APM核心功能已不再足够。 市场领先的应用超越了以往&#xff0c;设置了其他人必须匹配的新标准。 每当任何针对消费者或企业的Web应用程序达到新的性能峰值时&#xff0c;都会为用户期望值设定基准。 这可能不公平或不合理&#xff0c;但这就是市场运作的方式。 当某人出于个…

NOIP模拟测试13「矩阵游戏·跳房子·优美序列」

矩阵游戏 考试时思路一度和正解一样&#xff0c;考试到最后还是打了80分思路&#xff0c;结果80分打炸了只得了40分暴力分 题解 算出来第一列的总值&#xff0c;每次通过加每两列之间的差值得出下一列的总值 算第一列我们只需要让当前点*行增倍的数量就行了 for(ll i1;i<n;i…

一次测试

$\leq$ $\in[x,y]$ 转载于:https://www.cnblogs.com/znsbc-13/p/11304153.html