Educational Codeforces Round 86 (Div. 2)
比赛链接:https://codeforces.com/contest/1342
A - Road To Zero
题意
有两个非负整数 x, y 以及两种操作:
- 支付 a 点代价使其中一个数加一或减一
- 支付 b 点代价使两个数都加一或减一
问使二者为 0 的最小代价。
思路
把较大的数减至与较小数相等再选取 min(2 * a, b) 把二者减为 0 即可。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
long long x, y, a, b; cin >> x >> y >> a >> b;
cout << min(2 * a, b) * min(x, y) + a * (max(x, y) - min(x, y)) << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}
B - Binary Period
题意
给定 01 串 t,构造 01 串 s,要求满足:
- 长度不超过 2 * | t |
- t 为 s 的一个子序列
- s 由最短的字符串重复而成
思路
如果 t 中只含有一种字符直接输出 t 即可,否则对于 t 中的每位均用“01”代替。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
string t; cin >> t;
int zero = 0, one = 0;
for (char c : t)
if (c == '0') zero = 1;
else one = 1;
if (zero + one == 1) cout << t << "\n";
else {
for (int i = 0; i < t.size(); i++)
cout << "01";
cout << "\n";
}
} int main() {
int t; cin >> t;
while (t--) solve();
}
C - Yet Another Counting Problem
题意
给你两个正整数 a, b,回答 q 次询问:[l, r] 区间中有多少数 x % a % b != x % b % a 。
思路
观察到条件为 x % a % b != x % b % a,可以联想到 (x + lcm(a, b)) % a % b != (x + lcm(a, b)) % b % a ,所以只需计算 [1, lcm] 区间内满足条件的数的个数,然后计算 [1, l - 1], [1, r] 中各有多少个长为 lcm 的区间,考虑到可能有不完全包含区间,所以可以计算 [1, lcm] 内的前缀和,查询长度对 lcm 取余对应的前缀和即为不完全包含区间中满足条件的数的个数。
代码
#include <bits/stdc++.h>
using LL = long long;
using namespace std; void solve() {
int a, b, q; cin >> a >> b >> q;
int lcm = a * b / __gcd(a, b);
int cnt[lcm + 1] = {};
for (int i = 1; i <= lcm; i++) {
cnt[i] = cnt[i - 1] + (i % a % b != i % b % a);
}
auto f = [&] (LL n) -> LL {
return cnt[lcm] * (n / lcm) + cnt[n % lcm];
};
for (int i = 0; i < q; i++) {
LL l, r; cin >> l >> r;
cout << f(r) - f(l - 1) << " \n"[i == q - 1];
}
} int main() {
int t; cin >> t;
while (t--) solve();
}
D - Multiple Testcases
题意
将 n 个数分为尽可能少的数组,要求每个数组中大于等于 i 的数不超过 ci 个。
思路
一种较为简便的方法是:利用后缀和算出大于等于 i 的数共有多少个,最少需要的数组即为 $max \lceil \frac{n_i}{c_i} \rceil$,之后从小到大循环推入数组元素。但是这种贪心的原理仍有待证明。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k; cin >> n >> k;
int suf[k + 1] = {};
int m[n]; for (int &i : m) cin >> i, ++suf[i - 1];
int c[k]; for (int &i : c) cin >> i;
int ans = 0;
for (int i = k - 1; i >= 0; i--) {
suf[i] += suf[i + 1];
ans = max(ans, (suf[i] - 1) / c[i] + 1);
}
vector<int> vec[ans];
sort(m, m + n);
for (int i = 0; i < n; i++)
vec[i % ans].push_back(m[i]);
cout << ans << "\n";
for (auto v : vec) {
cout << v.size();
for (auto i : v) cout << ' ' << i;
cout << "\n";
}
}
Educational Codeforces Round 86 (Div. 2)的更多相关文章
- Educational Codeforces Round 84 (Div. 2)
Educational Codeforces Round 84 (Div. 2) 读题读题读题+脑筋急转弯 = =. A. Sum of Odd Integers 奇奇为奇,奇偶为偶,所以n,k奇偶性 ...
- Educational Codeforces Round 58 Div. 2 自闭记
明明多个几秒就能场上AK了.自闭. A:签到. #include<iostream> #include<cstdio> #include<cmath> #inclu ...
- Educational Codeforces Round 47 (Div 2) (A~G)
目录 Codeforces 1009 A.Game Shopping B.Minimum Ternary String C.Annoying Present D.Relatively Prime Gr ...
- Educational Codeforces Round 46 (Div 2) (A~G)
目录 Codeforces 1000 A.Codehorses T-shirts B.Light It Up C.Covered Points Count(差分) D.Yet Another Prob ...
- Educational Codeforces Round 45 (Div 2) (A~G)
目录 Codeforces 990 A.Commentary Boxes B.Micro-World C.Bracket Sequences Concatenation Problem D.Graph ...
- Educational Codeforces Round 85 (Div. 2)
题目链接:https://codeforces.com/contest/1334 A. Level Statistics 题意 一个关卡有玩家的尝试次数和通关次数,按时间顺序给出一个玩家 $n$ 个时 ...
- Educational Codeforces Round 119 (Div. 2), (C) BA-String硬着头皮做, 能做出来的
题目链接 Problem - C - Codeforces 题目 Example input 3 2 4 3 a* 4 1 3 a**a 6 3 20 **a*** output abb abba b ...
- Educational Codeforces Round 108 (Div. 2), C map套vector存储
地址 Problem - C - Codeforces 题目 题意 一个学校有n个人参加比赛,他们分别属于ui队,每个人的能力值为si 当每个队需要1~n个人的时候,这个学校能参加的人的能力值和最大 ...
- Educational Codeforces Round 62 Div. 2
突然发现上一场edu忘记写了( A:签到. #include<iostream> #include<cstdio> #include<cmath> #include ...
随机推荐
- JavaScript中的原型、原型链、原型模式
今天,咱来聊聊JavaScript中的原型跟原型链 原型跟原型模式 这一块的知识,主要是设计模式方面的. 首先,我们知道JavaScript是面向对象的.既然是面向对象,那它自然也有相应的类跟对象等概 ...
- 微信小程序代码上传,审核发布小程序
1.打开微信开发者工具 管理员扫码 -> 填写好小程序的项目目录.AppID(必须是客户已注册好的AppID).项目名称 2.在app.js中修改id(客户登录后台管理系统的id),app.js ...
- OO第三次总结博客
规格化设计的发展历史 (因为很难寻找,所以参考了下别的同学的调研结果) 规格化设计与结构化.模块化设计密不可分,伴随着OOP语言的发展,规格化设计思想逐渐形成体系,慢慢完善. 20世纪60年代,程序的 ...
- 树莓派做私有云盘-极简版(owncloud)
这里直接给出配置好私有云的镜像,只需烧录镜像后微改配置后即可使用 链接:https://pan.baidu.com/s/1EOQaSQso-0wmnuWgZKknZg提取码:q26h 1.直接将此镜像 ...
- 华为三层交换机限制vlan段的指定端口
屏蔽vlan 120这个段的ip的所有2333端口 [NTT_3L]int Vlanif 120 [NTT_3L-Vlanif120]dis this # interface Vlanif120 ip ...
- (17)-Python3之--文件操作
1.文件的操作流程 第一,建立文件对象. 第二,调用文件方法进行操作. 第三,不要忘了关闭文件.(文件不关闭的情况下,内容会放在缓存,虽然Python会在最后自动把内容读到磁盘,但为了以防万一,要养成 ...
- charles安装使用乱码连手机等问题解决方案
捣鼓半天终于安装好了,给大家分享下我的过程 1.安装, 正常网上安装即可,我安装了个有汉化包的,,推荐链接 安装方法下载破解版,安装即可 安装包地址:https://pan.baidu.com/s/1 ...
- 一站式入口服务|爱奇艺微服务平台 API 网关实战 原创 弹性计算团队 爱奇艺技术产品团队
一站式入口服务|爱奇艺微服务平台 API 网关实战 原创 弹性计算团队 爱奇艺技术产品团队
- (004)每日SQL学习:物化视图之二
一. 物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可 ...
- (Oracle)取当前日期的最近工作日
描述:现有一需求,日期表中存放了日期和是否节假日(0-工作日,1-节假日),现在需要取日期表中的最近的工作日.如2017/07/23(周日)最近的工作日应该是2017/07/21(周五). ...