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

牛客周赛Round136总结

今天在实验室做题,战绩:过了三个半,小有进步吧。

前两题我就不说了,直接给代码:

#include<bits/stdc++.h> using namespace std; int a,b,c; int main() { cin>>a>>b>>c; int tmp=a; a=c; c=tmp; tmp=b; b=c; c=tmp; cout<<a<<' '<<b<<' '<<c<<endl; return 0; }

#include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { int n; cin>>n; if(n==1) { cout<<'a'<<endl; } else { cout<<"No"<<endl; } } return 0; }

话说这个第二题还挺坑的,都字符串互不相同了还是回文串,那只能是一个字母了呀,如果不是一个字母,那么直接输出No就可以了,也是被卡了十多分钟。。。

这个题要用到组合数,其实就是排列组合,我们知道,从1~n的数中,不管n的奇偶,n/2就是偶数的个数,所以n-n/2就是奇数的个数,如果'j'的个数大于n-n/2或者‘o’的个数大于n/2,那么就不能满足条件,直接输出0就可以了,然后就是在奇数中挑j个,先算C,再算A(j的个数的阶乘),偶数也是一样,那么剩下的就只能在?中替换了,再求个阶乘,最后乘在一起就可以了,那么,组合数怎么求了,我比赛时是这么写的:

LL C(int a, int b) { LL res=1; for(int i=1,j=b;i<=a;i++,j--) { res=res*j/i%mod; // ❌ 这里有问题 } return res; }

也是喜提WA了,因为在模运算中,除法不能直接进行,需要用逆元代替

也就是:a / b (mod mod) = a * b^(mod-2) (mod mod) // 当 mod 是质数时

为什么是这样呢?

我们应该知道费马小定理:

当MOD是质数时:

a^(MOD-1) ≡ 1 (mod MOD)

那么 ,a * a^(MOD-2) ≡ a^(MOD-1) ≡ 1 (mod MOD),a的逆元就是a^(MOD-2),计算这个逆元就需要用快速幂,套模版就行,fact数组记录阶乘,infect数组记录逆元的阶乘,最后C(a,b)=

fact[b] * invfact[a] % mod * invfact[b-a] % mod;这样就能求出答案了

看代码吧:

#include<bits/stdc++.h> using namespace std; const int N=2e5+10,mod=998244353; typedef long long LL; LL fact[N], infact[N]; LL qmi(LL a,int k) { LL res=1; while(k) { if(k&1)res=res*a%mod; a=a*a%mod; k>>=1; } return res; } void init(int n) { fact[0]=1; for(int i=1;i<=n;i++) { fact[i]=fact[i-1]*i%mod; } infact[n]=qmi(fact[n],mod-2); for(int i=n-1;i>=0;i--) { infact[i]=infact[i+1]*(i+1)%mod; } } LL C(int a,int b) { if(a<0||a>b)return 0; return fact[b]*infact[a]%mod*infact[b-a]%mod; } int main() { int n; cin>>n; init(n); string s; cin>>s; int ji=0,ou=0; for(int i=0;i<n;i++) { if(s[i]=='j')ji++; if(s[i]=='o')ou++; } if(ji>n-n/2||ou>n/2) { cout<<0<<endl; return 0; } LL res=1; int m=n-ou-ji; res=res*C(ou,n/2)%mod*fact[ou]%mod*C(ji,n-n/2)%mod*fact[ji]%mod*fact[m]%mod; cout<<res<<endl; return 0; }

应该说是模版题,但是对我这个没有系统学过数论的小白来说,还是挺难的

看D题:

这个题就是模拟题吧,我但是就是模拟思路,贪心的直觉告诉我,要删的话就要删中位数两边的数,那就相当于所有和中位数相同的数中,最左面或者最右面的变。然后上下边界改变,反正除了中位数,其他的数不重要,随便改,注意,还有一个b数组作为备份:

#include<iostream> #include<algorithm> using namespace std; const int N=4e5+10; int a[N],b[N]; int n; int main() { cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+n+1); int zhong=a[(n+1)/2]; //cout<<zhong<<endl; int sum=0; for(int i=1;i<=n;i++) { if(a[i]==zhong)sum++; } if(sum==n) { cout<<-1<<endl; return 0; } int start=-1,end=-1; for(int i=1;i<=n;i++) { if(start==-1&&a[i]==zhong)start=i; if(end==-1&&a[i+1]!=zhong&&start!=-1)end=i; } //cout<<start<<endl; //cout<<end<<endl; int step1=1e9,step2=1e9; for(int i=1;i<=n;i++)b[i]=a[i]; if(start!=1) { step1=0; int m=1; while(a[(m+n)/2]==zhong) { //cout<<m<<endl; step1++; m++; a[start]=a[start-1]; start++; } //cout<<step1<<endl; } for(int i=1;i<=n;i++)a[i]=b[i]; if(end!=n) { step2=0; int m=n; while(a[(m+1)/2]==zhong) { //cout<<m<<endl; step2++; m--; a[end]=a[end+1]; end--; } } cout<<min(step1,step2)<<endl; return 0; }

剩下的题等待大佬们补充,有做的不好的地方也希望可以指点出来

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

相关文章:

  • 基于单片机智能水表水流量计流量设计
  • VM16安装CentOS7避坑指南:从镜像下载到快照备份的全流程详解
  • RTL8720硬件RTC中断库:高确定性时间触发方案
  • Java八股文新解:从JVM内存模型看AI模型服务的资源管理与优化
  • Llama-3.2V-11B-cot 与 Java 八股文知识库结合:构建动态更新的面试学习系统
  • 基于LDA模型的电商评论主题挖掘与情感优化策略
  • BEV与BEVFusion在自动驾驶中的核心作用及学习路径解析
  • Citra模拟器架构深度解析:高性能3DS游戏仿真技术实现
  • GLM-OCR实战:快速部署并识别复杂文档中的文字与表格
  • STM32启动流程详解:从复位向量到main函数执行链
  • Z-Image-GGUF效果展示:‘professional photography’风格与‘digital art’风格对比
  • 61:《死亡笔记》从展示处决到文化病毒:神性传播的SIR传染病模型
  • Qwen3-VL-8B快速上手教程:无需代码基础,轻松玩转多模态AI
  • 实时通信系统实战:SpringBoot整合WebSocket打造股票行情与多人聊天平台
  • KART-RERANK数据库优化实战:MySQL查询语句与文档相关性匹配
  • ️ Python SQLite数据库完全指南:从零基础到实战操作
  • 图像增强技术全解析:基于Real-ESRGAN-ncnn-vulkan的超分辨率解决方案
  • 第一次web开发前端作业
  • 解密LeRobot ACT中的Transformer架构:如何用多模态融合提升机器人动作预测精度
  • 航模新手必看:PWM、PPM、SBUS、DSM2接收机协议全解析(含实战接线图)
  • CAM++应用场景解析:如何用声纹识别技术解决会议录音分类问题
  • Qwen3-ASR-1.7B多语言识别效果展示:支持52种语种的实战案例
  • 基于51单片机的锂电池电压电流容量检测设计
  • LLM 大模型技术原理与应用实践专栏
  • PHP-Resque工作者管理:如何高效运行多进程和信号处理
  • Z-Image-Turbo-rinaiqiao-huiyewunv快速上手:3步完成本地化二次元绘图工具启动与首图生成
  • CogVideoX-2b实战案例:用‘futuristic city at night, flying cars’生成视频
  • 二维码工具:浏览器集成与本地处理的高效解决方案
  • V4L2框架里的‘俄罗斯套娃‘:深入拆解video_device与v4l2_subdev的交互逻辑
  • nomic-embed-text-v2-moe部署案例:中小企业低成本搭建多语言向量检索系统