Hello 2025 A-D

news/2025/1/12 13:57:22/文章来源:https://www.cnblogs.com/guiyou/p/18666921

题解

博主能力有限

A

题意:将0~(n*m-1)的排列,任意放在n×m的二维数组,找到一种放置后的,每行每列没有出现过的最小整数的和,不关心怎么放置,只关心怎么求最大的和
理解对题意后,很容易发现只有0所在的行和列才能使ans增加,而最大的增加方法,假设m>n,那么与0的同一行设置为0-(m-1)的排列,ans+=m,与0的同 一列,那必然是ans+=1,当m<n时,同理
所以最终答案:
ans=max(n,m)+1

B

题意

一个长度为a的数组
给出一次操作:任选区间并删除区间内的所有最小值
操作之前有k次变换,将数组内的数任意变换
求最少操作次数使得数组为空

思路

为了尽可能减少操作次数,那么一次操作就要多删除相同的最小值,所以每次都选择全部的区间
这样选择后,我们的操作次数就是,数组内有多少个不等的数
而操作前的k次变换,可以减少不等的数,进一步使得答案减少
所以根据每个数相同的有多少个进行从小到大排序,从小到大依次减少不等的数,直到k用完

CODE

#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
int n,k;
int t;
int top=0;
const int maxn=1e5+10;
int a[maxn];
map<int,int>mp;void solve(){cin>>n>>k;mp.clear();for(int i=1;i<=n;++i){int x;cin>>x;mp[x]+=1;}if(n==1 || k>=n-1){cout<<1<<endl;return ;}int maxx=0;top=0;for(auto[x,y]:mp){a[++top]=y;}sort(a+1,a+1+top);int ans=0;bool flag=0;for(int i=1;i<=top;++i){if(k>=a[i]){k-=a[i];}else {flag=1;    }if(flag==1){ans+=1;}}cout<<ans<<endl;return ;
}
int main(){cin>>t;while(t--){solve();}return 0;
}

C

题意

给定区间[l,r],找三个数使得\(a \oplus b + b \oplus c + a \oplus c\)最大,且\(a\neq b\neq c\)

思考(官方)

当时看到异或就被吓退了,题没有想象那么难

我们考虑第k个二进制位,如果在该位置上\(a,b,c\)三位中任取1或2个数为0,那么对答案贡献\(2^{k+1}\),如果k是l,r最大不同的二进制位,所以答案最多是\(2*(1+2+\cdots+2^{k})\)(可以思考一下为什么这样设置k的原因)

剩下的问题就是如何构造的问题了
官方思路:
找到第一个l和r不同的二进制位设为k,令a为前k-1个二进制位都为1,令b为第k位为1,其它0,这时再这样在区间任取一个不等于a,b的就可以

再讲细点:
a,b已经保证了前k位都不同,这时任取一个区间内的数(不等于a,b),能保证c与不可能在第i个二进制位上都等于a,b,所以必然贡献\(2^{i+1}\)

CODE

#include<bits/stdc++.h>using namespace std;
int t;
void solve(){int l,r;cin>>l>>r;int k=31-__builtin_clz(l^r);int a=l|(1<<k)-1,b=a+1,c=a==l?r:l;cout<<a<<" "<<b<<" "<<c<<endl; 
}
int main(){cin>>t;while(t--){solve();}return 0;
}

D

向这位博主学习的

思路

我们转化一下题目的条件,那么当区间\([l,r]\)的端点,为区间的最大最小值,如果\(a_r\)是最大值,\(a_l\)是最小值,\(ans=a_r-r-(a_l-l)\),
如果\(a_l\)是最大值,\(a_r\)是最小值,\(a_l-l-(a_r+r)\),
综上:
\(ans=max(a_r-r-(a_l-l),a_l-l-(a_r+r))\)

修改的操作很符合线段树单点修改的特性,可以用线段树来维护

CODE

#include<bits/stdc++.h>using namespace std;
#define ls p<<1
#define rs p<<1|1 
int n;
const int maxn=8e5+10;
int t,q,x,p;
int m[maxn]; 
int mina[maxn],minb[maxn];
int maxa[maxn],maxb[maxn]; 
int ansa[maxn],ansb[maxn];
void push_up(int p){//对于一个节点的最大的ans应该从左儿子的ans和右儿子的ans,左右区间中最大值最小值按照公式相减得到mina[p]=min(mina[ls],mina[rs]);maxa[p]=max(maxa[ls],maxa[rs]);minb[p]=min(minb[ls],minb[rs]);maxb[p]=max(maxb[ls],maxb[rs]);ansa[p]=max(max(ansa[ls],ansa[rs]),maxa[rs]-mina[ls]);ansb[p]=max(max(ansb[ls],ansb[rs]),maxb[ls]-minb[rs]);return ;
}
void build(int p,int l,int r){if(l==r){mina[p]=maxa[p]=m[l]-l;minb[p]=maxb[p]=m[l]+l;ansa[p]=ansb[p]=0;return ;}int mid=(l+r)>>1;build(ls,l,mid);build(rs,mid+1,r);push_up(p);
}void update(int p,int l,int r,int po,int ua,int ub){//单点更新if(l==r){mina[p]=maxa[p]=ua;minb[p]=maxb[p]=ub;ansa[p]=ansb[p]=0;return ;}int mid=(l+r)>>1;if(po<=mid) update(ls,l,mid,po,ua,ub);else update(rs,mid+1,r,po,ua,ub);push_up(p);
}
void solve(){cin>>n>>q;for(int i=1;i<=n;++i) cin>>m[i];build(1,1,n);cout<<max(ansa[1],ansb[1])<<"\n"; while(q--){cin>>p>>x;update(1,1,n,p,x-p,p+x);cout<<max(ansa[1],ansb[1])<<"\n";	}return ;
}
int main(){cin>>t;while(t--){solve();}return 0;
}

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

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

相关文章

【DMSQL系列】 达梦数据库写文件的方式探索

前沿 这篇文章整体算是🧲【DMSQL系列】SQL注入小记 的续集,达梦作为国内优秀的信创数据库,在关基单位中拥有越来越大的用户使用量。 通过SQL注入来写文件一直以来都是SQL注入漏洞深入利用的一种方式,对于不同的数据库通常写文件的方式也是不一样的。 通过笔者的探索发现,…

redis-shake工具同步redis数据

一、我的使用场景说明 1.业务场景由于业务要求,redis服务器迁移,将A服务器redis(单机)数据迁移到B服务器的redis(单机)上,只迁移5库数据,选择工具的原因是:B服务器上redis其他库都有数据,不能直接迁移A服务器redis的rdb或aof持久化文件 redis都是单机、6.0.2版本 red…

网站热门视频无法播放,如何解决?

针对您提到的网站热门视频无法播放的问题,我们可以从多个角度进行排查和解决。以下是一些建议,希望能帮助您快速找到问题所在并恢复正常播放功能。检查视频文件完整性:首先,请确认视频文件是否完整上传到了服务器。有时候由于网络波动或其他原因,可能导致文件传输过程中出…

服务器连接不上,如何排查和解决?

当您遇到服务器连接不上的问题时,首先需要明确具体的症状和环境。以下是详细的排查步骤和解决方案:确认网络连接:检查本地网络是否正常工作,尝试访问其他网站或服务,确保不是本地网络问题。 使用 ping 或 traceroute 命令测试与目标服务器的连通性。如果无法 ping 通,可能…

绑定域名后访问需输入账号密码,且静态资源跳转至缓存地址,如何处理?

当您绑定域名后访问网站时遇到需要输入账号密码以及静态资源跳转至缓存地址的问题,可能是由以下几种原因引起的。以下是详细的排查步骤和解决方案:确认身份验证设置:检查 Web 服务器(如 Apache、Nginx)的配置文件,确保没有启用不必要的身份验证机制。例如,Apache 的 .ht…

解决服务器卡顿及响应缓慢的问题

问题描述: 用户反映其服务器在迁移后出现了严重的卡顿现象,尤其是在执行某些特定操作(如批量打印快递单、查询会员列表)时,响应时间长达十几秒甚至二十多秒。这种情况严重影响了用户体验和工作效率。 解决方案:分析性能瓶颈:首先,使用性能分析工具(如top、htop、iosta…

解决FTP类问题:无法上传或下载文件

问题描述: 用户报告称其FTP账户虽然可以成功连接到服务器,但在尝试上传或下载文件时却失败了。这种情况严重影响了文件管理和更新工作,需要找出根本原因并解决。 解决方案:检查FTP权限设置:首先,确认FTP用户的权限是否足够。对于大多数FTP服务器,默认情况下用户具有读写…

如何解决网站伪静态设置后首页正常但其他页面404的问题

在配置伪静态规则后遇到了首页可以正常访问,但其他页面显示404错误的问题。这种情况通常与伪静态规则的配置、服务器环境或文件路径有关。以下是详细的排查步骤和解决方案:检查伪静态规则配置:确认伪静态规则是否正确配置。伪静态规则通常位于.htaccess(Apache服务器)或we…

9.水卡研究

学习资源:【【教程】手把手教你玩转IC卡-第1章-第1节-基础知识】https://www.bilibili.com/video/BV1QF411r7mw?vd_source=3e114458cfb3d0f9ecfb71a4c76c2465试验对象是本人大学水卡,因为是加密卡,需要嗅探,得要学校取水器,现在哩寒假在家,去嗅探,得开学了。 目前,就打…

ZIP伪加密解析

ZIP伪加密解析 1、zip组成 一个 ZIP 文件由三个部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志。 一个zip文件由这样三个部分组成_zip 文件结构_一只独孤的程序猿的博客-CSDN博客 2、实例压缩源文件数据区: 50 4B 03 04:这是头文件标记(0x04034b50) …

国内云服务器怎么选

前言 作为一名个人开发者,无论是搭建网站、编写小程序,还是运行脚本,我几乎离不开云服务器。回想从大学时期开始接触服务器,到如今进入职场,已累积了近十年的使用经验。从最初的“乞丐版”1核0.5G服务器,到如今的“土豪版”8核16G云服务器,再到云数据库、云Redis、云存储…

如何解决网站模板无法更新及后台操作异常的问题

您好,根据您的描述,您遇到了以下两个主要问题:网站模板无法更新,即使删除旧模板并上传新模板后,仍然显示旧模板。 登录网站后台后,部分系统板块无法点击,且栏目内容混乱。为了解决这些问题,请按照以下步骤进行排查和处理: 一、网站模板无法更新清除浏览器缓存浏览器缓…