AtCoder Beginner Contest 362
AtCoder Beginner Contest 362
前言
vp 的时候出了四题,被 C 题卡了一会,很久才出,D 题是 dijkstra 的板子,改下条件即可,E 题是个计数 dp,这类题一直不怎么擅长,想起之前杭电第一场那个序列立方的题也是类似这种计数 dp,需要加强练习。
A - Buy a Pen (atcoder.jp)
思路
判断两两最小。
代码
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int a, b, c;
cin >> a >> b >> c;
string x;
cin >> x;
if (x == "Red") cout << min(b, c) << '\n';
if (x == "Blue") cout << min(a, b) << '\n';
if (x == "Green") cout << min(a, c) << '\n';
return 0;
}
B - Right Triangle (atcoder.jp)
思路
根据勾股定理判一下即可,这里坐标都很小,可以不用开方,开方的话还会涉及到精度问题。
代码
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
struct point {
i64 x;
i64 y;
} ;
//求两点之间的距离
i64 dis(point p1, point p2) {
return ((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
point a, b, c;
cin >> a.x >> a.y >> b.x >> b.y >> c.x >> c.y;
i64 ab = dis(a, b);
i64 ac = dis(a, c);
i64 bc = dis(b, c);
if ((ab + ac == bc) || (ab + bc == ac) || (ac + bc == ab)) {
printf("Yes");
}
else {
printf("No");
}
return 0;
}
C - Sum = 0 (atcoder.jp)
思路
先累计两边边界的和,记为 \(sum_l\) 和 \(sum_r\) ,如果 \(sum_l>0\) 说明左边取全最小都还是不可能等于 0 ,右边同理,这种特殊处理一下即可。
考虑当 \(sum_l\le 0\) 的时候,那我们只要往右边偏移 \(|sum_l|\) 即可,把小于 0 的那部分用正数来补;右边同理。
代码
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
i64 lsum = 0, rsum = 0;
vector<array<i64, 2>> node(n);
for (auto &[x, y] : node) {
cin >> x >> y;
lsum += x, rsum += y;
}
if (lsum > 0 || rsum < 0) {
cout << "No\n";
return 0;
}
cout << "Yes\n";
if (lsum <= 0) {
i64 now = -lsum;
for (auto [x, y] : node) {
if (now) {
cout << min(x + now, y) << ' ';
now -= min(x + now, y) - x;
} else
cout << x << ' ';
}
} else {
i64 now = rsum;
for (auto [x, y] : node) {
if (now) {
cout << max(x, y - now) << ' ';
now -= y - max(y - now, x);
} else
cout << y << ' ';
}
}
return 0;
}
D - Shortest Path 3 (atcoder.jp)
思路
dijkstra 板子题,只要在判断条件那里增加一个 \(a_v\) 即可。
代码
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
vector<int> a(n + 1);
for (int i = 1; i <= n; i ++)
cin >> a[i];
vector g(n + 1, vector<array<int, 2>>());
for (int i = 0; i < m; i ++) {
int u, v, w;
cin >> u >> v >> w;
g[u].push_back({v, w});
g[v].push_back({u, w});
}
vector<i64> dis(n + 1, LLONG_MAX >> 1);
priority_queue<pair<i64, i64>, vector<pair<i64, i64>>, greater<>> Q;
dis[1] = a[1];
Q.push({dis[1], 1});
while (Q.size()) {
auto [_, u] = Q.top();
Q.pop();
if (dis[u] < _) continue;
for (auto [v, w] : g[u]) {
if (dis[v] > dis[u] + w + a[v]) {
dis[v] = dis[u] + w + a[v];
Q.push({dis[v], v});
}
}
}
for (int i = 2; i <= n; i ++)
cout << dis[i] << " \n"[i == n];
return 0;
}
E - Count Arithmetic Subsequences (atcoder.jp)
思路
考虑计数 dp。
设 \(dp_{i,j,k}\) 为长度为 i 的子序列末尾两项为 \(a_j\) 和 \(a_k\) 的方案数。
转移的时候可以枚举倒数第三项来转移:
\]
代码
// LUOGU_RID: 169183095
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
constexpr i64 mod = 998244353, N = 300;
i64 dp[N][N][N] {};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> a(n + 1);
for (int i = 1; i <= n; i ++)
cin >> a[i];
if (n == 1) {
cout << 1 << '\n';
return 0;
}
vector<int> ans(n + 1);
ans[1] = n, ans[2] = n * (n - 1) / 2;
for (int i = 1; i <= n; i ++) {
for (int j = i + 1; j <= n; j ++) {
dp[2][i][j] = 1;
}
}
for (int len = 3; len <= n; len ++) {
for (int j = len - 1; j <= n; j ++) {
for (int k = j + 1; k <= n; k ++) {
for (int i = len - 2; i < j; i ++) {
if (a[j] - a[i] == a[k] - a[j]) {
(dp[len][j][k] += dp[len - 1][i][j]) %= mod;
}
}
(ans[len] += dp[len][j][k]) %= mod;
}
}
}
for (int i = 1; i <= n; i ++)
cout << ans[i] << " \n"[i == n];
return 0;
}
AtCoder Beginner Contest 362的更多相关文章
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- 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 ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】
AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...
- AtCoder Beginner Contest 064 D - Insertion
AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...
- AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】
AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...
- AtCoder Beginner Contest 075 C bridge【图论求桥】
AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...
随机推荐
- jqurey基础知识和常用事件方法
样式文件不需要<style>标签 引用style文件的方法 <link href="main.css" rel="stylesheet" st ...
- vue3实现模拟地图上,站点名称按需显示的功能
很久很久没有更新博客了,因为实在是太忙了,每天都有公司的事情忙不完....... 最近在做车辆模拟地图,在实现控制站点名称按需显示时,折腾了好一段时间,特此记录一下.最终界面如下图所示: 站点显示需求 ...
- glog_bash:在bash中优雅输出日志
介绍 官方仓库:https://github.com/GuoFlight/glog_bash .下载其中的glog_bash.sh即可. 这是专门用于bash脚本中的logger,名为glog_bas ...
- 升级到 MySQL 8.4,MySQL 启动报错:io_setup() failed with EAGAIN
问题 最近碰到一个 case,一台主机上,部署了多个实例.之前使用的是 MySQL 8.0,启动时没有任何问题.但升级到 MySQL 8.4 后,部分实例在启动时出现了以下错误. [Warning] ...
- 面试题:Linux 系统基础提问 (一)
Linux系统中如何管理用户和组? Linux系统中用户和组的管理通常包括以下几个方面: 1.创建用户和组: 使用useradd和groupadd命令创建新用户和新组. 2.修改用户和组信息: 使用u ...
- ELK日志缺失问题排查-多行日志聚合Logstash配置问题
1. 背景 推荐系统的推荐请求追踪日志,通过ELK收集,方便遇到问题时,可以通过唯一标识sid来复现推荐过程 最近在碰到了几个bad case,需要通过sid来查询推荐日志,但发现部分无法在kiban ...
- multipass中docker的使用及固定ip的配置
之前一直用WSL2,但是可能我高估了我笔记本的性能,每次开启后我的win11都闪得厉害. 公司给配发的联想昭阳 前两天实在受不了,把它重装了.才发现之前一直很抵触重装,结果重装完工作几乎没怎么受影响. ...
- 浙江省赛决赛 misc2 蝎子
Misc 2 tcp.stream eq 0 内得知是冰蝎3.0,key是e46023a69f8db309 <?php @error_reporting(0); session_start(); ...
- VulnHub-DC-7渗透流程
DC-7 kali:192.168.157.131 靶机:192.168.157.151 信息收集 nmap -sV -A -p- 192.168.157.151 虽然有robots.txt等敏感文件 ...
- 推荐一枚宝藏Up主,顺便聊聊感想
众所周知,B站是学习网站 最近发现一宝藏Up主,主要做科普,主题包括但不限于:大模型的底层算法.量子计算底层原理和硬件设计,以及其他物理或者自然科学主题,总体偏向于理工科. 值得推荐的理由:Up主对底 ...