NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」

一套题

养花

题解

分块\主席树

这里我用的是主席树

查询分段$1-(k-1)$找最大的,能向右找就向右找

        for(ll nowl=1,nowr=k-1;nowl<=maxx;nowl+=k,nowr+=k,nowr=min(nowr,maxx)){if(ans==mod-1) break;chose(rt[r],rt[l-1],nowl,nowr,1,maxx);}

复杂度分析,调和级数$√n*log(n)$

代码

#include<bits/stdc++.h>
using namespace std;
#define ll int
#define rs(x) tr[x].son[1]
#define ls(x) tr[x].son[0]
#define A 10000000
struct tree{ll son[2],sz;
}tr[A];
ll tot,n,m,ans,maxx,mod;
ll a[500000],rt[500000];
void insert(ll &p,ll v,ll num,ll l,ll r){if(!p) p=++tot;if(l==r) {tr[p].sz=tr[v].sz+1;return ;}ll mid=(l+r)>>1;ll opt=num>mid,L,R;if(opt) L=mid+1,R=r;else L=l,R=mid;tr[p].son[opt^1]=tr[v].son[opt^1];insert(tr[p].son[opt],tr[v].son[opt],num,L,R);tr[p].sz=tr[ls(p)].sz+tr[rs(p)].sz;
}
void find(ll p,ll v,ll l,ll r){if(r%mod<ans) return ;
//    printf("l=%d r=%d\n",l,r);if(l==r){ans=max(ans,l%mod);return ;}ll mid=(l+r)>>1;if(tr[rs(p)].sz-tr[rs(v)].sz) find(rs(p),rs(v),mid+1,r);else if(tr[ls(p)].sz-tr[ls(v)].sz)find(ls(p),ls(v),l,mid);
}
void chose(ll p,ll v,ll ql,ll qr,ll l,ll r){if(tr[p].sz-tr[v].sz==0)return ;if(l>=ql&&r<=qr){find(p,v,l,r);return ;}ll mid=(l+r)>>1;if(mid>=ql) chose(ls(p),ls(v),ql,qr,l,mid);if(mid<qr) chose(rs(p),rs(v),ql,qr,mid+1,r);
}
int main(){scanf("%d%d",&n,&m);for(ll i=1;i<=n;i++){scanf("%d",&a[i]);maxx=max(a[i],maxx);}for(ll i=1;i<=n;i++){insert(rt[i],rt[i-1],a[i],1,maxx);}for(ll i=1,l,r,k;i<=m;i++){scanf("%d%d%d",&l,&r,&k);ans=0;mod=k;for(ll nowl=1,nowr=k-1;nowl<=maxx;nowl+=k,nowr+=k,nowr=min(nowr,maxx)){if(ans==mod-1) break;chose(rt[r],rt[l-1],nowl,nowr,1,maxx);}printf("%d\n",ans);}
}
View Code

折射

题解

$n^2,dp$

$f[i][0/1]$表示向左延伸的光线,向右延伸的光线

按照$x$排序,然后考虑转移

枚举比当前点小的点$j$

若$j.y>i.y$

$f[j][1]+=f[i][0]$

$j.y<i.y$

$f[i][0]+=f[j][1]$

你会发现这样转移会有不和法的

不要容斥,更改枚举顺序从大到小枚举

设最上点$x$,中间点为$y$,下面点为$z$

假设这次$y$贡献要加$1$,$x$加上$f[y]$如果是逆序就没加上当前贡献

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 6100
const ll mod=1e9+7;
ll f[A][2];
ll n,ans;
struct node{ll x,y;friend bool operator < (const node &a,const node &b){return a.x<b.x;}
}poi[A];
int main(){scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld%lld",&poi[i].x,&poi[i].y);}sort(poi+1,poi+n+1);for(ll i=1;i<=n;i++){f[i][0]=f[i][1]=1;for(ll j=i-1;j>=1;j--){if(poi[j].y>poi[i].y)(f[j][1]+=f[i][0])%=mod;else (f[i][0]+=f[j][1])%=mod;}}for(ll i=1;i<=n;i++){(ans+=f[i][0]+f[i][1])%=mod;}ans-=n;printf("%lld\n",ans);
}
View Code

画作(同bzoj2638)

题解

轮流染色

将同色方块缩点建图
枚举每个点为根求bfs树
按深度从深至浅顺序染色
树的深度-(最深叶节点为白色?1:0)为以这个点为中心染色的最少操作次数

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 55
char c[A][A];
ll dis[A*10000],head[A*10000],nxt[A*10000],ver[A*10000],col[A*10000],id[A][A];
ll n,m,tot,ide,mx=0,ans=0x7fffffffff;
deque<ll >q;
void add(ll x,ll y){
//    printf("x=%lld y=%lld\n",x,y);nxt[++tot]=head[x],head[x]=tot,ver[tot]=y;
}
ll ok(ll x,ll y){if(x>=1&&x<=n&&y>=1&&y<=m) return 1;return 0;
}
const ll nowx[5]={0,1,0,0,-1};
const ll nowy[5]={0,0,1,-1,0};
void dfs(ll x,ll y,ll now){
//    printf("x=%lld y=%lld now=%lld c[x][y]-'0'=%lld ide=%lld\n",x,y,now,1ll*(c[x][y]-'0'),ide);if(id[x][y]||c[x][y]-'0'!=now)    return ;id[x][y]=ide;
//    printf("n=%lld m=%lld\n",n,m);for(ll i=1;i<=4;i++){ll xnow=nowx[i]+x,ynow=nowy[i]+y;    
//        printf("x=%lld y=%lld xnow=%lld ynow=%lld\n",x,y,xnow,ynow);if(ok(xnow,ynow))dfs(xnow,ynow,now);}
}
int main(){scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;i++){scanf("%s",c[i]+1);}for(ll i=1;i<=n;i++){for(ll j=1;j<=m;j++){if(!id[i][j]){col[++ide]=c[i][j]-'0';dfs(i,j,c[i][j]-'0');}}}
/*    for(ll i=1;i<=n;i++,puts("")){for(ll j=1;j<=m;j++){printf("%lld",id[i][j]);}}
*/    for(ll i=1;i<=n;i++)for(ll j=1;j<m;j++)if(id[i][j]!=id[i][j+1]) add(id[i][j],id[i][j+1]),add(id[i][j+1],id[i][j]);for(ll i=1;i<n;i++)for(ll j=1;j<=m;j++)if(id[i][j]!=id[i+1][j])add(id[i][j],id[i+1][j]),add(id[i+1][j],id[i][j]);for(ll i=1;i<=ide;i++){for(ll j=1;j<=ide;j++) dis[j]=0x7ffffffff;q.clear();mx=0;q.push_back(i);dis[i]=0;while(!q.empty()){ll x=q.front();q.pop_front();
//            printf("x=%lld col=%lld\n",x,col[i]);if(dis[x]>mx) mx=dis[x];for(ll k=head[x];k;k=nxt[k]){ll y=ver[k];
//                printf("x=%lld y=%lld col=%lld dis[x]=%lld dis[y]=%lld mx=%lld\n",x,y,col[i],dis[x],dis[y],mx);if(dis[y]>dis[x]+1){dis[y]=dis[x]+1;        q.push_back(y);}}}if(col[i]==1&&!(mx&1)) mx++;if(col[i]==0&&(mx&1)) mx++;if(mx<ans) ans=mx;}printf("%lld\n",ans);
}
View Code

蔬菜

裸二维莫队

施工

题解

模拟\dp

这个dp真是神仙

联盟

题解

首先题目要求得就是

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

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

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

相关文章

宏任务和微任务执行顺序_确保任务的执行顺序

宏任务和微任务执行顺序有时有必要对线程池中的任务施加一定的顺序。 JavaSpecialists通讯的第206期提出了一种这样的情况&#xff1a;我们使用NIO从多个连接中读取数据。 我们需要确保来自给定连接的事件按顺序执行&#xff0c;但是不同连接之间的事件可以自由混合。 我想提出…

c语言中aver是什么意思_Linux系统top命令中的io使用率,到底是什么意思?

最近在做连续数据流的缓冲系统&#xff0c;C语言代码实现后&#xff0c;粗略测试了下&#xff0c;功能上应该没有问题。那么&#xff0c;接下来就该测试性能了。输入 top 命令&#xff0c;的确可以看到一系列 cpu 使用率&#xff0c;其中一个值得注意的子项就是 io 使用率了&am…

wireshark捕获选项不能用_wireshark的一些基础用法,欢迎收藏

About WiresharkWireshark是世界上最重要和使用最广泛的网络协议分析器。它让您在微观层次上看到网络上正在发生的事情&#xff0c;并且是许多商业和非营利性企业、政府机构和教育机构事实上(通常也是法律上)的标准。Wireshark的发展得益于全球网络专家的志愿贡献&#xff0c;并…

管理沟通-沟通框架

背景 管理三明治的承托&#xff0c;管理沟通。离开了沟通&#xff0c;所有的工作都将搁浅而无法前进。 常见话题&#xff1a; 向上沟通员工激励团队凝聚力提升向下沟通工作特点 工作职责说明技术开发计算机&#xff0c;编程语言&#xff0c;设计算法&#xff0c;开发功能&#…

NetBeans 9抢先体验

Java 9即将来临&#xff0c;NetBeans 9也即将来临。在本文中&#xff0c;我们将看到NetBeans 9 Early Access为开发人员提供的支持&#xff0c;以帮助他们构建Java 9兼容的应用程序。 Java 9提供了许多&#xff08;大约90种&#xff09; 新功能&#xff0c;包括Modules和JShel…

块裁剪后的矩形边界如何去掉_手持拍摄画面太抖?这节课教你如何快速稳定抖动的画面...

手持相机进行拍摄&#xff0c;画面会有较为明显的抖动&#xff0c;这节课就教大家如何稳定视频画面。素材导入到PR后&#xff0c;为素材添加变形稳定器效果&#xff0c;软件会自动开始分析。当前素材上方会显示在后台分析&#xff0c;这时候我们可以剪辑其他部分&#xff0c;并…

怎么把空字符串去掉_Python知识点字符串转整数需注意

↑↑↑关注后"星标"简说Python人人都可以简单入门Python、爬虫、数据分析简说Python严选 来源&#xff1a;简说Python 作者&#xff1a;老表One old watch, like brief python大家好&#xff0c;我是老表&#xff5e;Python知识点系列&#xff0c;学习了记得点赞、…

android-x86 镜像iso下载_Windows 10(1909)最新12月更新版MSDN官方简体中文原版ISO镜像下载+激huo工ju...

微软已于11月中旬开始大规模推送Windows 10操作系统的最新版本1909。此次更新官方未放出具体更新日志&#xff0c;但没有太多大功能更新&#xff0c;主要还是“修修补补”为主。现在&#xff0c;为大家带来本次官方最新原版ISO镜像下载&#xff0c;具体内部版本号为18363&#…

32查运行内存的map文件_Spark Shuffle调优之调节map端内存缓冲与reduce端内存占比

本文首先介绍Spark中的两个配置参数: spark.shuffle.file.buffer map端内存缓冲 spark.shuffle.memoryFraction reduce端内存占比很多博客会说上面这两个参数是调节Spark shuffle性能的利器&#xff0c;实际上并不是这样的。以实际的生产经验来说&#xff0c;这两个参数没…

odoo self.ensure_one()

源码&#xff1a; def ensure_one(self): """ Verifies that the current recorset holds a single record. Raises an exception otherwise. """ try: # unpack to ensure there is only one value is faster than len when…

模板 字段_劲爆新功能:轻流文字识别(OCR)功能支持自定义识别模板啦

Hi&#xff0c;又和大家见面啦&#xff5e;前段时间我们的文字识别(OCR)功能推出后&#xff0c;由于只支持系统提供的固定识别模板&#xff0c;很多客户跟我们反馈说&#xff1a;希望可以自定义识别模板&#xff01;现应大家的要求&#xff0c;轻流「文字识别(OCR)」的「自定义…

Java 9中的进程处理

一直以来&#xff0c;用Java管理操作系统进程都是一项艰巨的任务。 这样做的原因是可用的工具和API较差。 老实说&#xff0c;这并非没有道理&#xff1a;Java并非出于此目的。 如果要管理OS进程&#xff0c;则可以使用所需的Shell&#xff0c;Perl脚本。 对于面临更复杂任务的…

拼音缩写是啥意思_NMSL?AWSL?这些拼音缩写到底是啥意思?

我绝对没有在骂你们&#xff0c;我只是单纯的举个例子而已。我们在网上冲浪时经常可以看到这些几个字母组成的拼音缩写&#xff0c;对于知道这些梗的人一眼就能GET到&#xff0c;但对于不明白的人来说猜来猜去也猜不出啥意思。所以今天就来给大家科普几个经常出现的拼音缩写&am…

python利用自动识别写模块_序章:资料预处理(python3.6 可用fortran unformatted sequencial data读取模块)...

首先我只是一个接触Python约半年的菜鸟&#xff0c;开这一个专栏的目的主要是记录自己所学&#xff0c;以及实践的一些有用的东西&#xff0c;顺便分享一些自己写的公用代码段以方便具有同样想法的朋友。 既然是序章我就多写一些吧&#xff0c;我本人对人工智能在气象方面的应用…

python蟒蛇代码_011 实例2-Python蟒蛇绘制

一、"Python蟒蛇绘制"问题分析 1.1 Python蟒蛇绘制 用程序绘制一条蟒蛇 貌似很有趣&#xff0c;可以来试试 先学会蟒蛇绘制&#xff0c;再绘朵玫瑰花送给TA 设计蟒蛇的基本形状&#xff1a;问题1: 计算机绘图是什么原理&#xff1f; 一段程序为何能够产生窗体&#x…

bjd luts_BJD娃娃背后的圈层文化:一个“成品娃”拍出22万元天价!

■ 作者 黑马君 | 黑马品牌(ID&#xff1a;heimapinpai)现如今“Z世代”已经成为品牌营销中不可忽略的一个关键词&#xff0c;作为消费升级浪潮的主力军&#xff0c;他们早已成为品牌重点目标人群。与90后、80后不同&#xff0c;Z世代成长于互联网迅猛发展的时代&#xff0c;追…

qtcreator版本_【IDE】ROS开发环境之Qt Creator的安装与配置

可以用于ROS开发的IDE很多(可以参考【工具合辑】ROS工程师都在用什么IDE开发呢&#xff1f;用哪种IDE开发更加高效呢&#xff1f; )&#xff0c;ROS的调试依赖环境变量&#xff0c;与外部程序有通讯&#xff0c;因此要求启动IDE的时候加载ROS环境参数&#xff0c;其他方面并无太…

java线程死锁_Java并发:隐藏线程死锁

java线程死锁大多数Java程序员熟悉Java线程死锁概念。 它本质上涉及2个线程&#xff0c;它们彼此永远等待。 这种情况通常是平面&#xff08;同步&#xff09;或ReentrantLock&#xff08;读或写&#xff09;锁排序问题的结果。 Found one Java-level deadlock:"pool-1-t…

空间滤波_第三章 灰度变换与空间滤波-(六)锐化空间滤波器之非锐化掩蔽

知识使人自由&#xff0c;印刷术使知识自由。按照书中的顺序&#xff0c;我们插入一章非微分模式下的锐化的方法&#xff0c;非锐化掩蔽。这种方法在印刷术和出版界已经用了好多年了&#xff0c;具体的过程&#xff1a;模糊原图像从原图像中减去模糊图像&#xff08;产生的差值…

go语言io reader_【已解决】go语言中如何使用io的MultiWriter

【背景】折腾&#xff1a;期间&#xff0c;需要去搞懂&#xff1a;如果新建和设置MultiWriter。【折腾过程】1.参考&#xff1a;去看看&#xff1a;2.然后去试试代码&#xff1a;var filenameOnly stringfilenameOnly GetCurFilename()fmt.Println("filenameOnly", …