TOYOTA SYSTEMS Programming Contest 2024(AtCoder Beginner Contest 377) 补题记录(A-E)
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)的更多相关文章
- M-SOLUTIONS Programming Contest 2021(AtCoder Beginner Contest 232) 题解
目录 G - Modulo Shortest Path H - King's Tour 因为偷懒就只写G和H的题解了. G - Modulo Shortest Path 首先可以观察到对于一条从点\( ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- atcoder beginner contest 251(D-E)
Tasks - Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)\ D - At Most 3 (Contestant ...
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解
KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...
- AtCoder Beginner Contest 184 题解
AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...
- AtCoder Beginner Contest 255(E-F)
Aising Programming Contest 2022(AtCoder Beginner Contest 255) - AtCoder E - Lucky Numbers 题意: 给两个数组a ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
随机推荐
- Leetcode: 586. Customer Placing the Largest Number of Orders
题目要求如下: 给出的例子如下: 简单地说就是要找出表中订单最多客户的ID. 使用如下的代码进行实现: import pandas as pd def largest_orders(orders: p ...
- 记一次list集合优化
已知某个列表List1有2000条数据,但是因为这个列表的某个字段要从另一个表查询,所以根据一个关联的查询条件查出来的另一个List2有将近75000条数据,然后需要先循环第一个List1,然后循环里 ...
- 【Python + Appium】之元素定位总结(更新)
一.ID定位 uiautomatorviewer里面的:resource-id driver.find_element(By.ID,"com.csks.businesses:id/tv_nu ...
- 基于surging 如何利用peerjs进行语音视频通话
一 . 概述 PeerJS 是一个基于浏览器WebRTC功能实现的js功能包,简化了WebrRTC的开发过程,对底层的细节做了封装,直接调用API即可,再配合surging 协议组件化从而做到稳定,高 ...
- cesium的使用
安装 建议使用vue的cesium插件:vue-cli-plugin-cesium.vue add命令可零配置添加cesium:vue add vue-cli-plugin-cesium 报错 添加完 ...
- 一个开源、跨平台的.NET UI框架 - Avalonia UI
前言 今天大姚给大家分享一个开源.免费(MIT License).跨平台的.NET UI框架:Avalonia UI. Avalonia是一个成熟稳定的平台,用于构建桌面.嵌入式.移动的和Web应用程 ...
- Angular Material 18+ 高级教程 – Datepicker の Calendar & Custom DateAdapter (Temporal)
前言 本篇只会教 Angular Material Datepicker 里最关键的组件 -- Calendar 组件. 还有如何自定义 DateAdapter,让 Calendar 支持 TC39 ...
- Angular 18+ 高级教程 – Animation 动画
前言 Angular 有一套 built-in 的 Animation 方案.这套方案的底层实现是基于游览器原生的 Web Animation API. CSS Transition -> CS ...
- ASP.NET Core – Razor Pages 冷知识
Multiple Form Binding 问题 在一个 page 里面有 2 张 form, 那么就会有 2 个 model binding. 当任何一个 submit 的时候. 由于 2 个 mo ...
- Figma 学习笔记 – Prototype
挺简单的, 只要知道它有什么, 基本上就会用了 监听 Event Type 监听 Callback Action 过度 Animation Frame Scrolling