CF Round 1004 题解合集

news/2025/2/13 10:20:49/文章来源:https://www.cnblogs.com/Kenma/p/18712573

感觉是 good round。

2C

唯一没做明白的题。

经过若干手玩,发现在最优次数内达到目标,加的值是固定的。

也就是说,如果我加了 \(9\),想要达到目标,以后不可能再加 \(99\)

又因为感觉答案上界很小,所以直接暴搜即可。

复杂度 \(O(能过)\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int inf=1e9;
const int a[10]={9,99,999,9999,99999,999999,9999999,99999999,999999999,9999999999};
int t,n,ans;
bool check(int n){while(n){if(n%10==7) return true;n/=10;}return false;
}
void dfs(int step,int n,int i){if(step>=ans) return;if(check(n)){ans=min(ans,step);return;}dfs(step+1,n+a[i],i);
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>t;while(t--){cin>>n;ans=inf;for(int i=0;i<=9;i++){dfs(0,n,i);}cout<<ans<<'\n';}return 0;
}

2D & 1A

趣味交互题。

首先,如果 \(x\) 不是一个排列,那么我们询问不在 \(x\) 中的数和任意数,返回 \(0\) 确定是 \(A\),否则确定是 \(B\)

然后,考虑 \(x\) 是排列的情况。此时如果是 \(A\),那么图一定是一棵内向基环树森林。

考虑图上两个点如果相互可达且距离相等,那么它们一定在同一个环上,并且距离的上界是 \(\lfloor \frac{n}{2} \rfloor\)

所以我们选择 \(x_i=1\)\(x_j=n\) 的两点询问,就可以确定是 \(A\) 还是 \(B\)

#include<bits/stdc++.h>
using namespace std;
int t,n,a[200005],vis[200005],out;
void solve1(){int p,ans;if(out==n) p=n-1;else p=out+1;cout<<"? "<<out<<' '<<p<<endl;cin>>ans;if(ans==0) cout<<"! A"<<endl;else cout<<"! B "<<endl;
} 
void solve2(){int minn,maxn,ans1,ans2;for(int i=1;i<=n;i++){if(a[i]==1) minn=i;if(a[i]==n) maxn=i;}cout<<"? "<<minn<<' '<<maxn<<endl;cin>>ans1;cout<<"? "<<maxn<<' '<<minn<<endl;cin>>ans2;if(ans1>=n-1 && ans1==ans2) cout<<"! B"<<endl;else cout<<"! A"<<endl;
}
int main(){cin>>t;while(t--){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];vis[a[i]]=1;}for(int i=1;i<=n;i++){if(!vis[i]) out=i;}if(out) solve1();else solve2();for(int i=1;i<=n;i++){vis[i]=0;}out=0;}return 0;
}

2E & 1B

首先注意到,非 \(0\) 的数一定都能选。

然后注意到,\(0\) 至多只能选一个。

最后注意到,选择靠前的 \(0\),结果一定不劣于选择靠后的 \(0\)

然后做完了。我们只需要判断选择第一个 \(0\) 和其他非 \(0\) 数,形成的子序列的合法性。

扫两边求前缀 \(min\) 和后缀 \(mex\) 即可。

总体复杂度 \(O(n)\)

#include<bits/stdc++.h>
using namespace std;
const int inf=1e9;
int t,n,flag,a[200005],minn[200005],mexn[200005],cnt[200005],ans;
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>t;while(t--){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];if(a[i]) ans++;}if(ans==n){cout<<ans<<'\n';ans=0;continue;}flag=false;for(int i=1;i<=n;i++){if(!a[i] && !flag) flag=true;else if(!a[i]) a[i]=inf;}minn[0]=inf;for(int i=1;i<=n;i++){minn[i]=min(minn[i-1],a[i]);}for(int i=n;i>=1;i--){mexn[i]=mexn[i+1];if(a[i]<=n) cnt[a[i]]=1;while(cnt[mexn[i]]) mexn[i]++; }flag=false;for(int i=1;i<n;i++){if(minn[i]<mexn[i+1]) flag=true; }if(!flag) ans++;cout<<ans<<'\n';ans=0;for(int i=0;i<=n;i++){minn[i]=mexn[i]=cnt[i]=0;}}return 0;
}

2F & 1C

题面有点神秘。

实际上就是让你对每次操作后,都有 \((P,Q,R)\) 中两者相等。

不妨设 \(pre_i =\oplus_{j=1}^{i} a_j\)

又因为第 \(i\) 次操作后,\(P \oplus Q \oplus R=pre_i\),所以 \((P,Q,R)\) 一定形如 \((pre_i,x,x)\)\((x,pre_i,x)\)\((x,x,pre_i)\)

考虑 DP,设 \(f_{i,x}\) 表示前 \(i\) 次操作后,\((P,Q,R)\) 形如 \((pre_i,x,x)\)\((x,pre_i,x)\)\((x,x,pre_i)\) 的方案数。

考虑因为 \(x \oplus a_i \neq x\),所以当 \(x \neq pre_{i-1}\)\(f_{i,x}=f_{i-1,x}\)

所以只需要考虑 \(x=pre_{i-1}\) 的情况。

考虑怎样的三元组可以通过一次操作到 \(f_{i,pre_i}\),发现只有 \(f_{i-1,pre_{i-1}}\)\(f_{i-1,pre_i}\),也就是说:

\[f_{i,x}=3f_{i-1,pre_{i-1}}+2f_{i-1,pre_{i}},x=pre_{i-1} \]

\[f_{i,x}=f_{i-1,x},x \neq pre_{i-1} \]

答案就是 \(\sum_{x} f_{n,x}\)

然后把第一维压了,用 umap 维护合法状态,总体复杂度 \(O(n)\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9+7;
int t,n,a[200005],pre[200005],ans;
map<int,int> f;
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>t;while(t--){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];pre[i]=pre[i-1]^a[i];}f[0]=1;for(int i=1;i<=n;i++){f[pre[i-1]]=(3*f[pre[i-1]]%mod+2*f[pre[i]]%mod)%mod;}for(map<int,int>::iterator it=f.begin();it!=f.end();it++){ans=(ans+it->second)%mod;}cout<<ans<<'\n';ans=0;f.clear();}return 0;
}

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

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

相关文章

探索ChatGPT背后的前端黑科技

由于图片和格式解析问题,可前往 阅读原文在人工智能与互联网技术飞速发展的今天,像ChatGPT这样的智能对话系统已经成为科技领域的焦点。它不仅能够进行自然流畅的对话,还能以多种格式展示内容,为用户带来高效且丰富的交互体验。然而,这些令人惊叹的功能背后,离不开前端技…

OTA软件升级管理系统

OTA(空中下载技术)是通过空中下载的方式对车辆中的软件进行远程升级。经纬恒润OTA软件升级管理系统基于软件架构、应用架构、业务架构和技术架构,为整车提供云-管-端-屏完整OTA解决方案,可靠地完成系统更新、软件升级、功能迭代和安全漏洞修复等功能。同时支持固件升级(FOTA…

深度学习经典 - 鱼书 - 《深度学习入门:基于Python的理论与实现》 - PDF免费下载

深度学习经典“鱼书”,下载地址:https://pdfs.top/book/深度学习入门:基于Python的理论与实现.html。本书深入浅出地介绍了深度学习的原理,使用Python3从零开始构建深度学习模型。书中详细讲解了神经网络、误差反向传播法、卷积神经网络等核心技术,并探讨了深度学习在自动…

DeepSeek 相关知识学习和整理ing...

【硬件相关】 HBM3e:HBM3e是HBM(高带宽内存)技术的迭代升级版本,属于HBM3的扩展。它采用3D堆叠封装技术,将多个DRAM芯片垂直堆叠,通过硅互连通道传输数据,大幅提升带宽和容量,同时降低功耗。 迭代背景:HBM系列从第一代(HBM)到第五代(HBM3e)持续升级,每一代都提高…

打靶记录27——Tre

靶机: https://www.vulnhub.com/entry/tre-1,483/ 下载(镜像):https://download.vulnhub.com/tre/Tre.zip 难度:中目标:获得 Root 权限 + Flag攻击方法:主机发现 端口扫描 信息收集 进阶路径枚举 EXP 代码改造 突破边界方法1 突破边界方法2 突破边界方法3 权限提升主机发…

7. Docker 容器数据卷的使用(超详细的讲解说明)

7. Docker 容器数据卷的使用(超详细的讲解说明) @目录7. Docker 容器数据卷的使用(超详细的讲解说明)1. Docker容器数据卷概述2. Docker 容器数据卷的使用演示:2.1 宿主 和 容器之间映射添加容器卷2.2 容器数据卷 读写规则映射添加说明2.3 容器数据卷的继承和共享3. 最后:坑:…

到底值不值得本地部署残血版DeepSeek?一文说清!教你如何白嫖满血版DeepSeek

一、介绍最近一段时间,DeepSeek 备受关注,夏天也向身边朋友推荐。但它常无法使用,原因是受到大规模恶意攻击,且 IP 地址在美国。 通过以下网站可以查看DeepSeek网站状态: status.deepseek.com/ 可以发现,最近标红的就是故障中​若遇服务器繁忙提示,大概率是被攻击了,并…

干货:DeepSeek+SpringAI实现流式对话!

前面一篇文章我们实现了《炸裂:SpringAI内置DeepSeek啦!》,但是大模型的响应速度通常是很慢的,为了避免用户用户能够耐心等待输出的结果,我们通常会使用流式输出一点点将结果输出给用户。 那么问题来了,想要实现流式结果输出,后端和前端要如何配合?后端要使用什么技术实…

Ftrans文件安全外发系统,为企业数据保驾护航!

随着企业的不断发展,集团分公司及各部门需向外部客户、合作伙伴及海外同事外发文件。过去,主要通过邮件、FTP方式将数据进行外发,主要存在以下问题和挑战: 1.进行文件外发时需通过OA的审批,由于OA审批与FTP传输两个环节割裂,公司无法有效限制数据外发范围和管控数据外发安…

本地部署 DeepSeek:小白也能轻松搞定!

大家好,我是晓凡。 写在前面 最近DeepSeek太火了,以至于每个小伙伴都想试试。DeepSeek 的到来可谓是开启了全民AI热潮。 本以为DeepSeek本地化部署有多难,实际上验证后很简单,操作起来就像给电脑装个新软件那么简单,大约十多分钟可完成本地部署。 今天咱们来聊聊如何在自己…

Git指南-从入门到精通

代码提交和同步命令 流程图如下:第零步: 工作区与仓库保持一致 第一步: 文件增删改,变为已修改状态 第二步: git add ,变为已暂存状态$ git status $ git add --all # 当前项目下的所有更改 $ git add . # 当前目录下的所有更改 $ git add xx/xx.py xx/xx2.py # 添加某几个…

一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019

一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019不熟悉整个流程的朋友可以先看之前的部署文章,手动部署一遍 一步步教你在CentOS 7.9上安装SQL Server 2019前言 这套Ansible脚本属于红帽官方出品,是一套mssql的自动化运维脚本,能够实现mssql的单实例部署和Alwa…