当前位置: 首页 > news >正文

2026寒假牛客2.5

考试的时候体感上感觉有点难.......敲完后其实感觉还行

有点cf分格的一场,难度分界特别明显

赛时ac 7

A签到

#include<bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f3f3f3f
#define GG ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define cnot cout<<"NO"<<"\n"
#define cyes cout<<"YES"<<"\n"
#define cans cout<<ans<<"\n"
#define pb push_back
#define x0 first
#define y0 second
#define lc p<<1
#define rc p<<1|1
#define mem(a,b) memset(a,b,sizeof(a))
#define sp(x) fixed<<setprecision(x)
#define all(v) v.begin(),v.end()
#define fr(i,st,ed) for(int i=st;i<=ed;i++)
#define ffr(i,st,ed,dt) for(int i=st;i<=ed;i+=dt)
using namespace std;
typedef pair<int,string>Pis;
typedef pair<int,int>Pii;
const int N=2e4+10,mod=998244353,M=1e6+10;
int lowbit(int x){
return x&(-x);}
void solve(){
int a,b,c;
cin>>a>>b>>c;
int maxx=max(a,max(b,c));
int minx=min(a,min(b,c));
if(maxx-minx<=1)cyes;
else cnot;
}
signed main(){
GG;
int _t=1;
cin>>_t;
while(_t--){
solve();
}

}

B:需要注意的是,如果最大值是奇数个,那么只有最大值能够获胜,如果最大值有偶数个,那最大值必不可能获胜,但最大值可以通过和其他任意值相抵消的情况消掉任意值,最后再自己相互抵消,从而实现比最大值小的数都可以获胜

#include<bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f3f3f3f
#define GG ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define cnot cout<<"NO"<<"\n"
#define cyes cout<<"YES"<<"\n"
#define cans cout<<ans<<"\n"
#define pb push_back
#define x0 first
#define y0 second
#define lc p<<1
#define rc p<<1|1
#define mem(a,b) memset(a,b,sizeof(a))
#define sp(x) fixed<<setprecision(x)
#define all(v) v.begin(),v.end()
#define fr(i,st,ed) for(int i=st;i<=ed;i++)
#define ffr(i,st,ed,dt) for(int i=st;i<=ed;i+=dt)
using namespace std;
typedef pair<int,string>Pis;
typedef pair<int,int>Pii;
const int N=2e4+10,mod=998244353,M=1e6+10;
int lowbit(int x){
return x&(-x);}
void solve(){
int n;
cin>>n;
vector<int>a(n+1),b(n+1);
int num=-inf;
//vector<bool>st(n+1,0);
//unordered_map<int,int>mp;
fr(i,1,n){
cin>>a[i];
//mp[a[i]]++;
}
b=a;
sort(a.begin()+1,a.end(),greater<int>());
int maxx=a[1];
int maxo=-1;
fr(i,1,n){
int j=i;
while(j<n&&a[j]==a[i]){
j++;
}
int cnt=j-i;
if(cnt&1){
maxo=a[i];
break;
}
i=j;
}
fr(i,1,n){
if(maxo==-1)cout<<0;
else{
if(b[i]==maxo){
cout<<1;
}
else if(b[i]>maxo&&b[i]<maxx){
cout<<1;
}
else cout<<0;
}
}
cout<<"\n";
}
signed main(){
GG;
int _t=1;
cin>>_t;
while(_t--){
solve();
}

}

C/D UNKNOWN

E

我们令初始矩阵为

111110

111100

111000

110000

100000

000000

该矩阵满足条件1,2

接下来考虑如何满足条件3
在不破坏原有行列构造数字集合的前提下拆分连通块,考虑偶数行的 1 变
成列,从右边依次往左放置即可

#include<bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f3f3f3f
#define GG ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define cnot cout<<"NO"<<"\n"
#define cyes cout<<"YES"<<"\n"
#define cans cout<<ans<<"\n"
#define pb push_back
#define x0 first
#define y0 second
#define lc p<<1
#define rc p<<1|1
#define mem(a,b) memset(a,b,sizeof(a))
#define sp(x) fixed<<setprecision(x)
#define all(v) v.begin(),v.end()
#define fr(i,st,ed) for(int i=st;i<=ed;i++)
#define ffr(i,st,ed,dt) for(int i=st;i<=ed;i+=dt)
using namespace std;
typedef pair<int,string>Pis;
typedef pair<int,int>Pii;
const int N=2e4+10,mod=998244353,M=1e6+10;
int lowbit(int x){
return x&(-x);}
void solve(){
int n;
cin>>n;
vector<int>a(n+1);
int l=1;
int r=n;
fr(i,1,n){
if(i&1){
a[i]=l++;
}
else{
a[i]=r--;
}
}
vector<vector<int>>ans(n+1,vector<int>(n+1));
fr(i,1,n){
fr(j,1,n){
if(a[i]<a[j])ans[i][j]=1;
else ans[i][j]=0;
}
}
fr(i,1,n){
fr(j,1,n){
cout<<ans[i][j];
}
cout<<"\n";
}
}
signed main(){
GG;
int _t=1;
//cin>>_t;
while(_t--){
solve();
}

}

F

n=gcd(x,y)<=|x-y|<=x^y====>x^y min =n

题目给了n的范围2^31,x的范围2^63,所以我们可以之间把x左移,直到x1与x没有重合,在令y=x1+x,x=x1,这样x^y=n;

#include<bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f3f3f3f
#define GG ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define cnot cout<<"NO"<<"\n"
#define cyes cout<<"YES"<<"\n"
#define cans cout<<ans<<"\n"
#define pb push_back
#define x0 first
#define y0 second
#define lc p<<1
#define rc p<<1|1
#define mem(a,b) memset(a,b,sizeof(a))
#define sp(x) fixed<<setprecision(x)
#define all(v) v.begin(),v.end()
#define fr(i,st,ed) for(int i=st;i<=ed;i++)
#define ffr(i,st,ed,dt) for(int i=st;i<=ed;i+=dt)
using namespace std;
typedef pair<int,string>Pis;
typedef pair<int,int>Pii;
const int N=2e4+10,mod=998244353,M=1e6+10;
int lowbit(int x){
return x&(-x);}
void solve(){
int n;
cin>>n;
int x,y;
fr(i,0,63){
x=(n<<i);
if((x&n)==0){
break;
}
}
y=x+n;
cout<<x<<" "<<y<<"\n";
}
signed main(){
GG;
int _t=1;
cin>>_t;
while(_t--){
solve();
}

}

G UNKNOWN

H

先翻译一下代码,求s的所有前缀中不同字符个数的累加

一般这种题的套路都是,考虑每一个字符对最终答案的贡献

对于s=......a(1)......a(2)......

我们考虑a2的贡献,很显然,只有当起点为a1+1--a2时,a2才有贡献

我们记a2的上一次出现为pre,很显然,有贡献的起点个数为i-prei

接下来考虑终点,很显然终点是a2-n(n-i+1)

也就是a2的贡献长度是1-n-i+1,显然贡献=贡献长度,所以每一个起点的贡献就是1-n-i+1的累加

ans=(sum)(i-prei)*(i-n+1)*(i-n+2)/2

#include<bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f3f3f3f
#define GG ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define cnot cout<<"NO"<<"\n"
#define cyes cout<<"YES"<<"\n"
#define cans cout<<ans<<"\n"
#define pb push_back
#define x0 first
#define y0 second
#define lc p<<1
#define rc p<<1|1
#define mem(a,b) memset(a,b,sizeof(a))
#define sp(x) fixed<<setprecision(x)
#define all(v) v.begin(),v.end()
#define fr(i,st,ed) for(int i=st;i<=ed;i++)
#define ffr(i,st,ed,dt) for(int i=st;i<=ed;i+=dt)
using namespace std;
typedef pair<int,string>Pis;
typedef pair<int,int>Pii;
const int N=2e4+10,mod=998244353,M=1e6+10;
int lowbit(int x){
return x&(-x);}
void solve(){
int n;
cin>>n;
vector<int>a(n+1,0);
//vector<int>np(N,0);
unordered_map<int,int>np;
vector<int>pre(n+1,0);
fr(i,1,n){
cin>>a[i];
if(!np.count(a[i])){
np[a[i]]=i;
}
else{
pre[i]=np[a[i]];
np[a[i]]=i;
}
}
int ans=0;
fr(i,1,n){
ans+=((i-pre[i])*((n-i+1)*(n-i+2))/2);
}
cans;
}
signed main(){
GG;
int _t=1;
cin>>_t;
while(_t--){
solve();
}

}

I

卡B,想着先看I,看到这么个玩意.....

当时的感觉是 我以急哭。。。

脑子超级混乱,最后想着直接爆搜写,考完一想好像确实是check题

对于一个0/1字符,如果矩阵里面有相同字符,则一定可以

1出发,遇到1一定能够形成回文串,100000.....1

0同理

然后就解决了.......

J

这个反而是写下来感觉最简单的题之一?

低维求的是到任意高维的最短路,那我们可以直接从高维往低维写,每降一维判断当前节点的dist是不是被跟新过,没有出-1,有出答案,然后把这一层的点压进去做多源最短路就行,因为是逐层更新,所以保证当前答案一定最优

#include<bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f3f3f3f
#define GG ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define cnot cout<<"NO"<<"\n"
#define cyes cout<<"YES"<<"\n"
#define cans cout<<ans<<"\n"
#define pb push_back
#define x0 first
#define y0 second
#define lc p<<1
#define rc p<<1|1
#define mem(a,b) memset(a,b,sizeof(a))
#define sp(x) fixed<<setprecision(x)
#define all(v) v.begin(),v.end()
#define fr(i,st,ed) for(int i=st;i<=ed;i++)
#define ffr(i,st,ed,dt) for(int i=st;i<=ed;i+=dt)
using namespace std;
typedef pair<int,string>Pis;
typedef pair<int,int>Pii;
const int N=2e4+10,mod=998244353,M=1e6+10;
int lowbit(int x){
return x&(-x);}
void solve(){
int n,m;
cin>>n>>m;
vector<vector<int>>g(n+1);
vector<int>d(n+1,0);
vector<vector<int>>dj(n+1);
vector<int>ans(n+1,-1);
fr(i,1,m){
int u,v;
cin>>u>>v;
g[u].pb(v);
g[v].pb(u);
d[v]++;
d[u]++;
}
/*
fr(i,1,n){
cout<<d[i]<<" ";
}
*/
fr(i,1,n){
dj[d[i]].pb(i);
}
vector<int>dist(n+1,inf);
for(int i=n;i>=1;i--){
if(dj[i].empty())continue;
for(int x:dj[i]){
if(dist[x]==inf)ans[x]=-1;
else ans[x]=dist[x];
}
queue<int>q;
for(int x:dj[i]){
dist[x]=0;
q.push(x);
}
while(!q.empty()){
int tot=q.front();
q.pop();
for(int x:g[tot]){
if(dist[x]>dist[tot]+1){
dist[x]=dist[tot]+1;
q.push(x);
}
}
}
}
fr(i,1,n){
cout<<ans[i]<<" ";
}

}
signed main(){
GG;
int _t=1;
//cin>>_t;
while(_t--){
solve();
}

}

http://www.jsqmd.com/news/351169/

相关文章:

  • java+vue基于springboot的基于ai智能问答的演唱会购票选座系统的设计与实现_2qc3ph90
  • CFD模拟的基本流程与关键环节解析:从需求定义到结果验证的全链路指南
  • AI在测试中的核心应用场景(5)
  • 【课程设计/毕业设计】基于Python+Echarts的就业网站可视化系统设计与实现基于Python的就业网站可视化系统设计与实现【附源码、数据库、万字文档】
  • 数学建模是什么?——经济管理中的核心工具、建模流程与实战
  • 【Transformer分类】基于Transformer-BiLSTM-SHAP实现柴油机故障诊断附matlab代码
  • 生信解码泛癌 Treg 细胞:肿瘤免疫逃逸的 “黑警” 分子画像与精准治疗新方向
  • Python计算机毕设之基于Python的就业网站可视化系统设计与实现行业薪资热力图、岗位需求趋势等可视化分析(完整前后端代码+说明文档+LW,调试定制等)
  • 豆包可以做广告吗?如何提前布局豆包AI流量? - 品牌2025
  • 中国股市的定价效率:问题与改进方向
  • AI赋能,AI应用架构师优化渠道管理生态
  • 二战后国际经济格局:布雷顿森林体系的诞生与嬗变
  • 大数据BI工具的数据安全与隐私保护
  • Python毕设项目:基于Python的就业网站可视化系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • java+vue基于springboot的微信小程序的家政服务评价平台的设计与实现
  • 【计算机毕设】基于Spring Boot技术的公司日常考勤系统
  • 【毕业设计】基于Python的就业网站可视化系统设计与实现(源码+文档+远程调试,全bao定制等)
  • java+vue基于springboot的同人小说创作与在线阅读分享平台系统
  • Python+django超能驾校线上学习管理系统的设计与实现
  • java+vue基于springboot的图书馆座位预约微信小程序系统
  • 微信小程序Python-uniapp基于Android的宠物社区活动报名系统app设计与实现
  • 2026厦门翔安装修公司红榜实测!5家靠谱优选+避坑攻略,预算透明不踩雷 - 品牌测评鉴赏家
  • 深度强化学习 | 基于PPO算法的移动机器人路径跟踪(附Pytorch实现) - 指南
  • 厦门同安装修公司哪家强?实测3家宝藏机构,业主抄作业不踩坑! - 品牌测评鉴赏家
  • 重组蛋白表达完全指南:融合、分泌与包涵体表达解析
  • Atomic Information Flow A Network Flow Model for Tool Attributions in RAG Systems
  • P1886 【模板】单调队列 / 滑动窗口
  • 告别环境配置噩梦!RustFS + Docker 终极部署指南,从零直达生产环境
  • 【毕业设计】基于Spring Boot技术的公司日常考勤系统
  • ArcGIS Python零基础脚本开发教程---11.5如何获取和操作地图中的矩形区域