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

2026-3-21算法题打卡 CSP35

A题-密码 还是简单的模拟题,直接模拟就行。
链接:https://www.smqyoj.com/p/CSP202409A

#include<bits/stdc++.h>
using namespace std;
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;string s;for(int i=0;i<n;++i){cin>>s;map<char,int> mp;int c1=0,c2=0,c3=0,c4=0;for(char c:s){mp[c]++;if(c>='a'&&c<='z') ++c1;else if(c>='A'&&c<='Z') ++c2;else if(c>='0'&&c<='9') ++c3;else ++c4;}bool ok=true;for(auto x:mp){if(x.second>2) ok=false;}if(s.size()>=6&&ok&&(c1||c2)&&c3&&c4) cout<<2<<"\n";else if(s.size()>=6&&(c1||c2)&&c3&&c4) cout<<1<<"\n";else if(s.size()>=6) cout<<0<<"\n";} return 0;
}

B题-字符串变换 哈希表 按行读取
链接:https://www.smqyoj.com/p/CSP202409B
使用哈希表和、预处理,给了串S,最多63个不同字符,形式为 #s#,s表示字符串,由于串内可能存在空格,使用getline按行读取,输入整数n,接下来输入n个串t,形式为 #xy# ,表示把字符 x换成字符 y,现在给出 m 个整数k,输出S串经过k次字符变换后得到的串,共m行。对于每个字符使用f数组记录该字符要变换的字符,对于每个位置上的字符,记录字符的变化周期,和不同变换次数下的相应字符,输入k值,遍历串的不同位置,k对当前位置字符的周期取余,输出该字符对应的余数的字符,就可以得到答案。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
map<char,char> f;int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);string s;getline(cin,s);//按行读取,包含空格 int len=(int) s.size();for(int i=0;i<10;++i) f[i+'0']=i+'0';for(int i=0;i<='Z'-'A';++i)f[i+'A']=i+'A';for(int i=0;i<='z'-'a';++i)f[i+'a']=i+'a';for(int i=0;i<len;++i){if(f.find(s[i])==f.end()) f[s[i]]=s[i];}int n=0,m=0;ll k=0;cin>>n;getchar();string t;for(int i=0;i<n;++i){getline(cin,t);//按行读取 f[t[1]]=t[2];}string t1=s;vector<int> num(110,0);vector<vector<char>> chan(110,vector<char>(70));for(int i=1;i<len-1;++i)//预处理 {int cnt=0;chan[i][0]=s[i];char c=s[i];set<char> st; while(!st.count(c))//循环周期 {st.insert(c);c=f[c];//换 ++cnt;chan[i][cnt]=c;}num[i]=cnt;}cin>>m;for(int i=0;i<m;++i){cin>>k;cout<<"#";for(int i=1;i<len-1;++i){int mod=(int) (k%num[i]);cout<<chan[i][mod];}cout<<"#\n"; }return 0;
}

D题-通讯延迟 建图 最短路
链接:https://www.smqyoj.com/p/CSP202409D
是建图和最短路,有n个节点,输入不同节点的坐标,m个通讯基站,第i个通讯基站的坐标为(xi,yi),范围覆盖以(xi,yi)为中心的2*ri的正方形区域,信号延迟为ti,求从节点1到节点n的最小信号延迟,如果不能发送信号,输出Nan。把通讯基站视为隐点,和节点1起使用邻接表建图,节点下标为 1-n,通讯基站下标为 n+1到n+m,对于第j个通讯站点,遍历每个节点,如果当前节点在范围内,节点记录到通讯站点的编号和延迟,延迟记为0;站点记录该节点编号和延迟 tj, 使用小根堆遍存储{ 信号延迟,图结点的编号},初始放入{0,1},遍历堆,取出头结点 t ,遍历头节点 t 的邻接结点,如果更新了当前邻接结点的信号延迟大小,入堆,直到堆空,如果dist[n]为无穷大,说明两点无法联通,输出-1;否者输出dist[n]。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pii;
const ll MAX=1e18;
const int N=5010;
ll r[N];
pii nodes[N];
struct station{ll x,y,r,t;
}stations[N];
vector<pii>adj[N*2];
ll dist[N*2];
int n,m;
int main()
{cin>>n>>m;for(int i=1;i<=n;++i) cin>>nodes[i].first>>nodes[i].second;for(int i=0;i<m;++i)cin>>stations[i].x>>stations[i].y>>stations[i].r>>stations[i].t;for(int i=0;i<m;++i)//建图 基站坐标大于 n {int sta_id=n+i+1;ll r=stations[i].r;ll t=stations[i].t;ll sx=stations[i].x;ll sy=stations[i].y;for(int j=1;j<=n;++j){ll dx=abs(nodes[j].first-sx);ll dy=abs(nodes[j].second-sy);if(dx<=r&&dy<=r){adj[j].push_back({sta_id,0});adj[sta_id].push_back({j,t});}}}fill(dist,dist+2*N,MAX);priority_queue<pii,vector<pii>,greater<pii>> q;q.push({0,1});// node-id 通讯延迟 dist[1]=0;while(q.size()){auto t=q.top();q.pop();ll dis=t.first,u=t.second;if(dis > dist[u]) continue;for(auto &eg:adj[u]){//邻接表 ll v=eg.first;ll w=eg.second;if(dist[u]+w<dist[v]){dist[v]=dist[u]+w;q.push({dist[v],v});} }		}if(dist[n]==MAX) cout<<"Nan";else cout<<dist[n];return 0;
}
http://www.jsqmd.com/news/517226/

相关文章:

  • 这5个网站让我效率翻倍!文末资源附链接!
  • ST7735 Arduino驱动库:硬件适配与帧缓冲图形开发指南
  • 从零到一:在主流云服务器上部署高可用FRP内网穿透服务
  • 基于STM32的校园无人超市嵌入式系统设计
  • 老马失前蹄,竟然在数据库外键上翻车了,重温外键级联
  • Nanbeige 4.1-3B惊艳效果:流式渲染速度与显存占用的帕累托最优解
  • Pixel Dimension Fissioner 系统集成案例:在WSL2中开发并调试模型应用
  • 告别乱码:一劳永逸的 VS Code 终端编码统一方案
  • 快速 vs. 准确:衡量量化向量搜索的召回率
  • 多模态学习避坑指南:当BERT遇到CNN时常见的7个数据陷阱
  • 信捷HMI与西门子S7-1200通信实战:从IP配置到Wireshark抓包全流程
  • WSL文件系统深度解析:如何在Windows和Linux间无缝操作文件
  • vue2两个组件间如何传递消息
  • 告别复杂配置!SDXL 1.0电影级绘图工坊一键部署指南,纯本地运行,数据安全
  • RustFS:构建云原生时代的高性能、安全对象存储实践
  • 【ROS2】机械臂抓取——gazebo_grasp_plugin参数调优与实战避坑
  • Rust 升级受阻:深入解析 rustup update stable 网络连接失败
  • STEP3-VL-10B开箱即用:Supervisor自动启动,无需复杂配置
  • PP-DocLayoutV3与YOLOv8协同:实现文档中插图的细粒度分类
  • 技术解析 2DGS vs 3DGS | SIGGRAPH 2024 新方法如何用‘二维圆盘’实现精准表面重建
  • 选对城市对年轻人的发展到底有多重要?
  • Qwen2.5-VL-7B实战:Ollama部署教程,5步搞定视觉对话AI
  • Harmonyos应用实例166:垂径定理互动演示
  • K8S持久化存储新选择:阿里云OSS CSI驱动深度配置与性能调优
  • 海康二次开发入门指南1-Visual Studio环境搭建
  • Live Avatar数字人快速部署:CLI命令行模式批量生成教程
  • 迪文屏K600+数据库读写避坑指南:从指令解析到.DAT文件导出全流程
  • Android NFC卡模拟实战:从零搭建虚拟门禁卡(附完整代码)
  • CogVideoX-2b快速上手:无需代码,网页点一点就能创作视频
  • 内核探秘:四种高效读取进程内存的技术对比与实践