AcWing第 105 场周赛

news/2024/11/15 6:59:22/

    AcWing 5029. 极值数量

给定一个长度为 n� 的整数数组 a1,a2,…,an�1,�2,…,��。

如果一个元素左右两边均有相邻元素(也就是不位于数组的两端),且满足以下两个条件之一:

  • 该元素的值严格大于其左右相邻元素的值
  • 该元素的值严格小于其左右相邻元素的值

则称该元素为一个极值元素。

请你计算,给定数组中有多少个极值元素。

输入格式

第一行包含整数 n�。

第二行包含 n� 个整数 a1,a2,…,an�1,�2,…,��。

输出格式

一个整数,表示极值元素的数量。

数据范围

前 33 个测试点满足 1≤n≤51≤�≤5。
所有测试点满足 1≤n≤10001≤�≤1000,1≤ai≤10001≤��≤1000。

输入样例1:

3
1 2 3

输出样例1:

0

输入样例2:

4
1 5 2 5

输出样例2:

2
#include<iostream>
using namespace std;
int main(){int n;cin>>n;int a[n];int cnt = 0;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<n;i++){if(i!=0&&i!=n-1){if(a[i]<a[i-1]&&a[i]<a[i+1]) cnt++;if(a[i]>a[i-1]&&a[i]>a[i+1]) cnt++;}}cout<<cnt; return 0;
} 

     AcWing 5030. 核心元素

给定一个长度为 n� 的整数数组 a1,a2,…,an�1,�2,…,��,数组中的每个元素都是一个 1∼n1∼� 之间的整数。

我们规定,数组中出现次数最多的元素为数组的核心元素,例如数组 [1,1,1,2,3][1,1,1,2,3] 的核心元素为 11。

此外,如果数组中出现次数最多的元素不唯一,则出现次数最多的元素中数值最小的那个元素为数组的核心元素,例如数组 [1,2,2,3,3][1,2,2,3,3] 的核心元素为 22。

对于 1≤i≤n1≤�≤� 的每个整数 i�,请你计算有多少个给定数组的非空连续子数组的核心元素为 i�。

输入格式

第一行包含整数 n�。

第二行包含 n� 个整数 a1,a2,…,an�1,�2,…,��。

输出格式

共一行,输出 n� 个整数,其中第 i� 个整数表示给定数组中核心元素为 i� 的非空连续子数组的数量。

数据范围

前 33 个测试点满足 1≤n≤101≤�≤10。
所有测试点满足 1≤n≤50001≤�≤5000,1≤ai≤n1≤��≤�。

输入样例1:

4
1 2 1 2

输出样例1:

7 3 0 0

输入样例2:

3
1 1 1

输出样例2:

6 0 0
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;const int N = 5010;int a[N];int cnt[N][5010];
int ans[N];
int main()
{int n;scanf("%d", &n);for (int i = 1; i <= n; i ++ ){scanf("%d",&a[i]);for(int j=1;j<=n;j++){if(j==a[i]) cnt[i][j]=cnt[i-1][j]+1;else cnt[i][j]=cnt[i-1][j];//每个数字出现次数的前缀和}}for(int i=1;i<=n;i++){ans[a[i]]++;int id=a[i];int mx=1;for(int j=i+1;j<=n;j++){//cout<<i<<" "<<j<<" "<<id<<endl;if(cnt[j][a[j]]-cnt[i-1][a[j]]>mx || (cnt[j][a[j]]-cnt[i-1][a[j]]==mx && a[j]<id)){mx=cnt[j][a[j]]-cnt[i-1][a[j]];//直接进行比较,每新遍历一个数就与原来的最大值比较id=a[j];}ans[id]++;}}for(int i=1;i<=n;i++) printf("%d ",ans[i]);
}

    AcWing 5031. 矩阵扩张

给定一个 1×11×1 的方格矩阵,方格为白色:

你需要对该矩阵进行 k� 次扩张操作,并输出最终得到的矩阵。

扩张操作的具体规则如下。

首先,给定一个 n×n�×� 的方格矩阵,其中的每个方格要么是白色,要么是黑色,称此矩阵为模板矩阵。

在进行扩张操作时,当前矩阵中的每个方格都将扩张为一个 n×n�×� 的方格矩阵,其中:

  • 每个白色方格扩张得到的方格矩阵与模板矩阵相同。
  • 每个黑色方格扩张得到的方格矩阵只包含黑色方格。

下面举例进行说明。

令 n=2,k=3�=2,�=3,模板矩阵如下所示:

每一次扩张时,每个白色方格会扩张为

每一次扩张时,每个黑色方格会扩张为

第 11 次扩张后,得到一个 2×22×2 的方格矩阵:

第 22 次扩张后,得到一个 22×2222×22 的方格矩阵:

第 33 次扩张后,得到一个 23×2323×23 的方格矩阵:

这就是最终得到的矩阵。

输入格式

第一行包含两个整数 n,k�,�。

接下来 n� 行,每行包含 n� 个字符,每个字符要么为 .,要么为 *,其中第 i� 行第 j� 个字符用来描述模板矩阵第 i� 行第 j� 列的方格颜色,. 表示白色,* 表示黑色。

保证模板矩阵中至少包含一个白色方格。

输出格式

输出一个 nk×nk��×�� 的字符矩阵,用来表示最终得到的矩阵。

. 表示白色方格,* 表示黑色方格。

数据范围

所有测试点满足 2≤n≤32≤�≤3,1≤k≤51≤�≤5。

输入样例1:

2 3
.*
..

输出样例1:

.*******
..******
.*.*****
....****
.***.***
..**..**
.*.*.*.*
........

输入样例2:

3 2
.*.
***
.*.

输出样例2:

.*.***.*.
*********
.*.***.*.
*********
*********
*********
.*.***.*.
*********
.*.***.*.

 

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 5010;
char s[N][N],g[N][N];
char a[N][N];
int n,m,k;
int main()
{cin>>n>>k;int kk=k;int m=n;k--;for(int i=0;i<n;i++){for(int j=0;j<n;j++)cin>>a[i][j],s[i][j]=a[i][j];}while(k--){for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(s[i][j]=='.'){for(int x=0;x<m;x++){for(int y=0;y<m;y++){g[i*m+x][j*m+y]=a[x][y];    }}}
return 0;
}

 

 


http://www.ppmy.cn/news/105366.html

相关文章

(浙大陈越版)数据结构 第三章 树(上) 3.4 小白专场:树的同构(PTA编程题讲解)

题意理解和二叉树表示 给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换变成T2&#xff0c;则称两棵树是“同构”的。 eg1&#xff1a;现请你判断如下两棵树&#xff08;左侧为T1&#xff0c;右侧为T2&#xff09;是否为同构树&#xff1f; 显然T1可以通过有限次左右孩子…

nSoftware IPWorks 2022 C++ Crack

nSoftware IPWorks 2022 C最全面的互联网组件套件&#xff0c;PKI 代理远程签署代码和文档&#xff0c;无需暴露您的私钥&#xff0c;一种安全的自托管解决方案&#xff0c;可使用集中存储的密钥实现远程代码和文档签名&#xff0c;随附的 PKCS#11 驱动程序允许与 Jarsigner、S…

git的本地分支如何关联远程分支,比如github,gitlab,码云等

文章目录 1. 文章引言2. 本地分支如何关联远程分支2.1 远程有分支2.2 远程无分支 3. 总结 1. 文章引言 今天发布某版本的项目&#xff0c;准备创建个v0point1分支&#xff0c;后期如果修改该版本&#xff0c;直接在该分支上修改即可。 首先&#xff0c;使用git branch v0point…

多线程屏障CyclicBarrier

文章目录 前言一、CyclicBarrier可以做什么&#xff1f;二、使用步骤1 单参数CyclicBarrier2 多参数 CyclicBarrier3 与CyclicBarrier类似的Exchanger 总结 前言 多线程中的CyclicBarrier,同样也是juc包下的一个工具类; 一、CyclicBarrier可以做什么&#xff1f; CyclicBarri…

ajax总结

Ajax 介绍 Ajax&#xff08;Asynchronous javaScript XML&#xff09;是一种异步处理数据的技术&#xff0c;用于创建快速动态网页&#xff0c;通过在后台与服务器进行少量数据交换&#xff0c;Ajax可以使网页实现异步更新&#xff0c;这意味着可以在不重新加载整个网页的情况…

MyBatis缓存和二级缓存整合Redis

MyBatis缓存和二级缓存整合Redis ⼀级缓存缓存验证在⼀个sqlSession中&#xff0c;对user表根据username进⾏两次查询&#xff0c;查看他们发出sql语句的情况同样是对user表进⾏两次查询&#xff0c;只不过两次查询之间进⾏了⼀次update操作。总结 ⼀级缓存原理探究与源码分析 …

SeaFormer实战:使用SeaFormer实现图像分类任务(一)

文章目录 摘要安装包安装timm安装mmcv安装 grad-cam 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 论文翻译&#xff1a;https://blog.csdn.net/m0_47867638/article/details/130437649?spm1001.2014.3001.5501 官方源码&#xff1a;https://github.com/fu…

计算机网络第一章(谢希仁第8版学习)

作者&#xff1a;爱塔居 专栏&#xff1a;计算机网络 作者简介&#xff1a;大三学生&#xff0c;希望和大家一起加油 文章目录 目录 文章目录 一、网络、互连网、互联网&#xff08;因特网&#xff09;的概念 二、因特网的组成 三、交换方式 3.1 电路交换 3.2 分组交换 3.3 电路…