AtCoder Beginner Contest 318
AtCoder Beginner Contest 318
A - Full Moon (atcoder.jp)
以\(M\)为首项,\(P\)为公差,看\(1 \sim N\)里包含了多少项的个数
#include<bits/stdc++.h>
using i64 = long long;
using namespace std;
typedef pair<i64, i64> PII;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N,M,P;
cin >> N >> M >> P;
cout << 1ll * max(N - M, 0) / P + (N >= M) << '\n';
return 0;
}
B - Overlapping sheets (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;
i64 ans = 0;
vector<bitset<110>> g(110, 0);
for (int i = 0; i < N; i ++) {
int A, B, C, D;
cin >> A >> B >> C >> D;
for (int j = A; j < B; j ++)
for (int k = C; k < D; k ++)
g[j][k] = 1;
}
for (int i = 0; i < 100; i ++)
for (int j = 0; j < 100; j ++)
ans += g[i][j];
cout << ans << '\n';
return 0;
}
C - Blue Spring (atcoder.jp)
题意就是在\(N\)天的旅游中,每天会花费\(A_i\)元,但是可以花费\(P\)元使得\(D\)天的花费免费,这\(D\)天可以是分开的.
我们可以将每天的费用从大到小排序,做一个前缀和,将\(D\)天内的花费与\(P\)做一个比较,取其小的费用即可
#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, D;
i64 ans = 0, P;
cin >> N >> D >> P;
vector<i64> F(N + D + 1);
for (int i = 1; i <= N; i ++)
cin >> F[i];
sort(F.begin() + 1, F.begin() + N + 1,greater<>());
for (int i = 1; i <= N + D; i ++)
F[i] += F[i - 1];
for (int i = D; i <= N + D; i += D)
ans += min(P, F[i] - F[i - D]);
cout << ans << '\n';
return 0;
}
D - General Weighted Max Matching (atcoder.jp)
\(N\)最多只有\(16\),可以直接\(dfs\)暴搜(
#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<vector<int>> g(N + 1, vector<int>(N + 1));
for (int i = 1, D; i < N; i ++) {
for (int j = i + 1; j <= N; j++) {
cin >> g[i][j];
g[j][i] = g[i][j];
}
}
bitset<20> vis;
i64 ans = 0;
auto dfs = [&](auto self, int n, i64 sum) ->void{
if (n > N) {
ans = max(ans, sum);
return ;
}
if (!vis[n]) {
vis[n] = 1;
for (int i = n + 1; i <= N; i ++) {
if (!vis[i]) {
vis[i] = 1;
self(self, n + 1, sum + g[i][n]);
vis[i] = 0;
}
}
vis[n] = 0;
}
self(self, n + 1, sum);
};
dfs(dfs,1,0);
cout << ans << '\n';
return 0;
}
E - Sandwiches (atcoder.jp)
对于\(A_i\)和\(A_k\),设其中间的长度为\(L\),当只有这两个点相等时,则这两个点的贡献为\(L\),若\(A_i\)左边还有点,则它们可以与\(A_k\)产生\(Num_左 \times L\)的贡献,同理,\(A_k\)右边还有点的话则与\(A_i\)产生\(Num_右 \times L\)的贡献,所以对于相邻的两个值相等的点产生的贡献为\(L(k-i-1(不包括A_i和A_k)) \times 左边点 \times 右边点\)
#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<i64> A(N), g[N + 1];
for (int i = 0; i < N; i ++) {
cin >> A[i];
g[A[i]].emplace_back(i);
}
i64 ans = 0;
for (int i = 1; i <= N; i ++) {
for (int j = 1; j < g[i].size(); j ++) {
ans += (g[i][j] - g[i][j - 1] - 1) * j * (g[i].size() - j);
}
}
cout << ans << '\n';
return 0;
}
AtCoder Beginner Contest 318的更多相关文章
- 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 ...
随机推荐
- C++与Unity C#交互
C++与Unity C#交互 C++转C#小工具:https://github.com/jaredpar/pinvoke-interop-assistant C++ Custom.h #pragma ...
- webdav协议及我的笔记方案(私有部署)
背景 用markdown用于文章写作,有几年时间了,不是很喜欢折腾,主要就是在电脑上写,用的笔记软件就是typora.由于里面有很多工作相关的,以及个人资料相关的(包含了各种账号.密码啥的),所以不敢 ...
- “进口”双核A53@1.4GHz仅188元起,超高性价比!“邮票孔”AM62x工业核心板,正式发布!
创龙科技作为TI官方合作伙伴,在2022年9月即推出搭载TI最新明星处理器AM62x的工业核心板-SOM-TL62x(B2B版本).为了让工业客户进一步降低产品成本,并提高产品连接的可靠性,我们再次推 ...
- 实现Quartz.NET的HTTP作业调度
Quartz.NET作为一个开源的作业调度库,广泛应用于.NET应用程序中,以实现复杂的定时任务,本次记录利用Quartz.NET实现HTTP作业调度,通过自定义HTTP作业,实现对外部API的定时调 ...
- .Net Core WebApi 使用 JWT 验证身份
.h2 { background-color: rgba(78, 110, 242, 1); color: rgba(255, 255, 255, 1); padding: 10px } 一.注册身份 ...
- VulnHub_DC-6渗透流程
DC-6 kali:192.168.157.131 靶机:192.168.157.150 修改host文件,添加192.168.157.150 wordy不然解析不了域名 信息收集 发现是WordPr ...
- Mybatis Plus 3.X版本的insert填充自增id的IdType.ID_WORKER策略源码分析
总结/朱季谦 某天同事突然问我,你知道Mybatis Plus的insert方法,插入数据后自增id是如何自增的吗? 我愣了一下,脑海里只想到,当在POJO类的id设置一个自增策略后,例如@Table ...
- 原创软件 | 第3期:PDF合并分割助手V1.0(个人免费)
这是一个短的"发布会". 01 基本介绍 近期开发了一个[PDF合并分割助手]. 它是一个实现pdf快速合并.分割的免费软件. 你拥有以下7种选项设置. >>合并选项& ...
- 3.2 逻辑设计和硬件控制语言HCL
在硬件设计中,用电子电路来计算对位进行运算的函数,以及在各种存储器单元中存储位.大多数现代电路技术都是用信号线上的高电压或低电压来表示不同的位值.在当前的技术中,逻辑1是用1.0伏特左右的高电压表示的 ...
- [WUSTCTF2020]朴实无华(命令执行)
请求头问题 去查了一下资料了解了一下没有什莫用 robots.txt 中有东西 假flag 但是请求头里有重要消息 访问页面/fl4g.php <img src="/img.jpg&q ...