2023睿抗CAIP-编程技能赛-本科组省赛(c++)
RC-u1 亚运奖牌榜


模拟 AC:
#include<iostream>
using namespace std;
struct nation{int j,y,t;
}a[2];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;if(y==1) a[x].j++;if(y==2) a[x].y++;if(y==3) a[x].t++;}cout<<a[0].j<<" "<<a[0].y<<" "<<a[0].t<<endl;cout<<a[1].j<<" "<<a[1].y<<" "<<a[1].t<<endl;if(a[0].j==a[1].j){if(a[0].y==a[1].y){if(a[0].t>a[1].t) puts("The first win!");else puts("The second win!");return 0;}if(a[0].y>a[1].y) puts("The first win!");else puts("The second win!");return 0;}if(a[0].j>a[1].j) puts("The first win!");else puts("The second win!");return 0;
}
RC-u2 出院


答案错误 未AC(13/15): STL map+哈希思想
#include<iostream>
#include<cstring>
#include<map>
using namespace std;
map<string,string>mapp;
int n,m;
int main(){cin>>n>>m;for(int i=0;i<n;i++){string a,b;cin>>a>>b;mapp[a]=b;}while(m--){string in;cin>>in;int lenn=in.size();if(mapp.count(in)) cout<<mapp[in]<<endl;else{int flag=0;string out;for(auto x:mapp){int len=x.first.size();if(len<=lenn&&in.substr(0,len)==x.first&&mapp.count(in.substr(len,lenn))){flag=1;out=x.second+mapp[in.substr(len,lenn)];break;}}if(flag==1) cout<<out<<endl;else cout<<"D"<<endl;}}return 0;
}
借此题型,复习一下c++中的 STL 和 哈希思想:
洛谷 P4305 [JLOI2011] 不重复数字(set+vector)
set 有序不重复集合
set.insert(x) 插入元素x
set.count(x) 查找元素x,存在为1,不存在为0
set.clear() 清空集合
vector 容器
vector.push_back(x) 向容器的末尾添加一个元素x
vector.pop_back() 移除容器中的最后一个元素
vector.clear() 清空容器
#include<iostream>
#include<vector>
#include<set>
using namespace std;
vector<int>ans;
set<int>s;
int T,n;
int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>T;while(T--){cin>>n;s.clear();ans.clear();for(int i=0;i<n;i++){int x;cin>>x;if(s.count(x)==0){s.insert(x);ans.push_back(x);}}for(int x:ans) cout<<x<<" ";cout<<endl;}return 0;
}
ACwing 3466. 清点代码库(map+vector)
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
map<vector<int>,int>mapp;
int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int n,m;cin>>n>>m;for(int i=1;i<=n;i++){vector<int>num;for(int j=1;j<=m;j++){int x;cin>>x;num.push_back(x);}mapp[num]++;}cout<<mapp.size()<<endl;vector<pair<int,vector<int>>>ans;for(auto p:mapp){ans.push_back({-p.second,p.first});}sort(ans.begin(),ans.end());for(auto x:ans){cout<<x.first*(-1)<<" ";for(auto y:x.second) cout<<y<<" ";cout<<endl;}return 0;
}
ACwing 138. 兔子与兔子(字符串哈希)
#include<iostream>
#include<cstring>
using namespace std;
const int px=131,N=1e6+5;
unsigned long long h[N],p[N];
char s[N];
int n;
unsigned long long get_vlaue(int l,int r){return h[r]-h[l-1]*p[r-l+1];
}
int main(){scanf("%s",s+1);p[0]=1;int len=strlen(s+1);for(int i=1;i<=len;i++){h[i]=h[i-1]*px+s[i]-'a'+1;p[i]=p[i-1]*px;}scanf("%d",&n);while(n--){int l1,r1,l2,r2;scanf("%d %d %d %d",&l1,&r1,&l2,&r2);if(get_vlaue(l1,r1)==get_vlaue(l2,r2)) puts("Yes");else puts("No");}return 0;
}
ACwing 4951. 整理账本(map+vector)
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
map<int,int>mapB;
map<int,int>mapS;
typedef pair<int,int> pii;
vector<pii>ansB;
vector<pii>ansS;
int n,m;
int main(){cin>>n>>m;for(int i=0;i<n;i++){char a;int b,c;cin>>a>>b>>c;if(a=='B'){if(mapB.count(b)) {mapB[b]+=c;continue;}mapB[b]=c;}else{if(mapS.count(b)) {mapS[b]+=c;continue;}mapS[b]=c;}}for(auto x:mapB) ansB.push_back({x.first,x.second});for(auto x:mapS) ansS.push_back({x.first,x.second});sort(ansS.begin(),ansS.end());int lenS=mapS.size();for(int i=min(lenS-1,m-1);i>=0;i--) cout<<"S "<<ansS[i].first<<" "<<ansS[i].second<<endl;sort(ansB.begin(),ansB.end());int lenB=mapB.size();for(int i=lenB-1;i>=max(0,lenB-m);i--) cout<<"B "<<ansB[i].first<<" "<<ansB[i].second<<endl;return 0;
}
RC-u3 骰子游戏


- 如果有5个相同的数字(五个同点数),输出
0 0 1,表示不需要重骰。 - 如果有4个相同的数字(四个同点数),输出
1 1 6,表示重骰1个骰子,概率为1/6。 - 如果有3个相同的数字且有两个相同的数字(葫芦),输出
2 11 36,表示重骰2个骰子,概率为11/36。 - 如果骰子结果为2到6的顺子(六高顺子),输出
4 19 324,表示重骰4个骰子,概率为19/324。 - 如果骰子结果为1到5的顺子(五高顺子),输出
1 1 6,表示重骰1个骰子,概率为1/6。 - 如果有3个相同的数字(三个同点数),输出
2 4 9,表示重骰2个骰子,概率为4/9。 - 如果有两个对子(两对),输出
3 4 9,表示重骰3个骰子,概率为4/9。 - 如果有一个对子(一对),输出
3 13 18,表示重骰3个骰子,概率为13/18。 - 其他情况,输出
2 17 18,表示重骰2个骰子,概率为17/18。
手算+模拟 AC:
#include<iostream>
#include<cstring>
using namespace std;
int n,t,a[10],cnt[10],flag[10];
//a[10] 存储骰子的结果
//cnt[10] 计数每个数字出现的次数
//flag[10]计数出现特定次数的数字的数量
int main(){cin>>n;for(int i=1;i<=n;i++){memset(cnt,0,sizeof cnt);memset(flag,0,sizeof flag);for(int j=1;j<=5;j++){cin>>t;cnt[t]++;}for(int j=1;j<=6;j++)flag[cnt[j]]++;if(flag[5]==1) cout<<0<<" "<<0<<" "<<1;else if(flag[4]==1) cout<<1<<" "<<1<<" "<<6;else if(flag[3]==1&&flag[2]==1) cout<<2<<" "<<11<<" "<<36;else if(flag[1]==5&&cnt[1]==0) cout<<4<<" "<<19<<" "<<324;else if(flag[1]==5&&cnt[6]==0) cout<<1<<" "<<1<<" "<<6;else if(flag[3]==1&&flag[1]==2) cout<<2<<" "<<4<<" "<<9;else if(flag[2]==2) cout<<3<<" "<<4<<" "<<9;else if(flag[2]==1&&flag[1]==3) cout<<3<<" "<<13<<" "<<18;else cout<<2<<" "<<17<<" "<<18;cout<<endl;}return 0;
}
RC-u4 相对论大师


答案错误 未AC (23/25): STL+BFS
一个有向图, 每两个顶点为一组,要求找到所有同一组内的顶点路径中的最短路径
//RCu4 23
#include<iostream>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
using namespace std;
const int N=2e3+5;
map<pair<string,int>,int>mapsii;
map<int,pair<string,int>>mapisi;
vector<int>path;
int n,id,G[N][N],ans=(int)1e9,flag[N],pre[N];
int bfs(int start,int end){memset(flag,0,sizeof(flag));memset(pre,0,sizeof(pre));queue<pair<int,int>>q;q.push({start,0});flag[start]=1;while(q.size()){auto t=q.front();int point=t.first;int step=t.second;if(point==end){if(step<ans){ans=step;return 1;}return -1;}q.pop();for(int i=0;i<id;i++){if(G[point][i]==1&&flag[i]==0){step++;q.push({i,step});pre[i]=point;flag[i]=1;}}}return -1;
}
int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n;id=0;for(int i=0;i<n;i++){string a,c;int b,d;cin>>a>>b>>c>>d;int x,y;if(mapsii.count({a,b})==0){x=id++;mapsii[{a,b}]=x;}else x=mapsii[{a,b}];if(mapsii.count({c,d})==0){y=id++;mapsii[{c,d}]=y;}else y=mapsii[{c,d}];G[x][y]=1;}for(auto t:mapsii){string a=t.first.first;int b=t.first.second;int start=t.second;mapisi.insert({start,{a,b}});if(mapsii.count({a,b==0?1:0})==0) continue;int end=mapsii[{a,b==0?1:0}];if(bfs(start,end)==1){path.clear();for(int i=end;i!=start;i=pre[i]) path.push_back(i);path.push_back(start);}}for(int i=path.size()-1;i>=1;i--){int t1=path[i];int t2=path[i-1];cout<<mapisi.find(t1)->second.first<<" "<<mapisi.find(t1)->second.second<<" ";cout<<mapisi.find(t2)->second.first<<" "<<mapisi.find(t2)->second.second<<" ";}cout<<"="<<" ";cout<<mapisi.find(path[path.size()-1])->second.first<<" "<<mapisi.find(path[path.size()-1])->second.second<<" ";cout<<mapisi.find(path[0])->second.first<<" "<<mapisi.find(path[0])->second.second;cout<<endl;return 0;
}
ACwing 847. 图中点的层次
#include<iostream>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
const int N=1e5+5;
int n,m;
vector<int>G[N];
bool flag[N];
int bfs(int a,int b){memset(flag,0,sizeof flag);queue<pair<int,int>>q;q.push({a,0});flag[a]=1;while(!q.empty()){auto t=q.front();int point=t.first;int step=t.second;if(point==b) return step;q.pop();for(int i=0;i<G[point].size();i++){int nextpoint=G[point][i];if(flag[nextpoint]==0){flag[nextpoint]=1;q.push({nextpoint,step+1});}}}return -1;
}
int main(){cin>>n>>m;while(m--){int a,b;cin>>a>>b;G[a].push_back(b);}cout<<bfs(1,n)<<endl;return 0;
}
RC-u5 相对成功与相对失败


最后的排序是根据若分数不上升的排列的
令参加比赛得一分,不玩手机游戏得一分
最少有多少人撒谎,就是最多有多少人没有撒谎,即最多有多少人是符合分数不上升排列的
所以本题的本质是:最长不上升子序列长度,即动态规划
因此最终 答案 == n - 下降子序列长度
超时 未AC(17/30): 暴力法求下降子序列
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1e5+5;
int T,n,a[N],b[N],dp[N];
int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;if(x==1&&y==0) a[i]=2;else if(x==0&&y==1) a[i]=0;else a[i]=1;}for(int i=1;i<=n;i++){int x;cin>>x;b[i]=a[x];dp[i]=1;}for(int i=1;i<=n;i++) for(int j=1;j<i;j++) if(b[j]>=b[i]) dp[i]=max(dp[i],dp[j]+1);sort(dp+1,dp+1+n);cout<<n-dp[n]<<endl;}return 0;
}
优化AC: 单调贪心+二分优化查找
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
const int N=1e5+5;
int T,n,a[N],b[N];
int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;if(x==1&&y==0) a[i]=2;else if(x==0&&y==1) a[i]=0;else a[i]=1;}for(int i=1;i<=n;i++){int x;cin>>x;b[i]=a[x];}vector<int>stk;stk.push_back(b[1]);for(int i=2;i<=n;i++){if(stk.back()>=b[i]) stk.push_back(b[i]);else{int l=0,r=stk.size()-1;while(l<r){int mid=(l+r)/2;if(stk[mid]>=b[i]) l=mid+1;else r=mid;}stk[l]=b[i];}}cout<<n-stk.size()<<endl;}return 0;
}
ACwing 895. 最长上升子序列
//O(n^2)
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e3+5;
int n,a[N],dp[N];
int main(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i],dp[i]=1;for(int i=1;i<=n;i++)for(int j=1;j<=i-1;j++)if(a[j]<a[i])dp[i]=max(dp[i],dp[j]+1);sort(dp+1,dp+1+n);cout<<dp[n]<<endl;return 0;
}//O(nlongn)
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e5+5;
int n,a[N];
vector<int>stk;//模拟堆栈
int main(){cin>>n;for(int i=0;i<n;i++) cin>>a[i];stk.push_back(a[0]);for(int i=1;i<n;i++) {//如果该元素大于栈顶元素,将该元素入栈if(a[i]>stk.back()) stk.push_back(a[i]);//否则替换掉第一个>=这个数字的那个数else *lower_bound(stk.begin(),stk.end(),a[i])=a[i];}cout<<stk.size()<<endl;return 0;
}相关文章:
2023睿抗CAIP-编程技能赛-本科组省赛(c++)
RC-u1 亚运奖牌榜 模拟 AC: #include<iostream> using namespace std; struct nation{int j,y,t; }a[2]; int main(){int n;cin>>n;for(int i1;i<n;i){int x,y;cin>>x>>y;if(y1) a[x].j;if(y2) a[x].y;if(y3) a[x].t;}cout<<a[0].j<<&…...
现在国内的ddos攻击趋势怎么样?想了解现在ddos的情况该去哪看?
目前,国内的DDoS攻击趋势显示出以下几个特征: 攻击频次显著增加:根据《快快网络2024年DDoS攻击趋势白皮书》,2023年DDoS攻击活动有显著攀升,总攻击次数达到1246.61万次,比前一年增长了18.1%。 攻击强度和规…...
微服务到底是个什么东东?
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务运行在其独立的进程中,服务和服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的…...
C++笔试强训5
文章目录 一、选择题1-5题6-10题 二、编程题题目一题目二 一、选择题 1-5题 x1,先x,再x–,while判断永远为真,故死循环 选D。 sizeof会计算\0,strlen不包括\0,并且strlen只计算\0之前的。 所以sizeof是10,strken是4 …...
初学51单片机之UART串口通信
CSDN其他博主的博文(自用)嵌入式学习笔记9-51单片机UART串口通信_51uart串口通讯-CSDN博客 CSDN其他博主的博文写的蛮好,如果你想了解51单片机UART串口可以点进去看看: UART全称Universal Asynchronous Receiver/Transmitter即通…...
数据结构——查找(线性表的查找与树表的查找)
目录 1.查找 1.查找的基本概念 1.在哪里找? 2.什么查找? 3.查找成功与否? 4.查找的目的是什么? 5.查找表怎么分类? 6.如何评价查找算法? 7.查找的过程中我们要研究什么? 2.线性表…...
MySQL入门学习-深入索引.组合索引
在 MySQL 中,组合索引(也称为复合索引)是在多个列上创建的索引。以下是关于组合索引的详细信息: 一、组合索引的概念: - 组合索引是基于多个列创建的索引结构。它可以提高在这些列上进行查询的效率。 二、深入理解组…...
RABBITMQ的本地测试证书生成脚本
由于小程序要求必须访问wss的接口,因此需要将测试环境也切换到https,看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子,把要求输入几个来回,得到这样一个脚本: generate_cer…...
记录些Redis题集(4)
Redis 通讯协议(RESP) Redis 通讯协议(Redis Serialization Protocol,RESP)是 Redis 服务端与客户端之间进行通信的协议。它是一种二进制安全的文本协议,设计简洁且易于实现。RESP 主要用于支持客户端和服务器之间的请求响应交互…...
JVM:垃圾回收器
文章目录 一、介绍二、年轻代-Serial垃圾回收器三、老年代-SerialOld垃圾回收器四、年轻代-ParNew垃圾回收器五、老年代-CMS(Concurrent Mark Sweep)垃圾回收器六、年轻代-Parllel Scavenge垃圾回收器七、Parallel Old垃圾回收器八、G1垃圾回收器 一、介…...
Golang | Leetcode Golang题解之第228题汇总区间
题目: 题解: func summaryRanges(nums []int) (ans []string) {for i, n : 0, len(nums); i < n; {left : ifor i; i < n && nums[i-1]1 nums[i]; i {}s : strconv.Itoa(nums[left])if left < i-1 {s "->" strconv.It…...
单目3D和bev综述
文章目录 SOTA2D 检测单目3d检测3d bev cam范式1 Transformer attention is all you need 20172 ViT vision transformer ICLR 2021google3 swin transformer 2021 ICCV bestpaper MS4 DETR 20205 DETR3D 20216 PETR 20227 bevformerLSSbevdetcaddn指标 mAP NDS标注:…...
每日Attention学习11——Lightweight Dilated Bottleneck
模块出处 [TITS 23] [link] [code] Lightweight Real-Time Semantic Segmentation Network With Efficient Transformer and CNN 模块名称 Lightweight Dilated Bottleneck (LDB) 模块作用 改进的编码器块 模块结构 模块代码 import torch import torch.nn as nn import to…...
EM32DX-E4 IO 扩展模块
输入:0x6000-01 // 输入 0-15 6020H——00H IN0 计数【0~7】 ——01H IN0_SetCountMode S32 r/w 初始值默认为 0 设置 IN0 的计数方式:0 电平下 降沿,1 电平上升沿, 2 电平任意沿 ——02H IN0_Set…...
【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序【图文讲解】
欢迎来到CILMY23的博客 🏆本篇主题为:【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux…...
SpringBoot实战:多表联查
1. 保存和更新公寓信息 请求数据的结构 Schema(description "公寓信息") Data public class ApartmentSubmitVo extends ApartmentInfo {Schema(description"公寓配套id")private List<Long> facilityInfoIds;Schema(description"公寓标签i…...
解决mysql,Navicat for MySQL,IntelliJ IDEA之间中文乱码
使用软件版本 jdk-8u171-windows-x64 ideaIU-2021.1.3 mysql-essential-5.0.87-win32 navicat8_mysql_cs 这个问题我调试了好久,网上的方法基本上都试过了,终于是解决了。 三个地方结果都不一样。 方法一 首先大家可以尝试下面这种方法:…...
虚拟环境操作
1、对虚拟环境的操作 查看虚拟环境列表 conda env list 创建虚拟环境 conda create -n 虚拟环境名称 python3.x 激活虚拟环境 conda activate 虚拟环境名称 退出虚拟环境 conda deactivate 删除虚拟环境 conda remove -n 虚拟环境名称 all 2、对虚拟环境下的包的操作…...
企业网三层架构
企业网三层架构:是一种层次化模型设计,旨在将复杂的网络设计分成三个层次,每个层次都着重于某些特定的功能,以提高效率和稳定性。 企业网三层架构层次: 接入层:使终端设备接入到网络中来,提供…...
node.js的安装及学习(node/nvm/npm的区别)
一、什么是node、nvm和npm 1.Node.js node.js 一种Javascript编程语言的运行环境,能够使得javascript能够脱离浏览器运行。以前js只能在浏览器(也就是客户端)上运行,node.js将浏览器中的javascript运行环境进行封装的,…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
Yii2项目自动向GitLab上报Bug
Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...
多模态大语言模型arxiv论文略读(112)
Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文标题:Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文作者:Jea…...
