Codeforces Round #690 (Div. 3)
第一次 ak cf 的正式比赛,不正式的是寒假里 div4 的 Testing Round,好啦好啦不要问我为什么没有 ak div4 了,差一题差一题 =。=
不知不觉已经咕了一个月了2333。
比赛链接:https://codeforces.com/contest/1462
A. Favorite Sequence
题解
模拟即可。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
deque<int> d;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
d.push_back(x);
}
while (not d.empty()) {
cout << d.front() << ' ';
d.pop_front();
if (not d.empty()) {
cout << d.back() << ' ';
d.pop_back();
}
}
cout << "\n";
}
return 0;
}
B. Last Year's Substring
题解
枚举余下首尾子串的长度即可。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
string s;
cin >> s;
bool ok = false;
for (int i = 0; i <= 4; i++) {
string t = s.substr(0, i) + s.substr(n - 4 + i);
ok or_eq t == "2020";
}
cout << (ok ? "YES" : "NO") << "\n";
}
return 0;
}
C. Unique Number
题解
最小的数一定最短,所以从 9~1 依次减即可,也因此不会存在 \(x\) 减不完的情况。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int x;
cin >> x;
if (x > 45) {
cout << -1 << "\n";
continue;
}
string digit;
for (int i = 9; i >= 1; i--) {
if (x >= i) {
x -= i;
digit += '0' + i;
}
}
cout << string(digit.rbegin(), digit.rend()) << "\n";
}
return 0;
}
拓展
最大的数一定最长,所以从 1~9 依次减即可,也因此需要判断 \(x\) 减不完的情况。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int x;
cin >> x;
if (x > 45) {
cout << -1 << "\n";
continue;
}
string s;
for (int i = 1; i <= 9; i++) {
if (x < i and x != 0) {
x += i - 1;
s.pop_back();
}
if (x >= i) {
x -= i;
s += '0' + i;
}
}
cout << string(s.rbegin(), s.rend()) << "\n";
}
return 0;
}
D. Add to Neighbour and Remove
题解
枚举最后剩下几个数即可。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<int> a(n);
int sum = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
sum += a[i];
}
int ans = INT_MAX;
for (int i = 1; i <= n; i++) {
if (sum % i == 0) {
bool ok = true;
int cur = 0;
for (int j = 0; j < n; j++) {
cur += a[j];
if (cur > sum / i) {
ok = false;
} else if (cur == sum / i) {
cur = 0;
}
}
if (ok) {
ans = min(ans, n - i);
}
}
}
cout << ans << "\n";
}
return 0;
}
E2. Close Tuples (hard version)
题解
将值排序,然后枚举所有值,找到以当前值为最小值且符合题意的元组的最大长度,答案即 \(\sum \limits _{i = 1}^{n} C_{len - 1}^{m - 1}\) 。
代码
#include <bits/stdc++.h>
using namespace std;
constexpr int N = 1e6 + 100;
constexpr int MOD = 1e9 + 7;
int fac[N], inv[N];
int binpow(int a, int b) {
int res = 1;
while (b) {
if (b & 1) res = 1LL * res * a % MOD;
a = 1LL * a * a % MOD;
b >>= 1;
}
return res;
}
int C(int n, int m){
if(m < 0 or m > n) return 0;
return 1LL * fac[n] * inv[m] % MOD * inv[n - m] % MOD;
}
void Init(){
fac[0] = 1;
for (int i = 1; i < N; i++) fac[i] = 1LL * fac[i - 1] * i % MOD;
inv[N - 1] = binpow(fac[N - 1], MOD - 2);
for (int i = N - 2; i >= 0; i--) inv[i] = 1LL * inv[i + 1] * (i + 1) % MOD;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
Init();
int t;
cin >> t;
while (t--) {
int n, m, k;
cin >> n >> m >> k;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a.begin(), a.end());
int64_t ans = 0;
int l = 0, r = 0;
while (l < n) {
while (r < n and a[r] - a[l] <= k) {
++r;
}
if (a[r - 1] - a[l] <= k) {
ans = (ans + C(r - l - 1, m - 1)) % MOD;
}
++l;
}
cout << ans << "\n";
}
return 0;
}
F. The Treasure of The Segments
题解
枚举所有区间即可,满足以下两种情况之一的区间需要删掉:
- 右端点小于所枚举区间的左端点
- 左端点大于所枚举区间的右端点
将区间左右端点分别排序,每次二分查找需要删掉区间的个数即可。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<int> L(n), R(n);
vector<pair<int, int>> seg(n);
for (int i = 0; i < n; i++) {
cin >> L[i] >> R[i];
seg[i] = {L[i], R[i]};
}
sort(L.begin(), L.end());
sort(R.begin(), R.end());
int ans = INT_MAX;
for (auto [x, y] : seg) {
int res = 0;
int l = upper_bound(L.begin(), L.end(), y) - L.begin();
res += n - l;
int r = lower_bound(R.begin(), R.end(), x) - R.begin();
res += r;
ans = min(ans, res);
}
cout << ans << "\n";
}
return 0;
}
Codeforces Round #690 (Div. 3)的更多相关文章
- Codeforces Round #690 (Div. 3) E2. Close Tuples (hard version) (数学,组合数)
题意:给你一长度为\(n\)的序列(可能含有相等元素),你要找到\(m\)个位置不同的元素使得\(max(a_{i-1},a_{i_2},...,a_{i_m})-min(a_{i-1},a_{i_2 ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- Codeforces Round #262 (Div. 2) 1004
Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
随机推荐
- Solon rpc 之 SocketD 协议 - RPC鉴权模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?
问题发生 我们公司代码生成的时候,查询列表统一都是使用了setEntity() ,查询写法如下: public List<BasReservoirArea> selectList(BasR ...
- SQL中的主键,候选键,外键,主码,外码
1.码=超键:能够唯一标识一条记录的属性或属性集. 标识性:一个数据表的所有记录都具有不同的超键 非空性:不能为空 有些时候也把码称作"键" 2.候选键=候选码:能够唯一标识一条记 ...
- 【Web】CSS中的浮动float
CSS中的float 文章目录 CSS中的float 1.float浮动属性 2.float文字环绕图片 3.float浮动的真正原因以及副作用分析 4.清除浮动的四种解决方法 5.实际应用 导航效果 ...
- nginx启动失败(bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket...permissions)
nginx启动失败 nginx启动失败(bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a ...
- QPainter 绘制图像接口
阅读本文大概需要 3 分钟 我们在开发软件的过程中,绘制图像功能必不可少,使用 Qt 绘制图像时非常简单,只需要传递几个参数就可以实现功能,在 Qt 中绘制图像的 api有好几个 void drawI ...
- 【RAC】通过命令查看当前数据库是不是rac
SQL> show parameter cluster_database 如果参数中显示的是 NAME TYPE ...
- leetcode 1240. 铺瓷砖(回溯,DFS)
题目链接 https://leetcode-cn.com/problems/tiling-a-rectangle-with-the-fewest-squares/ 题意: 用尽可能少的正方形瓷砖来铺地 ...
- ctfhub技能树—信息泄露—备份文件下载—vim缓存
打开靶机 查看页面信息 在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容 以 index.php 为例:第 ...
- SAP中的事务锁
我们知道sap中的事物锁tcode是SM01. 细细研究发现,其实无外乎就是将tstc表中的事务码对应的字段CINFO的值加上HEX20 解锁就是还原成原来的值. 当然也发现了,调用了一个系统函数AU ...