C++算法训练第九天

news/2026/1/21 22:14:10/文章来源:https://www.cnblogs.com/godjian/p/19514179

C++算法训练第九天

以下为牛客挑战

今日收获

学到了三元组,就是当我们从一大堆数中选着3个数的方案。就是不一样位置的数如果相同,但是角标不一样也算不一样的。
常规3层for循环而三元组---》
prev2相当于前面所组成的二元组的个数,prev表示前面的数的和,an+前面组合的数x单前的数。--》三元组。cnt[i]i的个数
ll prev = 0, prev2 = 0;REP(i, 26) {ans += prev2 * cnt[i];prev2 += prev * cnt[i];prev += cnt[i];}
对BFS可用魔法的更深入一层。

牛客周赛 Round 121

幽幽子想吃东西

A-幽幽子想吃东西_牛客周赛 Round 121 (nowcoder.com)

image-20260121162057377

1 2 3 4
4

解题代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=1e9+7;
//int a[N],b[N],c[N],pre[N];signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int a,b,c,n;cin>>a>>b>>c>>n;int m=a*n;if(n<=b){cout<<m-c;}else{cout<<m;}return 0;
}

米斯蒂娅不想被吃掉

枚举

B-米斯蒂娅不想被吃掉_牛客周赛 Round 121 (nowcoder.com)

image-20260121163037096

2
3 1
2 0 1
3 2
6 0 1
Yes
No

我们直接遍历结果就行了

解题代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=1e9+7;
int a[N],b[N],c[N],pre[N];
void solve(){int n,x;cin>>n>>x;vector<int>s(n+1);for(int i=1;i<=n;i++){cin>>s[i];}for(int i=1;i<=n;i++){if(s[i-1]<x&&s[i-1]>=0){int m=x-s[i-1];s[i]-=m;}if(s[i]<0){cout<<"No"<<endl;return;}}cout<<"Yes"<<endl;
};
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);TESTS{solve();};return 0;
}

三妖精say subsequence !!!

递推三元组。

C-三妖精say subsequence !!!_牛客周赛 Round 121 (nowcoder.com)

image-20260121165530852

3
abc
6

因为是字母所以我们可以直接去统计然后3个循环去遍历,按照顺序的三元组,然后我们继续去×6,因为排列组合,3个排成6就行了。

解题代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=998244353;
int a[N],b[N],c[N],pre[N];signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;string s;vector<int>m(26,0);cin>>n>>s;for(int i=0;i<n;i++){m[s[i]-'a']++;}int ans=0;for(int i=0;i<=23;i++){for(int j=i+1;j<=24;j++){for(int k=j+1;k<=25;k++){ans+=((m[i]*m[j])%mod*m[k])%mod;ans%=mod;}}}cout<<ans*6%mod<<endl;return 0;
}

三元关系代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=998244353;
int a[N],b[N],c[N],pre[N];signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;string s;vector<int>m(26,0);cin>>n>>s;for(int i=0;i<n;i++){m[s[i]-'a']++;}int ans=0;int prev=0,prev2=0;for(int i=0;i<26;i++){ans+=prev2*m[i];prev2+=prev*m[i];prev+=m[i];}cout<<ans*6%mod<<endl;return 0;
}

恋恋的01串大冒险

模拟

D-恋恋的01串大冒险_牛客周赛 Round 121 (nowcoder.com)

image-20260121203149515

3 1
000
0 1 2 3

这个题是这样的,做法就是模拟

image-20260121203719485

解题代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=1e9+7;
int a[N],b[N],c[N],pre[N];signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,k;string s;cin>>n>>k>>s;vector<int>cnt(n+1,0);s=" "+s;int i=1;int cur=0;int used=0;while (i<=n){if(s[i]=='1'){while (i<=n&&s[i]=='1'){i++;}cur=0;}else{cur++;if(cur>=k){cnt[used]=i-1;used++;cur=0;}i++;}if(i>n){cnt[used]=i-1;break;}}for(int i=1;i<=n;i++){cnt[i]=max(cnt[i-1],cnt[i]);}for(int i=0;i<=n;i++){cout<<cnt[i]<<" ";}return 0;
}

the world

BFS最短路加可用魔法

E-the world_牛客周赛 Round 121 (nowcoder.com)

image-20260121215319480

1 4 1
1 2 1 3
3

这个题是bfs的想法

我们可以定义一个数组

int dp[1005][1005][2][2];前两个表示位置,第3个表示现在是奇数时间还是偶数,最后一个是有没有用魔法我们发现用了魔法和没有用魔法也就第一秒不同,只是把原来的下一步调换一下位置就行了
没有魔法
if(g[x1][y1]==1&&(list%2)==0){ continue;}if(g[x1][y1]==2&&(list)%2==1){ continue;}
有魔法if(g[x1][y1]==1&&(list%2)==1){ continue;}if(g[x1][y1]==2&&(list)%2==0){ continue;}

image-20260121214354110

转移

if(dp[x1][y1][list%2^1][used]==-1){q.push({x1,y1,list+1,1});}list%2^1,表示奇变偶,偶变奇。

然后写的去就行了

先初始化

 for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){dp[i][j][0][0]=-1;dp[i][j][0][1]=-1;dp[i][j][1][0]=-1;dp[i][j][1][1]=-1;}}

代码解释

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=1e9+7;
int a[N],b[N],c[N],pre[N];
int dp[1005][1005][2][2];
int dx[4]={0,1,0,-1};
int dy[4]={-1,0,1,0};
struct node{int x,y,list,used;
}Node;
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,m,k;cin>>n>>m>>k;vector<vector<int>>g(n+1,vector<int>(m+1));for(int i=0,x1,y1,x2,y2;i<k;i++){cin>>x1>>y1>>x2>>y2;g[x1][y1]|=1;g[x2][y2]|=2;}//初始化宿主for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){dp[i][j][0][0]=-1;dp[i][j][0][1]=-1;dp[i][j][1][0]=-1;dp[i][j][1][1]=-1;}}queue<node>q;q.push({1,1,1,0});while(q.size()){auto [x,y,list,used]=q.front();q.pop();if(dp[x][y][list%2][used]!=-1)continue;dp[x][y][list%2][used]=list;for(int i=0;i<4;i++){int x1=x+dx[i];int y1=y+dy[i];if(x1<1||y1<1||x1>n||y1>m||g[x1][y1]==3)continue;if(g[x1][y1]==1&&(list%2)==0){ continue;}if(g[x1][y1]==2&&(list)%2==1){ continue;}if(dp[x1][y1][list%2^1][used]==-1){q.push({x1,y1,list+1,used});}}if(!used){for(int i=0;i<4;i++){int x1=x+dx[i];int y1=y+dy[i];if(x1<1||y1<1||x1>n||y1>m||g[x1][y1]==3)continue;if(g[x1][y1]==1&&(list%2)==1){ continue;}if(g[x1][y1]==2&&(list)%2==0){ continue;}if(dp[x1][y1][list%2^1][used]==-1){q.push({x1,y1,list+1,1});}}}}int ans=1e9;for(int i=0;i<2;i++){for(int j=0;j<2;j++){if(dp[n][m][i][j]==-1){continue;}ans=min(dp[n][m][i][j],ans);}}if(ans>1e8){ans=0;}cout<<ans-1;return 0;
}

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

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

相关文章

大数据采集技术盘点:Flume vs Kafka vs Sqoop

大数据采集技术盘点:Flume vs Kafka vs Sqoop 关键词:大数据采集、Flume、Kafka、Sqoop、数据集成、实时采集、批量传输 摘要:在大数据生态体系中,数据采集作为数据处理流程的起点,其技术选型直接影响后续数据处理的效率与质量。本文深度解析Apache生态中三款主流数据采集…

人群仿真软件:Legion_(13).Legion在交通枢纽中的应用

Legion在交通枢纽中的应用 1. 交通枢纽仿真概述 交通枢纽是城市交通系统中重要的组成部分&#xff0c;包括机场、火车站、地铁站、公交站等。这些场所通常人流密集&#xff0c;如何高效、安全地管理人群流动是一个复杂的问题。人群仿真软件Legion通过模拟真实的交通场景&…

YOLOv8改进 - 注意力机制 | CPCA (Channel Prior Convolutional Attention) 通道先验卷积注意力通过动态权重分配增强复杂场景特征感知

前言 本文介绍了通道先验卷积注意力&#xff08;CPCA&#xff09;及其在YOLOv8中的结合应用。医学图像分割面临挑战&#xff0c;现有注意力机制效果不佳&#xff0c;CPCA应运而生。它结合通道注意力和空间注意力&#xff0c;通过多尺度深度可分离卷积模块提取空间关系并保留通…

巴菲特的逆向投资艺术:在社交媒体时代的执行挑战

巴菲特的逆向投资艺术:在社交媒体时代的执行挑战 关键词:巴菲特、逆向投资艺术、社交媒体时代、执行挑战、投资策略 摘要:本文聚焦于巴菲特的逆向投资艺术在社交媒体时代所面临的执行挑战。首先介绍了逆向投资的背景,包括其目的、预期读者等内容。接着阐述了逆向投资的核心…

基于Python(Numpy)的周期信号傅里叶变换

目录引言 Python中的快速傅里叶变换numpy实现快速傅里叶变换         3.快速傅里叶变化(FFT)中的问题共轭和共轭对称性  帕斯瓦尔定理 DFT与连续傅里叶系数的关系 奈奎斯特采样定理4.总结5.参考 引言傅里叶…

解决RAG检索冲突的5种方法,让你的智能问答系统更可靠

文章针对RAG系统中检索知识片段发生冲突的问题&#xff0c;提出五种解决方案&#xff1a;FILCO算法过滤矛盾内容、引入冲突检测与可信源选择、TruthfulRAG语义级解析、CARE框架训练上下文评估器&#xff0c;以及工程实践中的元数据与Prompt优化。强调RAG系统应追求准确性而非数…

特征工程不该再靠人肉:聊聊 Feature Store 为什么是数据团队的分水岭

“特征工程不该再靠人肉&#xff1a;聊聊 Feature Store 为什么是数据团队的分水岭”说句掏心窝子的实话&#xff1a; 绝大多数模型效果不行&#xff0c;真不怪算法&#xff0c;怪特征。 而绝大多数特征问题&#xff0c;也不怪你不努力&#xff0c;是工程方式太原始了。 我见过…

【ACM出版 | 高录用 | 快速EI检索 | 高校、协会联合支持举办 | 双一流大学教授到场报告 | 往届会后3个月左右完成EI检索】第七届大数据与信息化教育国际学术会议(ICBDIE 2026)

第七届大数据与信息化教育国际学术会议&#xff08;ICBDIE 2026&#xff09; 2026 7th International Conference on Big Data and Informatization Education&#xff08;ICBDIE 2026&#xff09; 2026年2月6-8日&#xff5c;中国 - 北京 - 北京万方苑国际酒店&#xff08;北…

微信立减金回收这样做,轻松提现不踩坑!

不少人翻看手机时才惊觉,几张大额微信立减金即将过期,却因消费场景受限,成了“沉睡资源”。数据显示,2025年超六成用户因未及时处理而让立减金白白浪费。其实,掌握正确的微信立减金回收方式,就能把闲置资源变成现…

大模型智能体(Agent)完全指南:规划、工具与记忆的工程化实践

智能体是具备规划、执行、学习能力的智能系统。本文系统解析了智能体的三大核心能力&#xff1a;规划(任务拆解与自我反思)、工具使用(从函数调用到统一标准)、记忆(短期与长期记忆)&#xff0c;并提供了从概念到系统的工程化构建路线图&#xff0c;强调未来竞争在于工程架构深…

肯尼斯费雪的创新驱动增长理论

肯尼斯费雪的创新驱动增长理论 关键词:肯尼斯费雪、创新驱动增长理论、经济增长、创新机制、技术进步 摘要:本文深入探讨了肯尼斯费雪的创新驱动增长理论。首先介绍了该理论提出的背景、目的和适用范围,明确了预期读者。接着阐述了创新驱动增长理论的核心概念、相互联系,以…

Mac搜索文件后快速锁定目录:全场景实用技巧汇总

Mac搜索文件后快速锁定目录&#xff1a;全场景实用技巧汇总 在使用Mac时&#xff0c;我们常通过聚焦搜索&#xff08;Spotlight&#xff09;或访达&#xff08;Finder&#xff09;快速找到目标文件&#xff0c;但找到文件后“找不到其存储目录”的困扰却很常见。无论是想整理文…

大模型“驯化”指南:从人类偏好到专属AI,PPO与DPO谁是你的菜?

大模型“驯化”指南:从人类偏好到专属AI,PPO与DPO谁是你的菜?引言:让AI真正“懂你”的时代已来 朋友们好,我是你们的AI技术博主。今天我们来聊一个让无数开发者又爱又恨的话题:如何让大模型真正“懂你”? 想象一…

爆款AI学习资源来了!涵盖大模型、多模态、智能体等六大方向,赶紧收藏!

本文推荐了一个超级全面的AI开源项目&#xff0c;汇集全球优秀AI资源&#xff0c;涵盖提示词工程、AI教程、机器人技术、多模态大模型、智能体架构及推理优化六大方向。该项目适合不同层次的AI学习者&#xff0c;从小白到专业开发者均可按需学习&#xff0c;是提升AI技术素养的…

20260121

开始写寒假作业了 目前是只写了登录和注册的简单功能 数据库用的mysql,使用可视化数据库工具mysqlworkbench加以辅助; 后端使用springboot+mybatisPlus 前端使用vue3+axios+router4,日后应该会加上pinia和element-ui…

人群仿真软件:Legion_(14).Legion在城市规划中的应用

Legion在城市规划中的应用 在城市规划中&#xff0c;人群仿真软件Legion可以发挥重要作用&#xff0c;帮助规划师和决策者更好地理解城市空间的使用情况&#xff0c;优化交通流线&#xff0c;提高安全性和舒适性。本节将详细介绍Legion在城市规划中的具体应用&#xff0c;包括如…

Anthropic深度解析:AI智能体评估完全指南,从入门到实践

Anthropic团队详解AI智能体评估体系&#xff0c;强调评估对提升AI系统可靠性的关键作用。文章系统介绍了评估结构、评分器类型及针对不同智能体(编码、对话、研究、计算机使用)的评估方法&#xff0c;并提出处理非确定性的passk和pass^k指标。通过从零到一的评估路线图&#xf…

Python Chroma 相关命令

Python Chroma 相关命令 @echo offtitle Jupyter Notebook - 无密码模式echo 正在启动 Jupyter Notebook(无密码)... REM 设置环境call conda activate chroma-env REM 启动 Jupyter(禁用 token)jupyter notebook…

DeepSeek Engram模块:大语言模型条件记忆架构创新与系统优化全解析

DeepSeek发布的Engram模块通过创新"条件记忆"架构&#xff0c;为大语言模型开辟稀疏化新维度。技术方面&#xff0c;实现O(1)静态记忆查找&#xff0c;引入词表压缩与多头哈希&#xff0c;支持计算存储解耦与硬件协同优化。性能上&#xff0c;Engram-27B在知识任务、…