模拟赛四补题报告————S12678

一,分数报告

T1100分
T2100分
T30分
T420分
总分220分

二,赛中概括

前两题1小时做完。后两题骗了20分。

三,题目解析

三个(three)

1.1 问题描述

现在科学家在培养 A,B,C三种微生物,这三种微生物每一秒都会繁殖出新的微生物,具体规则为:

A类微生物每一秒会繁殖出 1个 A 类微生物,1 个 B 类微生物,1 个 C 类微生物。
B 类微生物每一秒会繁殖出 2 个 A 类微生物,2 个 C 类微生物。
C 类微生物每一秒会繁殖出 1 个 A 类微生物,1 个 B 类微生物。

假设所有的微生物都不会死亡,一开始培养皿中有 A,B,C 三种微生物各 1 个,现在问你 n 秒后 A,B,C 三种微生物分别有奇数个还是偶数个。

1.2 输入格式

从文件 three.in 中读取数据。

一行一个整数 nn。

1.3 输出格式

输出到文件 three.out 中。

输出总共三行:

第一行:若 n 秒后 A 类微生物有奇数个,输出 odd,否则输出 even
第二行:若 n 秒后 B 类微生物有奇数个,输出 odd,否则输出 even
第三行:若 n 秒后 C 类微生物有奇数个,输出 odd,否则输出 even

1.4 输入样例1
5

1.5 输出样例1
odd
odd
odd
1.6 输入样例2
4
1.7 输出样例2
 
odd
odd
even
1.8 输入样例3
 
233
1.9 输出样例3
even
even
odd
1.10 数据描述

总共 20 个测试点:

对于测试点 1∼4:1≤n≤3。
对于测试点 5∼8:1≤n≤100。
对于测试点 9∼20:1≤n≤10^6。

一道暴力水题,注意开long long,否则大数据爆掉。

AC代码

#include<bits/stdc++.h>
using namespace std;
long long n,a[1000006],b[1000006],c[1000006];
int main(){//freopen("three.in","r",stdin);别写错!!!!!!//freopen("three.out","w",stdout);cin>>n;a[0]=b[0]=c[0]=1;for(int i=1;i<=n;i++){a[i]=a[i-1]*2+b[i-1]*2+c[i-1];//累加微生物a,b,c的数量。b[i]=a[i-1]+c[i-1]+b[i-1];c[i]=a[i-1]+b[i-1]*2+c[i-1];}if(a[n]%2==0){//判断奇偶cout<<"even";}else{cout<<"odd";}cout<<'\n';if(b[n]%2==0){cout<<"even";}else{cout<<"odd";}cout<<'\n';if(c[n]%2==0){cout<<"even";}else{cout<<"odd";}fclose(stdin);fclose(stdout);return 0;
} 

合体(fit)

2.1 问题描述

现在有 n 个大小范围在 1∼m 中的整数 a1∼an,并且你获得了一项魔法能力。
施加一次魔法能力后,可以将两个相同的数字合并成一个数字,并且这个数字为原来的数字 +1,例如:

有 2,2 这两个数字,施加一次魔法能力后可以将这两个数字合并成一个数字 3。

现在有 q 次询问,每次询问给你一个整数 x,你可以施加任意次数魔法能力,问你这 n 个整数最多能得到多少个整数 x?

2.2 输入格式

从文件 fit.in 中读取数据。

第一行两个整数 n,m。
第二行 nn 个整数 a1,a2,a3∼an。
第三行一个整数 q。
接下来 q 行,每行一个整数 x。

2.3 输出格式

输出到文件 fit.out 中。

输出 q 行,对于每个询问,输出对应的答案。

2.4 输入样例
104////////////////
1112134123
5//////////////////
1//////////////////
2//////////////////
3//////////////////
4//////////////////
4//////////////////
2.5 输出样例
5
4
4
3
3
2.6 数据描述

总共 20 个测试点:

对于测试点 1∼4:1≤n≤10,1≤m≤10,1≤ai≤m,1≤q≤10,1≤x≤m
对于测试点 5∼6:1≤n≤10^6,m=1,ai=1,q=1,x=1
对于测试点 7∼8:1≤n≤10^6,m=5,1≤ai≤m,1≤x≤m,1≤q≤m
对于测试点 9∼20:1≤n≤10^6,1≤m≤10^6,1≤ai≤m,1≤x≤m,1≤q≤m

桶排序求合并后,打表求结果。差不多是

你会AK-IOI吗?

死铁

原版2048

70分代码

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1000006],b[1000006],c[1000006],d[1000006],q,e[1000006];
int main(){freopen("fit.in","r",stdin);freopen("fit.out","w",stdout);cin>>n>>m;for(int i=1;i<=n;i++){scanf("%lld",&a[i]);b[a[i]]++;c[a[i]]++;}for(int i=1;i<m;i++){c[i+1]+=c[i]/2;c[i]%=2;}for(int i=1;i<=m;i++){d[i]=c[i]-b[i];}long long cnt=0;cin>>q;while(q--){int x;scanf("%d",&x);for(int i=m;i>=x;i--){e[i]=c[i]+cnt;cnt=cnt*2;cnt+=2*d[i];}printf("%lld\n",e[x]);}fclose(stdin);fclose(stdout);return 0;
} 

AC代码AK-IOI

​
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1000006],b[1000006],c[1000006],d[1000006],q,e[1000006];
int main(){freopen("fit.in","r",stdin);freopen("fit.out","w",stdout);cin>>n>>m;for(int i=1;i<=n;i++){scanf("%lld",&a[i]);b[a[i]]++;//合并前c[a[i]]++;}for(int i=1;i<m;i++){//合并后c[i+1]+=c[i]/2;c[i]%=2;}for(int i=1;i<=m;i++){d[i]=c[i]-b[i];}long long cnt=0;for(int i=m;i>=1;i--){//打表过样例e[i]=c[i]+cnt;cnt=cnt*2;cnt+=2*d[i];}cin>>q;while(q--){int x;scanf("%d",&x);printf("%lld\n",e[x]);}fclose(stdin);fclose(stdout);return 0;
} ​

矩阵(matrix)

3.1 问题描述

现在给你一个 n 行 m 列的矩阵,矩阵上每个格子有一个整数,其中第 i 行第 j 列对应的格子上的整数为 gi,j。
现在定义该矩阵的一个子矩阵的快乐值为该子矩阵上的所有数字的异或和。

一组数字 a1,a2,...,an 的异或和为 a1 xor a2 xor ... xor an​​。(其中 xor 表示按位异或运算)

现在问你,该矩阵的所有子矩阵的快乐值之和为多少?

3.2 输入格式

从文件 matrix.in 中读取数据。

第一行两个整数 n,m。
接下来 n 行,每行 m 个整数,表示该矩阵。

3.3 输出格式

输出到文件 matrix.out 中。

一行一个整数,表示答案。

3.4 输入样例
54////
3212
3355
8736
1111
2399
3.5 输出样例
822
3.6 数据描述

总共 20 个测试点:

对于测试点 1∼4:1≤n,m≤10,0≤gi,j<2^10
对于测试点 5∼6:1≤n,m≤300,gi,j=1
对于测试点 7∼12:1≤n,m≤300,0≤gi,j≤1
对于测试点 13∼20:1≤n,m≤300,0≤gi,j<2^10

二位前缀异或和+按位高精度

20分代码

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[305][305],b[305][305],cnt=0,x[305],xo[305];
int main(){//freopen("matrix.in","r",stdin);//freopen("matrix.out","w",stdout);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%lld",&a[i][j]);b[i][j]=a[i][j]^b[i-1][j]^b[i][j-1]^b[i-1][j-1]; }}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int x=i;x<=n;x++){for(int y=j;y<=m;y++){cnt+=(b[x][y]^b[i][j]^b[i][y-1]^b[x-1][j]);}}}}cout<<cnt;fclose(stdin);fclose(stdout);return 0;
} 

AC代码

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[305][305],b[305][305],cnt=0,x[305],xo[305];
int main(){freopen("matrix.in","r",stdin);freopen("matrix.out","w",stdout);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%lld",&a[i][j]);}}for(int s=1;s<=n;s++){memset(x,0,sizeof(x));for(long long e=s;e<=n;e++){for(long long  j=1;j<=m;j++){x[j]=a[e][j]^x[j];//位运算xo[j]=xo[j-1]^x[j];}for(long long i=0;i<10;i++){long long cnt0=1,cnt1=0;for(long long k=1;k<=m;k++){//按位求权值if(xo[k]&(1<<i)){cnt+=1ll*(1<<i)*cnt0;cnt1++;}else{cnt+=1ll*(1<<i)*cnt1;cnt0++;}}}}}cout<<cnt;fclose(stdin);fclose(stdout);return 0;
} //时间复杂度O(n^2 m)

原神,启动

4.1 问题描述

给你一个长度为 n 的数列 a1,a2,...,an​​。
再给你一个长度为 m 的数列 b1,b2,...,bm。
现在再再再给你一个正整数 p,让你生成一个长度为 n×m 的数列 c1,c2,...,cn×m。
其中满足 c(i−1)×m+j=(ai+bj) mod p。
现在问你数列 c 中有多少个数对 (i,j) 满足 i<j 且 ci>cj?

4.2 输入格式

从文件 pair.in 中读取数据。

第一行两个整数 n,m,p。
第二行 nn 个整数,表示 a1∼an。
第三行 mm 个整数,表示 b1∼bm​​。

4.3 输出格式

输出到文件 pair.out 中。

一行一个整数,表示答案。

4.4 输入样例
6710////////
114514//
1919810
4.5 输出样例
294
 

4.6 数据描述

总共 20 个测试点:

 
对于测试点 1∼4:1≤n,m≤100,1≤p≤10,0≤ai,bi<p
对于测试点 5∼6:1≤n,m≤1000,1≤p≤10,0≤ai,bi<p
对于测试点 7∼8:1≤n,m≤1000000,p=2,0≤ai,bi<p
对于测试点 9∼20:1≤n,m≤1000000,1≤p≤10,0≤ai,bi<p
30分代码
#include<bits/stdc++.h>
using namespace std;
long long n,m,p,a[1000006],b[1000006],cnt=0;
long long c[10000007];
int main(){freopen("pair.in","r",stdin);freopen("pair.out","w",stdout);cin>>n>>m>>p;for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=m;i++)scanf("%d",&b[i]);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){c[(i-1)*m+j]=(a[i]+b[j])%p;}}for(int i=1;i<n*m;i++){for(int j=i+1;j<=n*m;j++){if(c[i]>c[j]){cnt++;} }}cout<<cnt;fclose(stdin);fclose(stdout);return 0;
} 

 

因为p<=10,所以可以高精度+分部讨论。

理论存在,魔法开始!!!

 AC代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5, M=1e6+5;
bool flag=0;//特殊样例全0
int n, m, p, a[M], b[M];
ll num[10], numb[M], nixu[10];//nixu[i]表示b数组+i之后的逆序对个数
ll ans[200], cnt=0;
void jia(ll k){ans[0]+=k;int pos=0;while(1){if(ans[pos]>=1000000){//压位高精,一个变量存6位,不再存1位ans[pos+1]+=ans[pos]/1000000;ans[pos]%=1000000;if(++pos>cnt){cnt++;}}else break;}
}
int main(){cin >> n >> m >> p;for(int i=1; i<=n; i++) {cin >> a[i];if(a[i]!=0) flag=1;}for(int i=1; i<=m; i++){cin >> b[i];if(b[i]!=0) flag=1;numb[b[i]]++;}//预处理,nixu[i]存储a[i]加到b[1]~b[m]各个数上的逆序对数for(int j=0; j<p; j++){//a、b数组范围在0~9,打表预处理,memset(num, 0, sizeof num);for(int i=1; i<=m; i++){//枚举bfor(int k=b[i]+1; k<p; k++){//k=b[(i+j)%p]+1;//保证数字比b[i]大nixu[j] += num[k];}num[b[i]]++;//num[(i+j)%p]++;//记录b[i]次数,为下次循环准备b[i]=(b[i]+1)%p;//注释掉//保证自增,代替掉模拟a[i]+b[j]的枚举,因为a、b数组元素皆<p}}memset(num, 0, sizeof num);//ll ans=0;for(int i=1; i<=n; i++){//ans+=nixu[a[i]];//块内的逆序对数量,c[(i-1)%m+1]~c[(i-1)*m+m]jia(nixu[a[i]]);for(int j=0; j<p; j++){int x=(j+a[i])%p;//某一个c的值for(int k=x+1; k<p; k++){//ans+=1ll*numb[j]*num[k];//块与块之间的个数(nm太大只能求块与块加、间的),不做优化30ll x=1ll*numb[j]*num[k];jia(x);}}for(int j=0; j<p; j++){num[(j+a[i])%p]+=numb[j];}}if(!flag) cout << 0;else{cout << ans[cnt];for(int i=cnt-1; i>=0; i--){printf("%06lld", ans[i]);}}return 0;
}

你要AKIOI吗???

《孤勇者》 by:leecholas

都是勇敢的 你屏上的RE 你的 不同 你犯的错
都不必隐藏 你破旧的草稿 你的 代码 你的自傲
他们说 要带着光 驯服每一个 WA
他们说 要缝好你的伤 而代价是抄袭
为何孤独 不可 光荣
人只有不完美 值得歌颂
谁说轮轮WA的不算英雄
爱你孤身走考场 爱你坚持的模样
爱你对峙过 NOI
不肯哭一场
爱你和我那么像
AC是幻想?
去吗?配吗?以最菜的技术
战吗?战啊!以最卑微的梦
致那机房中的呜咽与怒吼
谁说天天AC的才算英雄
他们说要戒了你的狂 就像擦掉了答辩
他们说要拿到数据点 而代价是抄袭
那就让我 不可 阻挡
你一样骄傲着 那种孤勇
谁说次次 TLE 不算英雄
爱你孤身走考场 爱你坚持的模样
爱你对峙过 NOI
不肯哭一场
爱你最菜的编译
却敢压最凶的题
爱你和我那么像
AC是幻想?
去吗?配吗?以最菜的技术
战吗?战啊!以最卑微的梦
致那机房中的呜咽与怒吼
谁说天天AK的才算英雄
你的斑驳 与众不同
你的沉默 震耳欲聋
爱你孤身走考场 爱你坚持的模样 爱你对峙过 NOI
不肯哭一场
你将你行行代码
在记录之上
去吗?去啊!以卑微的技术
战吗?战啊!以孤高的性格
致那机房中的呜咽与怒吼
谁说天天AC的才算英雄

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

降压芯片TPS54821

降压芯片TPS54821 介绍 价格低廉&#xff0c;只需1.5元。是一个同步整流降压BUCK电路。MOS管内置。输入电压为4.5V至17V&#xff0c;输出电压为0.6V到15V&#xff0c;输出电流最大到8A。是QFN封装&#xff0c;焊接时有些许困难。得益于QFN封装&#xff0c;其引线电感非常的小…

【深入理解SpringCloud微服务】手写实现断路器算法

【深入理解SpringCloud微服务】手写实现断路器算法 断路器状态切换断路器接口断路器算法实现相关属性failed()success()canPass() 断路器状态切换 在分析断路器算法前&#xff0c;我们先复习一下断路器的状态转换。 断路器一般有三个状态&#xff1a;关闭、打开、半开。 断路…

PP-Structure 快速入门

PP-Structure 快速入门 1. 环境准备2.快速使用2.1 命令行使用2.1.1 图像定位布局分析表格识别2.1.2 布局分析表格识别2.1.3 布局分析2.1.4 表格识别2.1.5 关键信息提取2.1.6 布局恢复2.2 python 脚本使用2.2.1 图像方向布局分析表格识别2.2.2 布局分析表格识别2.2.3 布局分析2…

正则表达式匹配英文字符

正则表达式匹配英文 20 个字符&#xff0c;包括大写&#xff0c;小写。 根据搜索结果&#xff0c;看到 honeymoose 分享过一个正则表达式的要求是: 匹配 20 个英文字符(大写、小写都包括)。 那么这个正则表达式可以写成: ^[a-zA-Z]{20}$解释一下: ^ 表示匹配字符串的开始[a-z…

pWnos1.0 靶机渗透 (Perl CGI 的反弹 shell 利用)

靶机介绍 来自 vulnhub 主机发现 ┌──(kali㉿kali)-[~/testPwnos1.0] …

EtherCAT 转 EtherNet/IP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899协议转换通信网关 EtherCAT 转 EtherNet/IP GW系列型号 MS-GW12 概述 MS-GW12 是 EtherCAT 和 EtherNet/IP 协议转换网关&#xff0c;为用户提供两…

基于Vue的汽车维修配件综合管理系统设计与实现SpringBoot后端源码

目录 1. 系统背景 2. 系统目标 3. 功能模块 4. 技术选型 5. 关键技术点 6. 实现步骤 7. 项目意义 8. 后期展望 1. 系统背景 市场需求分析&#xff1a;随着汽车保有量的不断增加&#xff0c;汽车维修和保养的需求日益增长。车主对维修质量和配件质量的要求也越来越高。汽…

安全防护检测数据集 3500张 PPE 动火 带标注 voc yolo 12类

安全防护检测数据集 3500张 PPE 动火 带标注 voc yolo 分类名: (图片张数&#xff0c; 标注个数) he Imet: (3649&#xff0c;10494) no_ goggles: (2197&#xff0c;4545) no_ mask: (2986&#xff0c; 6918) no_ vest: (2602&#xff0c; 7462) boots: (1802&#xff0c; 765…

VirtualBox虚拟机连接宿主机并能够上网(小白向)

现存问题 windows系统主要使用vmare和virtualbox两种虚拟机&#xff0c;virtualbox相对于vmare更加轻便&#xff0c;但少有博客能够详细说明使用virtualbox的教程。踩了网上的坑后&#xff0c;决定写一篇文章介绍virtualbox虚拟机上网的流程。 需求 1. virtualbox虚拟机与宿主机…

一篇文章搞懂Android 刷卡器对接:RS232 DB9串口通讯,通讯设置,刷卡器API介绍;代码示例;MDB协议;

目录 前言 在一些国家,还没有普及扫码支付的时候,消费者会纸币、硬币或者刷卡进行支付,这里我们讲解一下刷卡支付。 在市面上,有哪家刷卡器公司可以说的上是开通了很多国家的支付银行,那么Nayax和Pax可以说的上是名列前茅,他们适配了很多国家,对接其他国家的银行,让我…

ChatGPT 更新 Canvas 深度测评:论文写作这样用它!

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 ChatGPT又又更新了&#xff1a;基于ChatGPT 4o模型的Canvas 写作和代码功能。目前&#xff0c;仅针对Plus和Team用户。是一个独立的模块&#xff0c;如下所示&#xff1a; 官方…

ISO IEC 18004 2024/2015 Chinese 下载

ISO_IEC 18004 2024.pdf - 蓝奏云文件大小&#xff1a;40.3 M|https://610402220623.lanzouq.com/iqZ122bnx0yjISO IEC 18004-2015 zh-CN.pdf - 蓝奏云文件大小&#xff1a;34.1 M|https://610402220623.lanzouq.com/iEXSB2bnx0hc

G. Gears (2022 ICPC Southeastern Europe Regional Contest. )

G. Gears 思路&#xff1a; 本身这个题并不难&#xff0c;奈何卡了很久后看了题解才做出来&#xff0c;感觉自己好笨。 很容易想到的是&#xff0c;只要确定了一个齿轮的位置&#xff0c;其他齿轮的位置都可以直接推出来。所以当前目标是如何确定第一个齿轮的位置。 令 x [ i …

系统守护者:使用PyCharm与Python实现关键硬件状态的实时监控

目录 前言 系统准备 软件下载与安装 安装相关库 程序准备 主体程序 更改后的程序&#xff1a; 编写.NET程序 前言 在现代生活中&#xff0c;电脑作为核心工具&#xff0c;其性能和稳定性的维护至关重要。为确保电脑高效运行&#xff0c;我们不仅需关注软件优化&#xf…

Koa2项目实战2(路由管理、项目结构优化)

添加路由&#xff08;处理不同的URL请求&#xff09; 路由&#xff1a;根据不同的URL&#xff0c;调用对应的处理函数。 每一个接口服务&#xff0c;最核心的功能是&#xff1a;根据不同的URL请求&#xff0c;返回不同的数据。也就是调用不同的接口返回不同的数据。 在 Node…

数据服务-备份服务(rsync)

1. 概述 特点&#xff1a; 1. rsync是个服务也是命令 2. 使用方便,具有多种模式 3. 传输数据的时候是增量传输 1.1 增量与全量 1. 增量&#xff1a;只会把修改&#xff0c;新建的内容推走 2. 全量&#xff1a;无论数据多少全部推送 1.2 把/etc/目录传输到另一台机器的/tmp/下面…

安卓 /proc 目录详解:从内核到进程的桥梁

在安卓系统中&#xff0c;/proc 目录是开发者、调试者、甚至是普通用户深入了解系统状态、性能及行为的一个重要入口。这个虚拟文件系统不仅包含了丰富的内核信息&#xff0c;还反映了运行中的每个进程的状态。 /proc 文件系统 /proc 文件系统&#xff08;procfs&#xff09;是…

前端编程艺术(3)---JavaScript

目录 1.JavaScript 1.输出 2.变量和数据类型 3.运算符 4.数组 5.函数 6.面向对象 7.ES6面向对象 2.BOM 1.document对象 3.DOM 4.JSON 1.JavaScript JavaScript是一种脚本编程语言&#xff0c;通常用于为网页增加交互性和动态效果。它是一种高级语言&#xff…

C++ 算法学习——1.6 差分算法与二维差分算法

一维差分算法概述&#xff1a; 差分算法是一种用于计算序列中相邻元素之间差值的技术。在C中&#xff0c;STL&#xff08;标准模板库&#xff09;提供了std::adjacent_difference函数来实现差分算法。 std::adjacent_difference函数&#xff1a; std::adjacent_difference函数位…

余承东直播论道智能驾驶:激光雷达不可或缺,华为ADS 3.0引领安全创新

华为余承东:激光雷达,智能驾驶安全性的关键 9月29日,华为消费者业务集团CEO余承东在一场引人注目的直播中,与知名主持人马东就智能驾驶技术的最新进展进行了深入交流。在这场直播中,余承东针对激光雷达在智能驾驶中的必要性问题,发表了明确且深刻的观点,引发了业界和公众…