MX 2025--炼石计划 NOIP 模拟赛 #20

news/2024/11/14 19:00:50/文章来源:https://www.cnblogs.com/hzoi-Cu/p/18546582

打得抽象。T3,T4放俩难的板子。由于是MX的题,就不放题意了。

邻间的骰子之舞

发现复制操作不会超过\(64\)次,而粘贴操作肯定是越均匀越好,直接二分暴力跑就行了。

点此查看代码
#include<bits/stdc++.h>
using namespace std;
#define rep(i,s,t,p) for(int i = s;i <= t; i += p)
#define drep(i,s,t,p) for(int i = s;i >= t; i -= p)
#ifdef LOCALFILE *InFile = freopen("in.in","r",stdin),*OutFile = freopen("out.out","w",stdout);
#else// FILE *InFile = stdin,*OutFile = stdout;FILE *InFile = freopen("dice.in","r",stdin),*OutFile = freopen("dice.out","w",stdout);
#endif
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
#define int ull
int n,x,y,mx;
inline bool check(int mid){rep(i,0,mx,1){if(i*x >= mid) break;if(!i){if((mid - i*x)/y + 1 > n) return true;continue;}int j = (mid - i * x) / y,val = 1,aver = j / (i + 1),last = j-aver*(i + 1);rep(k,0,i,1){if (last > 0) val += (aver + 1)*val,last --;else val += aver * val;if (val > n) return true; }}return false;
}
inline void solve(){cin>>n>>x>>y;mx = log2(n);int l = 1,r = 1e19,ans = 0;while(l <= r){int mid = (l + r) >> 1;if(check(mid)) ans = mid,r = mid - 1;else l = mid + 1;}cout<<ans+x<<'\n';
}
signed main(){cin.tie(nullptr)->sync_with_stdio(false);solve();
}

星海浮沉录

\(set\)维护每个数出现的位置,用\(multiset\)维护每个数可以贡献的长度,用线段树维护区间最大值,线段树上二分即可。\(set\)插入哨兵节点会更方便一点。

点此查看代码
#include<bits/stdc++.h>
using namespace std;
#define rep(i,s,t,p) for(int i = s;i <= t; i += p)
#define drep(i,s,t,p) for(int i = s;i >= t; i -= p)
#ifdef LOCALFILE *InFile = freopen("in.in","r",stdin),*OutFile = freopen("out.out","w",stdout);
#else// FILE *InFile = stdin,*OutFile = stdout;FILE *InFile = freopen("star.in","r",stdin),*OutFile = freopen("star.out","w",stdout);
#endif
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
const int N = 5e5 + 10;
int n,q,a[N];
set<int> pos[N];
multiset<int> mx[N];
#define ins insert
struct Segment_Tree{struct segment_tree{int l,r,val;#define l(x) tree[x].l#define r(x) tree[x].r#define val(x) tree[x].val}tree[N<<2];inline void pushup(int k){val(k) = max(val(k<<1),val(k<<1|1));}void build(int k,int l,int r){l(k) = l,r(k) = r;if(l == r) return val(k) = *mx[l].rbegin(),void();int mid = (l + r) >> 1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);pushup(k);}void upd(int k,int pos,int val){if(l(k) == r(k)) return val(k) = val,void();int mid = (l(k) + r(k)) >> 1;if(pos <= mid) upd(k<<1,pos,val);else upd(k<<1|1,pos,val);pushup(k);}int qry(int k,int x){if(l(k) == r(k)) return l(k);int ls = k<<1;if(val(ls) >= x) return qry(k<<1,x);else return qry(k<<1|1,x);}
}T;
inline void solve(){cin>>n>>q;rep(i,1,n,1) cin>>a[i];rep(i,0,n+1,1) pos[i].ins(0);rep(i,1,n,1){auto it = pos[a[i]].ins(i).first;it--;mx[a[i]].ins(i - *it - 1);}rep(i,0,n+1,1){auto it = pos[i].ins(n+1).first;it--;mx[i].ins(n - *it);}T.build(1,0,n+1);auto del = [&](int val,int s){auto it = pos[val].lower_bound(s);int p1,p2;it--;mx[val].erase(mx[val].lower_bound(s-*it-1));p1 = *it;it++;it++;mx[val].erase(mx[val].lower_bound(*it-s-1));p2 = *it;mx[val].insert(p2-p1-1);pos[val].erase(s);};auto add = [&](int val,int s){auto it = pos[val].upper_bound(s);int p1,p2;p2 = *it;it--;p1 = *it;mx[val].erase(mx[val].lower_bound(p2-p1-1));mx[val].insert(p2-s-1);mx[val].insert(s-p1-1);pos[val].ins(s);};auto change = [&](int val,int s,int t){del(val,s);add(val,t);T.upd(1,val,*mx[val].rbegin());};rep(test,1,q,1){int op,x;cin>>op>>x;if(op == 1){if(a[x] == a[x+1]) continue;change(a[x],x,x+1);change(a[x+1],x+1,x);swap(a[x],a[x+1]);}else cout<<T.qry(1,x)<<'\n';}
}
signed main(){cin.tie(nullptr)->sync_with_stdio(false);solve();
}

勾指起誓

如题目名,勾誓。FMT板子,不会。

第八交响曲

双调排序板子,不会的自行bdfs吧。

点此查看代码
#include<bits/stdc++.h>
using namespace std;
#define rep(i,s,t,p) for(int i = s;i <= t; i += p)
#define drep(i,s,t,p) for(int i = s;i >= t; i -= p)
#ifdef LOCALFILE *InFile = freopen("in.in","r",stdin),*OutFile = freopen("out.out","w",stdout);
#else// FILE *InFile = stdin,*OutFile = stdout;FILE *InFile = freopen("symphony.in","r",stdin),*OutFile = freopen("symphony.out","w",stdout);
#endif
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
int n,lgn;
inline void solve(){cin>>n;lgn = 1<<__lg(n-1)+1;auto print = [](int a,int b){if(b <= n) cout<<"CMPSWP R"<<a<<" R"<<b<<' ';};cout<<__lg(lgn)*(__lg(lgn)+1)/2<<'\n';rep(i,1,lgn-1,i){rep(j,1,lgn,i*2) rep(k,0,i-1,1) print(j+k,j+i*2-1-k);cout<<'\n';for(int j = i/2;j >= 1;j /= 2){rep(k,1,lgn,j*2) rep(p,0,j-1,1) print(k+p,k+j+p);cout<<'\n';}}
}
signed main(){cin.tie(nullptr)->sync_with_stdio(false);solve();
}
p

image

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

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

相关文章

EBS:物料搬运单查看人限制(创建人栏位)

EBS:物料搬运单查看人限制(创建人栏位)Applies to:Oracle Inventory Management - Version: 11.5.9 to 12.0.0 - Release: 11.5 to 12.2Information in this document applies to any platform.FORM:INVTOMAI.FMB - Response CenterSymptomsIn the Move Orders form (INVTOMA…

实景三维赋能智慧公安建设

在新型智慧城市建设的大潮中,智慧公安作为关键一环,对于提高城市安全和治理效率具有重要意义。实景三维技术以其独特的优势,为智慧公安建设提供了强有力的支撑。本文将探讨实景三维技术如何赋能智慧公安建设。一、智慧公安建设的重要性智慧公安是利用现代信息技术,实现对城…

OpenAI模型whisper 音频转文本

最近有一个音频转文本的需求,了解到了OpenAI的whisper模型可以实现。 Whisper 是 OpenAI 提供的一个通用语音识别模型,支持多语言的音频转文本功能,并具有较高的准确性。它的主要用途包括自动语音识别 (ASR)、语言翻译(将音频直接翻译成英文文本)等。Whisper 支持将长时间…

想定制RK3562主板Android系统的开机动画和桌面壁纸吗?看这篇文章就够了

本文介绍瑞芯微RK3562开发板在安卓Android13系统替换开机动画和桌面壁纸的方法,使用触觉智能EVB3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1T算力 NPU,可用于轻量级人工智能应用。 开机动画替换 将做好的开机动画文件bootanimation.zip包拷贝至 vendor/roc…

mysql可视化工具 Navicat Premium 12解压版

通过网盘分享的文件:Navicat Premium 12解压版.rar链接: https://pan.baidu.com/s/1kDLlrcaiQRYGLfN5L-IpPA?pwd=3k6h 提取码: 3k6h --来自百度网盘超级会员v8的分享1.解压到指定路径 2.快捷方式,快捷方式用不了,就直接在该文件中直接打开 3. 测试链接

第八课 Python自动化之selenium

python+selenium selenium是一个第三方库,python有很多库; 1、什么是ui自动化? 通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。 2、ui自动化的优点? (1)解决重复性的功能测试和验证 (2)减少测试人员在回归测试时用例漏测和验证点的漏测 (3)…

png图片隐写实例之隐藏二维码

图片隐写,借助的是图片的每个像素点的RGB值,比如取RGB中的B值,这个值的二级制的最低位是0还是1,在肉眼上看看不出丝毫区别,我们就可以利用这个数据位,我们知道二维码一般都是两种颜色,黑色和白色,黑色的像素点用1表示,白色用0表示,我们就把二维码的每个像素点转换成1…

Windows环境安装Scrapy

虽然可以使用 pip 在 Windows 上安装 Scrapy,但还是建议用 Anaconda 安装教程 1.创建虚拟环境(可选但推荐) 打开 Anaconda Prompt,执行以下命令: conda create -n scrapy_env python=3.12(这里假设使用 Python 3.12,你可以根据需要选择其他版本)。 2.激活虚拟环境: co…

openssh 漏洞修复 openssl升级 OpenSSH_9.8p1麒麟系统

第一步:准备好要升级的包 下图所示 使用命令:yum install *.rpm或 rpm -ivh *rpm 如果使用 yum install *.rpm 安装不了,在使用 rpm -ivh *rpm 提示已有旧的版本 可以使用 rpm -Uvh *.rpm 可以替换安装,根据不通的系统 有可能安装后会重启不成功, 所以需要使用:sudo sy…

5.7 与 8.0 对相同文件的 LOAD DATA 语句结果不同

5.7 与 8.0 对相同文件的 LOAD DATA 语句结果不同 问题描述 某客户现场支持,由MySQL 5.7.21升级MySQL 8.0.25后,通过LOAD DATA导入文件,当同一会话连续导入不同的编码(UTF8/GB18030)文件时会出现乱码。数据库版本未升级之前,相同的导入操作在MySQL 5.7.21未出现乱码。 问…

用命令行启动 docker 报错:Redirecting to /bin/systemctl start docker.service 解决方法

docker安装成功后,用 sudo service docker start 启动docker报这个错误,看提示应该是需要用systemctl的命令。 使用systemctl start docker命令启动成功了,做下记录。 以下是启动doker常用的几个命令: # 启动 docker:systemctl start docker # 停止 docker:systemctl sto…