CSP-J模拟赛三补题报告

前言

挂了110pts(

在这里插入图片描述

⇑ \Uparrow
\hspace{14em} 有史以来最大傻逼
T1: 100 p t s \color{green}100pts 100pts
T2: 100 p t s → 80 p t s \color{green}100pts\color{yellow}\rightarrow\color{red}80pts 100pts80pts
T3: 100 p t s → 10 p t s \color{green}100pts\color{yellow}\rightarrow\color{red}10pts 100pts10pts
T4: 10 p t s \color{red}10pts 10pts

T1 IP地址(ip)

5min秒了,10min检查。

题main

时间限制:1秒 内存限制:256M

【题目描述】

IP 地址(Internet Protocol Address)是互联网上用于识别和定位设备的数字标识。它是一种由32位或 128 位二进制数字组成的地址,在IPv4和IPv6两个主要版本中使用。

IP地址的主要功能是标识和寻址设备,使其能够在互联网上进行通信。通过将IP地址分配给计算机、服务器、路由器和其他网络设备,数据包可以被正确地发送到目标设备。IP地址还用于确定网络中不同设备的位置,以便进行网络管理和故障排除。

总之,IP地址是互联网上用于标识和定位设备的数字标识,使设备能够在互联网上进行通信。IP地址的外观根据其版本而有所不同。以下是IPv4和IPv6两个主要版本的IP地址中IPv4地址示例:

192.168.0.1
172.16.254.1
10.0.0.1
208.75.57.100

接下来,我们有 N N N 个设备,每个设备都有它的名称和 IPv4 地址,现在我们有 Q Q Q 个问题,每次我们想知道给出的IPv4地址是哪一个设备?

【输入格式】

第一行,一个正整数 N N N ,表示有 N N N 个设备;

接下去 N N N 行,首先输入该设备的名称,数据保证该设备的名称只由英文大小写组成,其次再输入该设备的IPv4地址;

接下去一行,输入一个正整数 Q Q Q ,表示有 Q Q Q 次询问;

接下去 Q Q Q 行,每行一个 IPv4 地址。

【输出格式】

对于 Q Q Q 次询问,每次询问输出该IPv4 地址对应的设备名称。

【输入样例 1】

4
Main 192.168.0.1
caixukun 8.8.8.8
some 123.13.34.45
other 23.32.45.54
3
192.168.0.1
23.32.45.54
8.8.8.8

【输出样例1】

Main
other
Google

【数据范围】

对于 30% 数据, 1 ≤ N , M ≤ 100 1≤N,M≤100 1N,M100

对于 100% 数据,1≤N,M≤1000,设备的名称是只由大小写字母组成的长度小于等于100的字符串, I P v 4 IPv4 IPv4地址”a.b.c.d”满足 0 ≤ a , b , c , d ≤ 255 0≤a,b,c,d≤255 0a,b,c,d255

思路

用map,秒了

也可以打暴力

关于 map 的用法,详见这个。

AC Code

#include<bits/stdc++.h>
using namespace std;
map<string,string>mp;
int main()
{freopen("ip.in","r",stdin);freopen("ip.out","w",stdout);int n,q;string ipv4,dis;scanf("%d",&n);for(int i=1;i<=n;i++){cin>>dis>>ipv4;mp[ipv4]=dis;}scanf("%d",&q);for(int i=1;i<=q;i++){cin>>ipv4;cout<<mp[ipv4]<<"\n";}return 0;
} 

T2 是否同构(same)

题main

时间限制:1秒 内存限制:256M

【题目描述】

有两个长度为 N N N 的数组 a , b a,b a,b,我们想知道数组 a a a 和数组 b b b 是否是同构数组?
我们定义两个数组 a , b a,b a,b 同构,则存在一个整数 k k k,使得 0 ≤ k ≤ ⌊ n ÷ 2 ⌋ 0≤k≤⌊n\div2⌋ 0kn÷2 ,有保持数组 b 不动的时候,交换数组 a a a 的前 k k k 项和后 k k k 项交换位置,即 :
s w a p ( a ​ 1 , a ​ N − k + 1 ) , ⋯ , s w a p ( a ​ k , a ​ N ) swap(a_​1,a_​N−k+1),⋯,swap(a​k,a​N) swap(a1,aNk+1),,swap(ak,aN)​​ ,使得新的数组 a a a 完全相等于数组 b b b

【输入格式】

第一行输入一个正整数 T T T,表示有 T T T 组输入;
每组输入的第一行,输入一个正整数 N N N
第二行输入 N N N 个整数,表示数组 a a a
第三行输入 N N N 个整数,表示数组 b b b

【输出格式】

如果数组 a a a 和数组 b b b 同构,则输出 Yes ,否则,输出 No。

【输入样例 1】

3
3
1 2 3
3 2 1
4
3 1 2 4
4 3 1 2
5
2 3 1 4 5
5 3 1 4 2

【输出样例 1】

Yes
No
Yes

【数据范围与约定】

对于 30% 的数据有, 1 ≤ N ≤ 10 1≤N≤10 1N10

对于 100% 的数据有, 1 ≤ T ≤ 10 1≤T≤10 1T10 1 ≤ N ≤ 1 0 6 1≤N≤10^6 1N106 1 ≤ a ​ i , b ​ i ≤ N 1≤a​_i,b_​i ≤N 1ai,biN,且有 a i ≠ a j ( i ≠ j ) a_i≠a_j(i≠j) ai=aj(i=j)

思路

AC Code

#include<bits/stdc++.h>
using namespace std;
int a[1000005],b[1000005];
int main()
{//freopen("same.in","r",stdin);//freopen("same.out","w",stdout);int n,T;scanf("%d",&T);while(T--){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}for(int i=1;i<=n;i++){scanf("%d",&b[i]);}int weizhi=n>>1+1;for(;weizhi<=n;weizhi++){if(b[1]==a[weizhi]){break;}} int k=n-weizhi+1;for(int i=1;i<=k;i++){swap(a[i],a[n-k+i]);}                                           bool flag=1;for(int i=1;i<=n;i++){if(a[i]!=b[i]){flag=0;break;}}if(flag){printf("Yes\n");}else{printf("No\n");}}return 0;
}

对于一个字符,必定只有一个 k k k合法。
找到这个 k k k模拟一次,看 a , b a,b a,b是否相等。

T3 箱子(box)

思路

时间限制:1秒 内存限制:256M

【题目描述】

我们有 N N N 个箱子,每个箱子有自己的重量 w ​ i w_​i wi ,每次我们可以将至多 M M M 个箱子合并成一个重量为这几个箱子重量和的箱子,花费的体力是这合并的几个箱子的重量和。请问我们将这所有的箱子合并成一个箱子所需要花费的最少体力是多少?

【输入格式】

第一行,两个正整数 N , M N ,M NM ,表示有 N N N 个箱子,每次操作至多可以合并 M M M 个箱子。

第二行, N N N 个正整数,表示这 N N N 个箱子每个箱子的重量。

【输出格式】

输出一个正整数,表示我们最少需要花费的体力是多少。

【输入样例 1】

3 2
1 2 3

【输出样例 1】

9

【输入样例 2】

7 3
1 2 3 4 5 6 7

【输出样例 2】

49

【输入样例 3】

3 3
1 2 3

【输出样例 3】

6

【数据范围】

对于 30% 的数据, 2 ≤ M ≤ N ≤ 1 0 3 2≤M≤N≤10^3 2MN103

对于 100% 的数据, 2 ≤ M ≤ N ≤ 1 0 5 2≤M≤N≤10^5 2MN105,每个箱子的重量 1 ≤ w ​ i ​​ ≤ 1 0 6 1≤w​i​​ ≤10^6 1wi​​106​​ 。

思路

不足 M M M的用0补上
然后合并果子

AC Code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
priority_queue<long long>q;
int main()
{//freopen("box.in","r",stdin);//freopen("box.out","w",stdout);long long n,ans=0,m;scanf("%lld%lld",&n,&m);for(int i=1;i<=n;i++){long long t;scanf("%lld",&t);q.push(-t);}if((n-1)%(m-1)>0){int cnt=m-1-(n-1)%(m-1);while(cnt--){q.push(0);}
}while(q.size()>1) {long long cnt=0;for(int i=1;i<=m&&!q.empty();i++){long long now=-q.top();q.pop();cnt+=now;}q.push(-cnt);ans+=cnt;}printf("%lld",ans);return 0;
}

T4 社恐的聚会(party)

时间限制:1秒 内存限制:256M
【题目描述】

N N N 个患有社交恐惧症的人想参与一个聚会,但是这个聚会只有两张桌子,这些社恐们不想跟自己不认识的人坐在一起!

你是这次聚会的主办方,请你想想办法,看看能不能将这 N N N 个人分在两张桌子,使得每张桌子的任意两个人都是相互认识的。

如果你有办法让这 N N N 个人分在两张桌子,请你再想想办法看看能不能让这两张桌子中人数最多的一张桌子的入座人数最少呢?

【输入格式】

第一行输入一个整数 N N N ,表示有 N N N 个社恐。

接下去第 2 行至第 N + 1 N+1 N+1 行,每行 N N N 个为 0 或者 1 的整数,表示第 i − 1 i−1 i1 号人是否认识第 j j j 号人,如果为 0 ,表示第 i − 1 i−1 i1 号社恐不认识第 j j j 号社恐,否则为 1 ,表示第 i − 1 i−1 i1号社恐认识第 j j j 号社恐。(可以是第 i i i 号社恐认识第 j j j 号社恐,但是第 j j j 号社恐不认识第 i i i 号社恐)

【输出格式】

如果不能分成两张桌子坐下这 N N N 个人,请输出No;

否则,先输出Yes,然后再输出一个正整数,表示将这 N N N 个人安排入座之后的两张桌子中人数最多的那张入座人数最少是多少。

【输入样例 1】

3
0 1 1
1 0 1
0 1 0

【输出样例 1】

Yes
2

【输入样例 2】

3
0 0 0
0 0 0
0 0 0

【输出样例 2】

No

【输入样例 3】

4
0 1 1 1
0 0 1 1
0 1 0 1
1 0 0 0

【输出样例3】

Yes
2

【数据范围】

对于 30% 的数据, 1 ≤ N ≤ 20 1≤N≤20 1N20
对于100% 的数据, 1 ≤ N ≤ 512 , a [ i ] [ i ] = 0 1≤N≤512, a[i][i]=0 1N512,a[i][i]=0,其中 a [ i ] [ i ] a[i][i] a[i][i] 表示第i号社恐对自己的是否认识为“不认识”。

思路

二分图判定+分组背包

AC Code

#include<bits/stdc++.h>
#define ll long long 
using namespace std;
const int N=514;
int n,m,cnt,a[N][N],sz[N][2],col[N];
bool f[N];
bool vis[N];
bool dfs(int u,int c)
{vis[u]=1;col[u]=c;sz[cnt][c]++;for(int i=1;i<=n;i++){if(i!=u&&(!a[i][u]||a[u][i])){if(vis[i]){if(col[u]==col[i]){return false;}}else if(!dfs(i,1-c)){return false;}}}return true;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&a[i][j]);}}for(int i=1;i<=n;i++){if(!vis[i]){cnt++;if(!dfs(i,0)){printf("No\n");return 0;}}}m=n>>1;f[0]=1;for(int i=1;i<=cnt;i++){for(int j=m;;j++){if(j<sz[i][0]&&j<sz[i][1]){break;}if(j>=sz[i][0]){f[j]|=f[j-sz[i][0]];}if(j>=sz[i][0]){f[j]|=f[j-sz[i][1]];}}} for(int j=m;j>=1;j--){if(f[j]){printf("Yes\n%d",n-j);break;}}return 0;
}

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

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

相关文章

k8s架构,从clusterIP到光电半导体,再从clusterIP到企业管理

clusterIP作为k8s中的服务&#xff0c; 也是其他三个服务的基础 ~]$ kubectl create service clusterip externalname loadbalancer nodeport 客户端的流量到service service分发给pod&#xff0c;pod由控制器自动部署&#xff0c;自动维护 那么问题是service的可用…

【C++前缀和】1895. 最大的幻方|1781

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode1895. 最大的幻方 难度分&#xff1a;1781 一个 k x k 的 幻方 指的是一个 k x k 填满整数的方格阵&#xff0c;且每一行、每一列以及两条对角线的和 全部相…

ubuntu 设置静态IP

一、 ip addresssudo nano /etc/netplan/50-cloud-init.yaml 修改前&#xff1a; 修改后&#xff1a; # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-inits # ne…

360浏览器时不时打不开csdn

从百度或者csdn的搜索中打开&#xff0c;会发现打不开网页&#xff0c;以前也出现过&#xff0c;只是以为这篇文章被删了&#xff0c;昨天接连多个文章打不开&#xff0c;怀疑的浏览器的问题&#xff0c;复制网址到edge浏览器就打开了 刚刚又出现了&#xff0c;怀疑360会拦截某…

Elasticsearch——数据聚合、数据同步与集群搭建

目录 1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket 聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric 聚合语法1.2.5.小结 1.3.RestAPI 实现聚合1.3.1.API 语法1.3.2.业务需求1.3.3.业务实现 2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.自动补全查询2.4.…

使用百度文心智能体创建多风格表情包设计助手

文章目录 一、智能定制&#xff0c;个性飞扬二、多元风格&#xff0c;创意无限 百度文心智能体平台为你开启。百度文心智能体平台&#xff0c;创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台&#xff0c;集成了先进的自然语言处理技术和人工智能技术&…

C++ STL 初探:打开标准模板库的大门

文章目录 C STL 初探&#xff1a;打开标准模板库的大门前言第一章: 什么是STL&#xff1f;1.1 标准模板库简介1.2 STL的历史背景1.3 STL的组成 第二章: STL的版本与演进2.1 不同的STL版本2.2 STL的影响与重要性 第三章: 为什么学习 STL&#xff1f;3.1 从手动编写到标准化解决方…

C++网络编程之TCP协议

概述 TCP&#xff0c;即传输控制协议&#xff0c;英文全称为Transmission Control Protocol&#xff0c;是互联网协议套件中的核心协议之一。它工作在OSI七层模型的传输层&#xff0c;也工作在TCP/IP四层模型的传输层。TCP协议的主要目的是&#xff1a;在不可靠的网络环境中提供…

腾讯一面-LRU缓存

为了设计一个满足LRU&#xff08;最近最少使用&#xff09;缓存约束的数据结构&#xff0c;我们可以使用哈希表&#xff08;HashMap&#xff09;来存储键值对&#xff0c;以便在O(1)时间复杂度内访问任意键。同时&#xff0c;我们还需要一个双向链表&#xff08;Doubly Linked …

飞创龙门双驱XYZ直线模组高精度应用实例

飞创龙门双驱XYZ直线模组集超精密定位、高动态响应和灵活配置于一体&#xff0c;适用于电子制造行业&#xff08;点胶、组装、检测&#xff09;、半导体圆晶加工、芯片封装、激光切割、激光焊接、数控机床、精密检测及科研实验等&#xff0c;满足高精度、高动态的三维定位需求&…

NVIDIA Hopper 架构深入

在 2022 年 NVIDIA GTC 主题演讲中,NVIDIA 首席执行官黄仁勋介绍了基于全新 NVIDIA Hopper GPU 架构的全新 NVIDIA H100 Tensor Core GPU。 文章目录 前言一、NVIDIA H100 Tensor Core GPU 简介二、NVIDIA H100 GPU 主要功能概述1. 新的流式多处理器 (SM) 具有许多性能和效率…

Golang | Leetcode Golang题解之第452题用最少数量的箭引爆气球

题目&#xff1a; 题解&#xff1a; func findMinArrowShots(points [][]int) int {if len(points) 0 {return 0}sort.Slice(points, func(i, j int) bool { return points[i][1] < points[j][1] })maxRight : points[0][1]ans : 1for _, p : range points {if p[0] > …

docker下载mysql时出现Unable to pull mysql:latest (HTTP code 500) server error 问题

报错 Unable to pull mysql:latest (HTTP code 500) server error - Get “https://registry-1.docker.io/v2/”: EOF 解决方法 将VPN开到Global模式 解决啦

从面向过程(pop)到面向对象(oop)

文章目录 1. 情境2. 抛出问题3. 给出解决方案4. 方案存在的bug5. 补救措施6. 得出结论&#xff1a;该方案实际是不可行的7. 总结上述代码思考方式 -- 基于过程① 思考方式② 上述思考方式存在的问题基于过程的思维方式核心基于过程的思维方式的缺点 8. 转变思维&#xff0c;引出…

无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享

你知道怎么下载无水印视频素材吗&#xff1f;今天小编就给大家推荐十个高清无水印视频素材下载的网站&#xff0c;如果你也是苦于下载高清无水印的短视频素材&#xff0c;赶紧来看看吧&#xff5e; 1. 稻虎网 首推的是稻虎网。这个网站简直就是短视频创作者的宝库。无论你需要…

深度学习基础—残差网络ResNets

1.残差网络结构 当网络训练的很深很深的时候&#xff0c;效果是否会很好&#xff1f;在这篇论文中&#xff0c;作者给出了答案&#xff1a;Deep Residual Learning for Image Recognitionhttps://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/He_Deep_Residual_…

OpenAI o1 与 GPT-4o:前沿AI全面比较下你更倾向哪一款

前言 就在前不久&#xff0c;OpenAI 发布了推理能力更强可达理科博士生水准的o1 模型&#xff0c;业界也表示这标志着人工智能发展的新里程碑&#xff0c;特别是在复杂问题解决和推理方面。 然而&#xff0c;该模型与其前身GPT-4o有很大不同&#xff0c;后者仍然广泛用于通用…

Pix2Pix实现图像转换

tutorials/application/source_zh_cn/generative/pix2pix.ipynb MindSpore/docs - Gitee.com Pix2Pix概述 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;该模型是由Ph…

HUAWEI New4.9G 与 2.6G 无法正常切换问题处理案例

HUAWEI New4.9G 与 2.6G 无法正常切换问题处理案例 在某地市的 XX 音乐节保障准备期间&#xff0c;为确保活动期间的网络质量&#xff0c;现场新开了 4.9G HUAWEI 室外基站。在网络优化和测试中&#xff0c;发现UE无法实现从 2.6G 到 4.9G 的正常切换。虽然现场具备 4.9G信号覆…