AtCoder Beginner Contest 328
AtCoder Beginner Contest 328
A - Not Too Hard (atcoder.jp)
#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';
using namespace std;
using i64 = long long;
typedef pair<i64, i64> PII;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
i64 n, x, ans = 0;
cin >> n >> x;
vector<int> a(n);
for (auto &i : a) {
cin >> i;
if (i <= x) ans += i;
}
cout << ans << '\n';
return 0;
}
B - 11/11 (atcoder.jp)
只有月份和日期都是由同一个数字组成时,才可能有重期日
#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';
using namespace std;
using i64 = long long;
typedef pair<i64, i64> PII;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin >> N;
vector<int> D(N + 1);
i64 ans = 0;
for (int i = 1; i <= N; i ++) {
cin >> D[i];
int op = i % 10;
if (i < 10) {
while (op <= D[i]) {
ans ++;
op = op * 10 + op;
}
} else if (i < 100 && i % 10 == i / 10) {
while (op <= D[i]) {
ans ++;
op = op * 10 + op;
}
}
}
cout << ans << '\n';
return 0;
}
C - Consecutive (atcoder.jp)
前缀和处理一下相邻相同的个数即可
#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';
using namespace std;
using i64 = long long;
typedef pair<i64, i64> PII;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, Q;
string s;
cin >> N >> Q >> s;
vector<int> pre(N + 1);
s = " " + s;
for (int i = 1; i <= N; i ++) {
pre[i] = pre[i - 1];
if (s[i] == s[i - 1])pre[i] ++;
}
while (Q--) {
int l, r;
cin >> l >> r ;
cout << pre[r] - pre[l] << '\n';
}
return 0;
}
D - Take ABC (atcoder.jp)
貌似正解是用栈来做,不过我直接模拟也能过,就是时间卡的有点极限
#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';
using namespace std;
using i64 = long long;
typedef pair<i64, i64> PII;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
cin >> s;
int pos = 0;
while (pos < s.size()) {
if (s.substr(pos, 3) == "ABC") {
s.erase(pos, 3);
pos --;
pos = max(pos, 0);
if (s[pos] == 'B') pos --;
pos = max(pos, 0);
continue;
}
pos ++;
}
cout << s << '\n';
return 0;
}
E - Modulo MST (atcoder.jp)
不能直接用克鲁斯卡尔算法去做
因为克鲁斯卡尔是按照固定权值下的计算最小生成树,但是这题是要求取模意义下的最小生成树,按照权值排序得到的结果不一定是最小的,不过观察到这题的范围很小,所以可以直接暴力去做
考虑对\(M\)条边选出\(N-1\)条边出来,多余就\(return\),如果在合并的过程中发现是个环也\(return\),剩下的就是比较了
#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';
using namespace std;
using i64 = long long;
typedef pair<i64, i64> PII;
struct Edge {
i64 v, u, w;
};
constexpr int N = 10;
struct UFS {
int p[N], rank[N], sz; /
void link(int x, int y) {
if (x == y)
return;
if (rank[x] > rank[y])
p[y] = x;
else
p[x] = y;
if (rank[x] == rank[y])
rank[y]++;
}
void init(int n) {
sz = n;
for (int i = 0; i <= sz; i++) {
p[i] = i;
rank[i] = 0;
}
}
int find(int x) {
return x == p[x] ? x : (p[x] = find(p[x]));
}
void unin(int x, int y) {
link(find(x), find(y));
}
void compress() {
for (int i = 0; i < sz; i++)
find(i);
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
i64 N, M, K;
cin >> N >> M >> K;
vector<Edge> g(M);
for (int i = 0; i < M; i ++) {
cin >> g[i].u >> g[i].v >> g[i].w;
g[i].w %= K;
}
i64 ans = K;
vector<bool> vis(M);
auto dfs = [&](auto self,int edge,int step){
if(step >= M){
if(edge != N - 1) return ;
UFS ufs;
ufs.init(N);
i64 sum = 0;
for(int i = 0;i < M;i ++){
if(!vis[i]) continue;
int u = ufs.find(g[i].u);
int v = ufs.find(g[i].v);
if(u == v) return ;
ufs.link(u,v);
sum = (sum + g[i].w) % K;
}
ans = min(ans, sum % K);
return ;
}
vis[step] = true;
self(self, edge + 1, step + 1);
vis[step] = false;
self(self, edge, step + 1);
};
dfs(dfs,0,0);
cout << ans << '\n';
return 0;
}
AtCoder Beginner Contest 328的更多相关文章
- 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 ...
随机推荐
- SpringCloud开发之OpenFeign timeout和压缩等问题
在某些时候,我们希望某个同步调用执行更长的时间(异步暂时不考虑),这个时候,首先就是要设置OpenFeign的timeout设定. 下面我们举例来说明,可以如何设定TimeOut参数. 一.环境 脱离 ...
- 02-CentOS7基础
基础知识介绍 shell shell俗称壳,它包裹在内核的外面,是用户命令的翻译官. 作用:接收用户的命令,翻译后(处理一下)交给Linux内核处理. 命令 -> shell -> 内核 ...
- Java面试知识点(六)hashmap深度理解
1.hashmap 的数据结构 要知道 hashmap 是什么,首先要搞清楚它的数据结构,在 java 编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用 ...
- AtCoder Beginner Contest 302 H. Ball Collector 题解 可撤销并查集
为了更好的阅读体验,请单击这里 AtCoder Beginner Contest 302 H. Ball Collector 题意跳过. 可以视作将 \(a_i, b_i\) 之间连了一条边,然后 \ ...
- 颠覆传统编程,用ChatGPT十倍提升生产力
我们即将见证一个新的时代!这是最好的时代,也是最坏的时代! 需求背景 背景: 平时会编写博客,并且会把这个博客上传到github上,然后自己买一个域名挂到github上. 我平时编写的博客会有一些图片 ...
- 降维(三)LLE与其他降维技术
LLE 局部线性嵌入,Locally Linear Embedding(LLE)是另一个功能强大的非线性降维(nonlinear dimensional reduction,NLDR)技术.它是一个流 ...
- 在Linux驱动中使用gpio子系统
reference: https://blog.csdn.net/shiyongyue/article/details/75103446 http://blog.rongpmcu.com/gpiozi ...
- SpringMVC原理(1)-文件上传请求
我们文件上传接口只需要在方法参数上写MultipartFile类,mvc就可以帮我们把上传的文件封装为这个类的对 象供我们非常方便的操作,那它是怎么做的呢?我们一起来看看 我们发的请求默认都是由Dis ...
- 瑞芯微RK3568J如何“调节主频”,实现功耗降低?一文教会您!
RK3568J主频模式说明 为降低RK3568J功耗,提高运行系统健壮性,在产品现场对RK3568J实现主频调节则显得尤为重要. 图 1 RK3568J官方数据手册主频模式描述 normal模式 根据 ...
- 动手学Avalonia:基于SemanticKernel与硅基流动构建AI聊天与翻译工具
Avalonia是什么? Avalonia是一个跨平台的UI框架,专为.NET开发打造,提供灵活的样式系统,支持Windows.macOS.Linux.iOS.Android及WebAssembly等 ...