A. 2UP3DOWN

直接模拟即可。

Code

B. 326-like Numbers

枚举,每次拆除百、十、个位,再判断。

Code

C. Peak

Description

数字线上放置了 \(N\) 个礼物。第 \(i\) 个礼物放置在坐标 \(A_i\) 处。

可以在数轴上选择长度为 \(M\) 的半开区间 \([x,x+M)\),并获得其中包含的所有礼物。

求:最多可以获得多少份礼物?

Solution

二分 / 双指针都可。

  • 二分答案: 二分出最多可以获得多少份礼物,答案为右边界。每次 check,枚举 \([1 \sim n]\),看看 \(a_{i+mid-1} - a_i\) 是否 \(< m\) 即可。

  • 双指针: 每次 \(l\) 从 \([1 \sim n]\),用 while 循环枚举的最大右端点,即最大的满足 \(a_r - a_l \le m\) 的点,然后求 \(\max\)。

Code

Solution 1

#include <bits/stdc++.h>

using namespace std;

const int N = 3e5 + 10;
int a[N];
int n, m;
map<int, int> mp[N];
set<int> st[N]; int l = 0, r, mid; bool check(int mid) {
for (int i = 1; i <= n - mid + 1; i++) {
if (a[i + mid - 1] - a[i] < m) return true;
}
return false;
} int main() {
cin >> n >> m;
r = n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + n + 1);
while (l <= r) {
mid = (l + r) >> 1;
if (check(mid)) l = mid + 1;
else r = mid - 1;
}
cout << l - 1;
return 0;
}

Solution 2

#include <bits/stdc++.h>

using namespace std;

const int N = 3e5 + 10;
int a[N]; int main() {
int n, m, ans = 0;
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> a[i];
sort(a + 1, a + n + 1);
int now = 1;
for(int i = 1; i <= n; i++) { // 枚举左指针
while(now < n && a[now + 1] - a[i] < m) now++; // 满足条件就一直自增
ans = max(ans, now - i + 1);
}
cout << ans;
return 0;
}

D. ABC Puzzle

Description

给定两个字符串 \(R\) 和 \(C\) ,分别由 A 、B 和 C 组成。

有一个 \(N \times N\) 网格。

在每个格中,最多只能写 A 、B 和 C 中的一个字符。

确定是否可以满足以下所有条件,如果可以,打印。

  • 每行和每列恰好包含一个 A 、一个 B 和一个 C 。

  • 第 \(i\) 行中最左边的字符与 \(R\) 的第 \(i\) 个字符匹配。

  • 第 \(i\) 列中最上面的字符与 \(C\) 的第 \(i\) 个字符匹配。

Solution

暴力 DFS + 剪枝。

注意一些小优化的细节:

我们可以在 DFS 的过程中,判断目前搜索出来的方案是否合法,如果不合法,直接 return。

不能在搜索完毕之后在判断是否合法,否则时间复杂度极大,可能会被卡。

其他的就是搜索,没什么好说的。

Code

#include <bits/stdc++.h>

using namespace std;
int n, ans[10][10];
bool nowx[10][4], nowy[10][4];
string s, t; void dfs(int x, int y) {
if (x == n) {
for (int i = 0; i < n; i++)
if (nowx[i][3] + nowx[i][1] + nowx[i][2] + nowy[i][3] + nowy[i][1] + nowy[i][2] != 6) return;
printf("Yes\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
if (!ans[i][j]) putchar('.');
else printf("%c", 'A' - 1 + ans[i][j]);
printf("\n");
}
exit(0);
}
int nx = x, ny = y + 1;
if (ny >= n) nx++, ny = 0;
if (!nowx[x][3] && !nowx[x][1] && !nowx[x][2]) {
if ((nowy[y][3] || nowy[y][1] || nowy[y][2] || s[x] == t[y]) && (!nowy[y][s[x] - 'A' + 1])) {
ans[x][y] = s[x] - 'A' + 1;
nowx[x][s[x] - 'A' + 1] = 1;
nowy[y][s[x] - 'A' + 1] = 1;
dfs(nx, ny);
nowx[x][s[x] - 'A' + 1] = 0;
nowy[y][s[x] - 'A' + 1] = 0;
}
ans[x][y] = 0;
dfs(nx, ny);
} else {
for (int i = 1; i <= 3; i++) {
if ((!nowx[x][i]) && (nowy[y][3] || nowy[y][1] || nowy[y][2] || t[y] - 'A' + 1 == i) && (!nowy[y][i])) {
ans[x][y] = i;
nowx[x][i] = 1;
nowy[y][i] = 1;
dfs(nx, ny);
nowx[x][i] = 0;
nowy[y][i] = 0;
}
}
ans[x][y] = 0;
dfs(nx, ny);
}
} int main() {
cin >> n >> s >> t;
dfs(0, 0);
printf("No");
return 0;
}

其他的不会,我是菜鸡。

AtCoder Beginner Contest 326 (ABC326)的更多相关文章

  1. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  2. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  3. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  4. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  5. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  6. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  7. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  8. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

  9. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

  10. AtCoder Beginner Contest 075 C bridge【图论求桥】

    AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...

随机推荐

  1. MAUI 框架开发 将 MAUI 嵌入到 WPF 控件里

    本文将介绍如何将 MAUI 的底层替换为 WPF 框架层,且将 MAUI 的内容嵌入到 WPF 的一个控件里面,无 UI 框架嵌入的空域问题 本文是 MAUI 框架开发博客,而不是 MAUI 应用开发 ...

  2. ls 和 du显示文件大小不一样

    查看当前文件系统的磁盘使用 df -k / Filesystem 1K-blocks Used Available Use% Mounted on /dev/nvme0n1p2 97844508 37 ...

  3. JDBC:使用IDEA配置JDBC

    IDEA使用Jar包 操作流程 步骤1:创建lib路径 步骤2:复制jar包 步骤3:必须要做的一步 参考链接 https://blog.csdn.net/upup1006/article/detai ...

  4. [python]从环境变量和配置文件中获取配置参数

    前言 从环境变量和配置文件中获取配置参数,相关库: python-dotenv:第三方库,需要使用pip安装 configparser:标准库 示例代码 test.ini [mysql] host = ...

  5. java入门2..0

    java的运行原理 1.在本地磁盘中创建一个文本文件为Demo.java的源文件 2.在源文件中编写java代码如下: public class Demo public static void ,ma ...

  6. 集训后的一些wp

    新生赛后 0x01 2048(jk出发) 修改跳转条件为nop,随便动一下直接打印flag.这个场景我幻想过很久了,一直没做到,这次参考wp做出来了知道怎么做了.学到! 0x02 four(dsact ...

  7. SpringBoot3集成ElasticSearch

    目录 一.简介 二.环境搭建 1.下载安装包 2.服务启动 三.工程搭建 1.工程结构 2.依赖管理 3.配置文件 四.基础用法 1.实体类 2.初始化索引 3.仓储接口 4.查询语法 五.参考源码 ...

  8. CVE-2022-42475-FortiGate-SSLVPN HeapOverflow 学习记录

    前言 之前就想复现这个洞,不过因为环境的问题迟迟没有开工.巧在前一阵子有个师傅来找我讨论劫持 ssl结构体中函数指针时如何确定堆溢出的偏移,同时还他把搭建好了的环境发给了我,因此才有了此文. 如何劫持 ...

  9. 【Java监控】使用SkyWalking监控Java服务

    你的Java服务是如何监控的呢? 1.Null:监控?什么监控?我一个写代码的服务挂了跟我有什么关系? 2.命令行:服务挂了?内存泄漏?jstat jmap jcmd,还好不是我写的 3.撸代码:Ja ...

  10. Set Concept

    集合(Set)就是一种用来装事物的容器(或者称为结构),它所装的东西叫元素.集合这个容器的逻辑性很强,可以说是现在比较严谨的工具. 集合里的元素,它们可以是任何类型的数学对象:数字.符号.变量.空间中 ...