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

2024河南萌新联赛第(三)场 河南大学

B. 正则表达式

题目:

https://ac.nowcoder.com/acm/contest/87865/B
给出n个地址,每个地址的形式为x.x.x.x,找四个x都满足x>=0&&x<=255的个数

思路:

首先定义四个数组和一个字符,然后按题目所给的形式输入,判断四个数组若都满足条件,ans++,最后输出ans。

AC代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
const int N=1100;
int a[N],b[N],c[N],d[N];
char s;
signed main()
{IOSint n,ans=0;cin>>n;for(int i=1;i<=n;i++){cin>>a[i]>>s>>b[i]>>s>>c[i]>>s>>d[i];if(a[i]>=0&&a[i]<=255&&b[i]>=0&&b[i]<=255&&c[i]>=0&&c[i]<=255&&d[i]>=0&&d[i]<=255)ans++;}cout<<ans<<'\n';
}

C. Circle

题目:

https://ac.nowcoder.com/acm/contest/87865/C
给出一个整数n,求n个圆可以分割的最大区域数

思路:

找规律,一开始看着样例直接写的pow(2,n),想简单了,又花了一下4,5个的情况,发现0,1的时候是pow(2,n),当n>1时,满足n*n-(n-2)

AC代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
signed main()
{IOSint t;cin>>t;while(t--){int n;cin>>n;if(n<2)cout<<pow(2,n)<<" ";else{cout<<n*n-(n-2)<<" ";}}
}

D. 开心消消乐(Right Version)

题目:

https://ac.nowcoder.com/acm/contest/87865/D
给定一个n个数的数列,可执行若干次操作,每次操作选定两个数𝑙,𝑟(1≤𝑙≤𝑟≤𝑛)l,r(1≤l≤r≤n),使得∀𝑖∈[𝑙,𝑟],𝑎i=ai⨁al。要求l一直递减。求让这个序列全部转换为0的最小操作次数。

思路:

​ 这个题比赛的时候过的人挺少,直接没看,后来别人给我说这道题特别简单,看了一眼真的特别简单,立马写出来。
因为题目已经限制l一直递减了,所以只需要定义一个数组,令a[0]=-1,从a[1]开始,如果a[i]!=a[i-1],就让ans++,最后得出的ans就是答案。

AC代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
const int N=2e6+20;
int a[N];
signed main()
{IOSint n,ans=0;a[0]=-1;cin>>n;for(int i=1;i<=n;i++){ cin>>a[i];if(a[i]!=a[i-1]){if(a[i]!=0)ans++;}}cout<<ans<<'\n';}

F.累加器

题目:

https://ac.nowcoder.com/acm/contest/87865/F
给出一个数n,每次加1,观察二进制下位数有几位变化,在加了k次1后总共变化了多少。

思路1:

1.跟第一次萌新联赛的题相似,1是每两次出现1次,2是每4次出现1次,依次类推n是每pow(2,n)出现1次
2.累加,令e=1;sum=sum+x/e;e*=2;当x<e的时候截止
3.再利用前缀和,用x+y次加1二进制下的改变量减去x次加1的改变量。

AC代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
const int N=2e6;int solve(int x)
{int e=1,sum=0;while(x>=e){sum=sum+x/e;e*=2;}return sum;
}signed main()
{IOSint t;cin>>t;while(t--){int x,y;cin>>x>>y;int ss=solve(x+y)-solve(x);cout<<ss<<'\n';}
}

思路2:

用异或写:
1.首先累加位数的改变量,用bitset定义p,q,s,然后令p=1,进入循环,令q=i,然后s=q^p,异或的性质是相同为0,不同为1,统计异或后1的个数,后面令p=q。不断循环累加异或后1的个数。存在数组a中
2.利用前缀和,a[y+x]-a[x]得出最后答案。

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#include<bitset>
int a[2000010];
bitset<64>p,q,s;int x,y,w=0;void solve()
{cin>>x>>y;cout<<a[y+x]-a[x]<<endl;
}signed main()
{IOSint t=1;cin>>t;p=1;for(int i=1;i<=2000010;i++){q=i;s=p^q;w+=s.count();a[i]=w;p=q;}while(t--){solve();}return 0; 
}

J.keillempkill学姐の卷积

题目:

https://ac.nowcoder.com/acm/contest/87865/J
给一个nn的矩阵和一个mm的矩阵(1≤n≤m≤20),卷积操作得出最后结果。
卷积操作是:比如nn比较小,就在mm的矩阵中从头开始先找出与nn数量相同的矩阵,对应位置分别相乘再相加,然后再让列加1,直到覆盖完全部的列,再把行加1,直到把整个mm的矩阵覆盖完全。最后输出一个(m-n+1)*(m-n+1)的矩阵。

思路:

1.首先看for循环吧nn和mm的矩阵输入
2.开for循环,i<=n;j<=n,x=0,y=0;累加ans+=a[i][j]*b[i+x][j+y];当in&&jn的时候就把此时的ans值存入数组里,如果此时的j+y!=0,就让y++否则x++,并且此时让y重置回0,当i+xm&&j+ym时说明m*m的矩阵已经全被覆盖,结束循环。
3.输出储存的ans的值,当**(i+1)%(m-n+1)==0**时,输出换行。

AC代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
int a[30][30],b[30][30],tt[1000];
signed main()
{IOSint n,m,ans=0,x=0,y=0,s=0;cin>>n>>m;int t=m-n+1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>a[i][j];for(int i=1;i<=m;i++)for(int j=1;j<=m;j++)cin>>b[i][j];for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){ans+=a[i][j]*b[i+x][j+y];//cout<<ans<<'\n';if(i==n&&j==n){//cout<<"0"<<'\n';tt[s++]=ans;if(i+x==m&&j+y==m){//tt[s++]=ans;break;}if(j+y!=m)y++;else{x++;y=0;}i=0,j=0;ans=0;//cout<<x<<" "<<y<<'\n';}}}//cout<<s<<'\n';//cout<<"-1"<<'\n';for(int i=0;i<s;i++){cout<<tt[i]<<" ";if((i+1)%t==0)cout<<'\n';}
}

L.SSH

题目:

https://ac.nowcoder.com/acm/contest/87865/L
1.输入m,n,q,m是密钥对,包含一个公钥和一个私钥;n是主机;q代表q次查询
2.输入m行,每行两个字符串代表一个公钥和一个私钥。
3.n组数据,包含一个字符串代表id,和一个整数k代表用户数量,然后是k行,每行一个字符串用户名,一个整数t表示公钥数量,t个字符串表示公钥
4.接下来q行,表示q次查询,每行一个字符串表示用户名,一个字符串表示用户id,一个字符串表示私钥。

思路:

首先用一个map来存公钥,然后再用两个map里面套vector来分别存用户名和私钥,然后利用for循环找是否有满足条件的(细节见代码注释),按要求输出。

AC代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
const int N=2e5+20;
signed main()
{IOSint m,n,q;cin>>m>>n>>q;map<string,string> a;for(int i=1;i<=m;i++){string s1,s2;cin>>s1>>s2;a[s2]=s1;}map<string,vector<string> > s;map<string,vector<string> > b;for(int i=1;i<=n;i++){string t;int k;cin>>t>>k;for(int j=1;j<=k;j++){string user;cin>>user;s[t].push_back(user);int tt;cin>>tt;for(int cnt=1;cnt<=tt;cnt++){string ss;cin>>ss;b[user].push_back(ss);}}}for(int i=1;i<=q;i++){string s1,s2,s3;cin>>s1>>s2>>s3;int flag=0;for(auto t : s[s2])//将该ip对应的用户名赋给t{if(t==s1)//如果该ip对应的用户名中包含s1{flag=1;break;}}if(flag==0)cout<<"No"<<'\n';else{string ans=a[s3];//所要查询私钥对应的公钥int f=0;for(auto t : b[s1])//将该ip该用户有的公钥赋给t{if(t==ans)//如果该ip该用户有的公钥中有所要查询私钥对应的公钥{f=1;break;}}if(f==0)cout<<"No"<<'\n';elsecout<<"Yes"<<'\n';}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 自闭症儿童上普校真的好吗
  • 基于boost asio实现的定时器
  • C++后端开发找了一个MFC桌面开发的实习(已投降)
  • 【软件设计书】详细设计说明书和概要设计说明书(Word原件直接套用)
  • idea的git与SVN切换
  • 前端初期知识点回顾
  • 运行pytorch自带的单元测试
  • MySQL:ORDER BY 排序查询
  • BEVGPT展示自动驾驶的“全知视角”,预测决策规划三合一的革新之作!
  • 51单片机嵌入式开发:21、STC89C52R控制抢答器+数码管+后台显示+LCD1602x显示
  • 排序算法详解
  • 昇思25天学习打卡营第13天 |昇思MindSpore 基于 MindSpore 实现 BERT 对话情绪识别
  • 非插件实现给wordpress添加社交软件的分享按钮
  • 运维工作中的事件、故障排查处理思路
  • OpenAI突然上线两件“杀手锏”:势在维持大模型霸主地位
  • 《深入 React 技术栈》
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【知识碎片】第三方登录弹窗效果
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Linux中的硬链接与软链接
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Mysql数据库的条件查询语句
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • spring boot 整合mybatis 无法输出sql的问题
  • Swoft 源码剖析 - 代码自动更新机制
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 一个SAP顾问在美国的这些年
  • 找一份好的前端工作,起点很重要
  • 【干货分享】dos命令大全
  • $GOPATH/go.mod exists but should not goland
  • (2020)Java后端开发----(面试题和笔试题)
  • (a /b)*c的值
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (阿里云万网)-域名注册购买实名流程
  • (八)c52学习之旅-中断实验
  • (二)windows配置JDK环境
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (推荐)叮当——中文语音对话机器人
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一) storm的集群安装与配置
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET CLR基本术语
  • .NET开源快速、强大、免费的电子表格组件
  • .NET序列化 serializable,反序列化
  • :“Failed to access IIS metabase”解决方法
  • @PreAuthorize与@Secured注解的区别是什么?
  • @RequestMapping用法详解
  • [000-01-030].Zookeeper学习大纲
  • [C++] vector list 等容器的迭代器失效问题
  • [C++提高编程](三):STL初识