AtCoder Beginner Contest 377

A - Rearranging ABC

字符串有ABC三个字母即可。

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
string s;
cin >> s;
map<char, int> mp;
for (auto t : s) {
mp[t] = 1;
}
if (mp['A'] == 1 && mp['B'] == 1 && mp['C'] == 1) cout << "Yes\n";
else cout << "No\n";
}

B - Avoid Rook Attack

标记一下哪行哪列不可以放,然后暴力枚举

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
char a[10][10];
map<int, int> h, l;
for (int i = 1; i <= 8; i++)
for (int j = 1; j <= 8; j++) {
cin >> a[i][j];
if (a[i][j] == '#') h[i] = 1, l[j] = 1;
}
int cnt = 0;
for (int i = 1; i <= 8; i++) {
for (int j = 1; j <= 8; j++) {
if (a[i][j] == '.') {
if (h[i] == 0 && l[j] == 0) cnt++;
}
}
}
cout << cnt << '\n';
}

C - Avoid Knight Attack

\(set\)套一个\(pair\)将所有能吃的点和有马的点存入\(set\),能放的点就是剩下的点。

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
int n, m;
cin >> n >> m;
set<pair<int, int>> se;
int dx[10] = {-1, -2, -2, -1, 1, 2, 2, 1};
int dy[10] = {-2, -1, 1, 2, 2, 1, -1, -2};
while (m--) {
int x, y;
cin >> x >> y;
se.insert({x, y});
for (int i = 0; i < 8; i++) {
if (x + dx[i] >= 1 && x + dx[i] <= n && y + dy[i] >= 1 && y + dy[i] <= n)
se.insert({x + dx[i], y + dy[i]});
}
}
cout << n*n - se.size() << '\n'; }

D - Many Segments 2

首先考虑加法不好做,于是我们选择减法减去所有不合法的区间,那么剩下的就是我们需要的答案。

通过模拟和思考发现我们可以枚举每一个位置 \(i\)查询离这个位置右侧最近的区间左边界\(r\),同时这个区间右边界\(l\)需要大于等于\(i\)此时可以删除(\(i\),\([r,m]\))这些区间组合。

为了实现我们的需求,我们可以对区间按照\(r\)排序,使用双指针查找合法可删除区间。

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10;
struct node {
int l, r;
} a[N];
bool cmp(node x, node y) {
if (x.r != y.r) return x.r < y.r;
return x.l < y.l;
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i].l >> a[i].r;
}
sort(a + 1, a + 1 + n, cmp);
int j = 1;
int ans = m + m * (m - 1) / 2;
for (int i = 1; i <= m; i++) {
int x = i;
while (a[j].l < x && j < n) j++;
if (a[j].l < x) ans -= 0;
else ans -= (m - a[j].r + 1);
}
cout << ans << '\n';
}

E - Permute K times 2

TOYOTA SYSTEMS Programming Contest 2024(AtCoder Beginner Contest 377) 补题记录(A-E)的更多相关文章

  1. M-SOLUTIONS Programming Contest 2021(AtCoder Beginner Contest 232) 题解

    目录 G - Modulo Shortest Path H - King's Tour 因为偷懒就只写G和H的题解了. G - Modulo Shortest Path 首先可以观察到对于一条从点\( ...

  2. AtCoder Beginner Contest 076

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

  3. atcoder beginner contest 251(D-E)

    Tasks - Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)\ D - At Most 3 (Contestant ...

  4. AtCoder Beginner Contest 100 2018/06/16

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

  5. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解

    KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...

  6. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  7. AtCoder Beginner Contest 255(E-F)

    Aising Programming Contest 2022(AtCoder Beginner Contest 255) - AtCoder E - Lucky Numbers 题意: 给两个数组a ...

  8. AtCoder Beginner Contest 052

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

  9. AtCoder Beginner Contest 053 ABCD题

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

  10. AtCoder Beginner Contest 136

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

随机推荐

  1. 【题解】ABC365(A~E)

    前四题30min切,然后T5死磕70min+几发小唐错,距离比赛结束还有16s交最后一发,AC了. 目录 A. Leap Year 题目描述 思路 代码 B. Second Best 题目描述 思路 ...

  2. 信创环境:鲲鹏ARM+麒麟V10离线部署K8s和Rainbond信创平台

    在上篇<国产化信创开源云原生平台>文章中,我们介绍了 Rainbond 作为可能是国内首个开源国产化信创平台,在支持国产化和信创方面的能力,并简要介绍了如何在国产化信创环境中在线部署 Ku ...

  3. 5 个有趣的 Python 开源项目「GitHub 热点速览」

    本期,我从上周的开源热搜项目中精心挑选了 5 个有趣.好玩的 Python 开源项目. 首先是 PyScript,它可以让你直接在浏览器中运行 Python 代码,不仅支持在 HTML 中嵌入,还能安 ...

  4. .NET 智能组件完全开源

    Daniel Roth在2024年3月20日发布了一篇文章: .NET 智能组件简介 – AI 驱动的 UI 控件.文章主要介绍了.NET Smart Components,这是一系列可以快速轻松地添 ...

  5. 基于Material Design风格开源的Avalonia UI控件库

    前言 今天大姚给大家分享一款基于Material Design风格开源.免费(MIT License)的Avalonia UI控件库:Material.Avalonia. 当前项目还处于alpha阶段 ...

  6. 【YashanDB知识库】swap空间使用超大报错

    问题描述 问题单 使用GROUP_CONCAT函数时,数据库swap表空间上涨厉害 测试用例 drop table tmp1; create table tmp1(c1 int,c2 double,c ...

  7. 编译和分发 Chez Scheme 应用程序

    参考 Building and Distributing Applications. 假设源码由两个文件组成,A.ss 和 B.ss,其中 A.ss 依赖 B.ss.下面我们将其编译为可供分发的二进制 ...

  8. vue-i18n 8.28.2(完成)

    https://kazupon.github.io/vue-i18n/zh/introduction.html 开始 如果使用模块系统 (例如通过 vue-cli),则需要导入 Vue 和 VueI1 ...

  9. [TK] 送礼物

    题解引用 引理1: 区间 \([l,r]\) 是最优解的必要不充分条件是: \(l,r\) 分别是区间的最小值与最大值. 这很显然,若假设不成立,当区间向内缩小时,一定有分子不变,分母变小,进而算出更 ...

  10. .NET 开源高性能 MQTT 类库

    前言 随着物联网(IoT)技术的迅猛发展,MQTT(消息队列遥测传输)协议凭借其轻量级和高效性,已成为众多物联网应用的首选通信标准. MQTTnet 作为一个高性能的 .NET 开源库,为 .NET ...