Atcoder Beginner Contest 300

news/2024/11/8 3:38:34/

A - N-choice question

AC代码: 

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1010;
int n;
int a[N];
int main()
{cin >> n;int a, b;cin >> a >> b;for (int i = 1; i <= n; i++) {int c;cin >> c;if (a + b == c) {cout << i << endl;break;}}return 0;
}

B - Same Map in the RPG World 

两个地图,每个地图都是由h个字符串组成,每个字符串w个字符

共两种操作:

垂直偏移指的是对于所有行,每一行都往上移动一行,最上面一行移到最下面

水平偏移指的是对于所有列,每一列都往左移动一列,最左边一列移到最右边

问可不可以通过s次垂直偏移和t次水平偏移使得两个地图完全相同

数据比较小,感觉这题需要将所有情况枚举出来,可以用dfs枚举出所有情况,同时判断是否可行,试了一会发现不太会用dfs,那直接就模拟,暴力枚举吧

那么如何实现垂直和水平偏移呢?垂直偏移容易实现,不过就是字符串的上下移动,但是水平偏移的话估计得每一行每个字符都得移动,全部移动完之后又得判断字符串是否相等,感觉太麻烦

于是,我去看Virtual standings,看到了一个很好的代码

该代码并没有实现真正意义上的偏移,只不过直接将b的每一个字符和偏移后的a的每一个字符比较

枚举s次垂直偏移和t次水平偏移,然后看是否两个地图相等

AC代码: 

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 50;
char a[N][N], b[N][N];
int h, w;
int main()
{cin >> h >> w;for (int i = 0; i < h; i++) cin >> a[i];for (int i = 0; i < h; i++) cin >> b[i];for (int s = 0; s < h; s++) {for (int t = 0; t < w; t++) {bool flag = true;for (int i = 0; i < h; i++) {for (int j = 0; j < w; j++) {flag &= (b[i][j] == a[(i - s + h) % h][(j - t + w) % w]);}}if (flag) {puts("Yes");return 0;}}}puts("No");return 0;
}

C - Cross

这题题目都看不懂呜呜呜,参考阿史大杯茶

大致题意是找由#组成的X型图形,从中心往外扩展,分别输出往外扩展1层,2层一直到n层的X型图形的个数(其中n=min(h,w))

数据比较小,所以可以枚举每一个#,来判断以它为中心的X型图形往外拓展了几层

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
const int N = 110;
char s[N][N];
map<int, int>mp;
int h, w;
int main()
{cin >> h >> w;for (int i = 1; i <= h; i++) {for (int j = 1; j <= w; j++) {cin >> s[i][j];}}for (int i = 2; i < h; i++) {for (int j = 2; j < w; j++) {if (s[i][j] == '#') {int cnt = 0;//拓展的层数从0开始,一层一层上去,如果每满足一层的条件,cnt就++while (i + cnt + 1 <= h && i - cnt + 1 >= 1 && j - cnt + 1 >= 1 && j + cnt + 1 <= w && s[i + cnt + 1][j - cnt - 1] == '#' && s[i + cnt + 1][j + cnt + 1] == '#' && s[i - cnt - 1][j - cnt - 1] == '#' && s[i - cnt - 1][j + cnt + 1] == '#') cnt++;mp[cnt]++;}}}int n = min(h, w);for (int i = 1; i <= n; i++) cout << mp[i] << " ";return 0;
}

D - AABCC

看到题目想到质数筛,把质数从小到大依次存到数组中,需要筛到sqrt(1e12/2/2/3)==3e5

然后从中选三个数,一个最小的数用2次,一个最大的数用2次,中间的数用1次

就从小到大枚举三个数,注意中间可以剪枝,减小时间复杂度

参考houthe

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#define int long long 
using namespace std;
const int N = 3e5 + 10;
int prime[N];
int cnt;
int n;
bool st[N];
//欧拉筛
void get_prime() {for (int i = 2; i <= N; i++) {if (!st[i]) prime[cnt++] = i;for (int j = 0; prime[j] <=  N/ i; j++) {st[prime[j] * i] = true;if (i % prime[j] == 0) break;}}
}
signed main()
{cin >> n; get_prime();int res = 0;for (int i = 0; i < cnt; i++) {if (prime[i] * prime[i] > n) break;for (int j = i + 1; j < cnt; j++) {if (prime[i] * prime[i] * prime[j] > n) break;for (int k = j + 1; k < cnt; k++) {int x = prime[i] * prime[i] * prime[j] * prime[k];if (x > n) break;x *= prime[k];if (x <= n) res++;else break;}}}cout << res << endl;
}

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

相关文章

Transfomer编码器中自注意力机制、前馈网络层、叠加和归一组件等讲解(图文解释)

Transformer中的编码器不止一个&#xff0c;而是由一组N个编码器串联而成&#xff0c;一个编码的输出作为下一个编码器的输入&#xff0c;如下图所示&#xff0c;每一个编码器都从下方接收数据&#xff0c;再输出给上方&#xff0c;以此类推&#xff0c;原句中的特征会由最后一…

Node.js+vue多用户个人博客网站i03nz

基于nodejs语言设计并实现了个人博客。该系统基于B/S即所谓浏览器/服务器模式&#xff0c;应用Vue框架&#xff0c;选择MySQL作为后台数据库。系统主要包括首页、个人中心、用户管理、文章分类管理、博客文章管理、留言板管理、系统管理等功能模块。要循序渐进&#xff0c;心急…

rust进水器怎么用_易水香教你如何正确使用家用净水器

家用净水器使用学问多&#xff0c;消费者使用需谨慎&#xff0c;那就由十大品牌易水香净水器为你支招家用净水器使用注意事项。 首次使用&#xff1a;家用净水器首次使用前应严格按以下步骤进行冲洗&#xff0c;否则会影响家用净水器性能和前期制水水质。 第一次使用前应对家用…

解决:RuntimeError: mat1 and mat2 shapes cannot be multiplied (8x256 and 8x256)维度不匹配问题

在设计网络是&#xff0c;前面几层是去噪网络&#xff0c;后边几层是分类网络&#xff0c;因为之前没有接触过分类任务&#xff0c;对全连接层输入维度不太理解&#xff0c;出现错误RuntimeError: mat1 and mat2 shapes cannot be multiplied (8x256 and 8x256) 解决方法&#…

小米AX1800开SSH权限

开启SSH 登录小米路由器后台&#xff0c;注意自己后台的IP地址&#xff0c;一般是192.168.31.1&#xff1a; 注意链接上stok&#xff1a; 按F12,选择Console&#xff1a; 输入以下代码回车&#xff1a; function getSTOK() {let match location.href.match(/;stok(.*?)\…

交换机dot1x认证配置

设备分配IP 12.16.43.250 vlan 分配IP 12.16.43.251 华为交换机 配置vlan interface vlanif xx vlan xx ip address 16.12.43.251 255.255.255.0 (vlan ip 在认证界面添加交换机参数使用) radius-server radius-server template radius1(自己起) radius-server shared-key …

不定积分——1/(1+x^4)的不定积分

文章目录 原因法一&#xff1a; 1. ∫ x 2 − 1 x 4 1 d x 1.\int\frac{x^2-1}{x^41}{\mathrm{d}x} 1.∫x41x2−1​dx 2. ∫ x 2 1 x 4 1 d x 2.\int\frac{x^21}{x^41}{\mathrm{d}x} 2.∫x41x21​dx 3. ∫ 1 ( 1 x 4 ) d x 3.\int\frac{1}{(1x^4)}{\mathrm{d}x} 3.∫(1x4)1…

stm32f10x.h解析

/**这里是STM32比较重要的头文件 ****************************************************************************** ST版本库的 stm32f10x.h 文件&#xff0c;包含整个头文件代码。综合以上&#xff0c;可以看出 stm32f10x.h 用于定义了器件、中断线、数据类型、结构体封…