Codeforces Round #727 (Div. 2) A~D题题解
比赛链接:Here
1539A. Contest Start
让我们找出哪些参与者会干扰参与者i。这些是数字在 \(i+1\) 和 \(i+min(t/x,n)\)之间的参与者。所以第一个最大值 \((0,n−t/x)\) 参与者将获得 \(t/x\) 不满意,下一个参与者将比上一个参与者少获得 \(1\) 个不满意。所以总的答案是 \(max(0,n−(t/x)⋅t/x+min(n−1,t/x−1)⋅min(n,t/x)/2\)。
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
ll n, x, t;
cin >> n >> x >> t;
ll ans = 0;
if (n > t / x) {
ans = (n - t / x) * (t / x);
t /= x;
ans += t * (t - 1) / 2;
} else ans = n * (n - 1) / 2 ;
cout << ans << "\n";
}
}
1539B. Love Song
伪装成字符串的前缀和
【AC Code】
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n, q;
string s;
cin >> n >> q >> s;
vector<int>pre(n + 1);
for (int i = 0; i < n; ++i)
pre[i + 1] = pre[i] + (int)(s[i] - 'a' + 1);
while (q--) {
int l, r;
cin >> l >> r;
cout << pre[r] - pre[l - 1] << "\n";
}
}
1539C. Stable Groups
给定 \(n\) 个数和 \(k,x\) 两个正整数,现有 \(n\) 个分值为 \(a_i\) 的学生,要求排列后相邻两个学生的差的绝对值不大于x,至多能在序列中插入k个任意分值的学生,最少能把原序列加上新的学生后(可不全加或不加)分为几个满足条件的子序列。
一开始觉得可以写反悔贪心(的确也可以),但模拟的过程发现对两个排序以后的相邻数差值再排序的结果即答案。
即按升序补学生
【AC Code】
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
ll n, k, x;
cin >> n >> k >> x;
vector<ll>a(n);
for (ll &x : a)cin >> x;
sort(a.begin(), a.end());
vector<ll>b(n - 1);
for (int i = 0; i < n - 1; ++i)
b[i] = max(0ll, (a[i + 1] - a[i] - 1) / x);
sort(b.begin(), b.end());
ll cnt = n;
for (int i = 0; i < n - 1; ++i) {
if (b[i] <= k) {
k -= b[i];
cnt--;
}
}
cout << cnt << "\n";
}
1539D. PriceFixed
要买 \(n\) 种商品,每种商品要买 \(a_i\) 个,每种商品在购买过 \(b_i\) 件任意商品后可以打五折,每件商品原价为2,最少需要多少钱。
很明显单纯为了打折而去买多的商品至少需要1+1元,和直接买没区别,那就是直接贪心了。
【AC Code】
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n;
cin >> n;
vector<pair<ll, ll>> v(n);
for (int i = 0; i < n; ++i) {
cin >> v[i].second >> v[i].first;
}
sort(v.begin(), v.end());
int il = 0;
int ir = n - 1;
ll have = 0;
ll ans = 0;
while (il <= ir) {
while (il <= ir && v[il].first <= have) {
ans += v[il].second;
have += v[il].second;
v[il].second = 0;
++il;
}
while (ir >= il && v[ir].second == 0)
--ir;
if (il > ir) break;
ll cnt = min(v[il].first - have, v[ir].second);
v[ir].second -= cnt;
have += cnt;
ans += cnt * 2;
}
cout << ans << '\n';
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n; cin >> n;
vector<ll>a(n), b(n);
for (int i = 0; i < n; ++i) {
cin >> a[i] >> b[i];
}
ll total = accumulate(a.begin(), a.end(), 0ll);
ll ans = 2 * total;
vector<ll>order(n);
iota(order.begin(), order.end(), 0); // 生从 0 到 N 的连续整数,即 0、1、2、3、……、N。
sort(order.begin(), order.end(), [&] (int i, int j) {
return b[i] > b[j];
});
ll cnt = total;
for (ll i : order) {
ll tmp = max(0ll, min(cnt - b[i], a[i]));
ans -= tmp;
cnt -= tmp;
}
cout << ans << '\n';
}
Codeforces Round #727 (Div. 2) A~D题题解的更多相关文章
- Codeforces Round #609 (Div. 2)前五题题解
Codeforces Round #609 (Div. 2)前五题题解 补题补题…… C题写挂了好几个次,最后一题看了好久题解才懂……我太迟钝了…… 然后因为longlong调了半个小时…… A.Eq ...
- Codeforces Round #599 (Div. 2)的简单题题解
难题不会啊…… 我感觉写这个的原因就是因为……无聊要给大家翻译题面 A. Maximum Square 简单题意: 有$n$条长为$a_i$,宽为1的木板,现在你可以随便抽几个拼在一起,然后你要从这一 ...
- Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) (前三题题解)
这场比赛好毒瘤哇,看第四题好像是中国人出的,怕不是dllxl出的. 第四道什么鬼,互动题不说,花了四十五分钟看懂题目,都想砸电脑了.然后发现不会,互动题从来没做过. 不过这次新号上蓝名了(我才不告诉你 ...
- BestCoder Round #11 (Div. 2) 前三题题解
题目链接: huangjing hdu5054 Alice and Bob 思路: 就是(x,y)在两个參考系中的表示演全然一样.那么仅仅可能在这个矩形的中点.. 题目: Alice and Bob ...
- Codeforces Round #310 (Div. 2)--A(简单题)
http://codeforces.com/problemset/problem/556/A 题意:给一个01字符串,把所有相邻的0和1去掉,问还剩下几个0和1. 题解:统计所有的0有多少个,1有多少 ...
- Codeforces Round #416 (Div. 2)(A,思维题,暴力,B,思维题,暴力)
A. Vladik and Courtesy time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...
- Codeforces Round #336 (Div. 2)-608A.水题 608B.前缀和
A题和B题... A. Saitama Destroys Hotel time limit per test 1 second memory limit per test 256 megabyte ...
- Codeforces Round #316 (Div. 2) (ABC题)
A - Elections 题意: 每一场城市选举的结果,第一关键字是票数(降序),第二关键字是序号(升序),第一位获得胜利. 最后的选举结果,第一关键字是获胜城市数(降序),第二关键字是序号(升序) ...
- Codeforces Round #590 (Div. 3)【D题:26棵树状数组维护字符出现次数】
A题 题意:给你 n 个数 , 你需要改变这些数使得这 n 个数的值相等 , 并且要求改变后所有数的和需大于等于原来的所有数字的和 , 然后输出满足题意且改变后最小的数值. AC代码: #includ ...
- Codeforces Round #590 (Div. 3)【D题:维护26棵树状数组【好题】】
A题 题意:给你 n 个数 , 你需要改变这些数使得这 n 个数的值相等 , 并且要求改变后所有数的和需大于等于原来的所有数字的和 , 然后输出满足题意且改变后最小的数值. AC代码: #includ ...
随机推荐
- 快速上手Prompt,让你的LLMs更智能
前言 在当前社会中,随着AIGC的盛行,使用好prompt可以让自己更上一层楼.今天,我将通过星火大模型重新认识prompt设计,并与大家分享一些使用技巧. 如果你想体验星火大模型的强大魅力,请登录h ...
- 小闫s人格大爆发 | 坐椅子上?study:sleep
hadoop视频 搭建环境 刷单词 看电影
- 使用CEF(七)详解macOS下基于CEF的多进程应用程序CMake项目搭建
由于macOS下的应用程序结构导致了CEF这样的多进程架构程序在项目结构.运行架构上有很多细节需要关注,这一块的内容比起Windows要复杂的多,所以本文将会聚焦macOS下基于CEF的多进程应用架构 ...
- mybatis_高级
注解方式: 不需要配置文件 @select等注解直接放在接口mapper里 多表操作: @Select("select * from user1") @Results({ @Res ...
- shell 脚本中的 '-f' 和 '-d' 分别代表什么意思
shell脚本中,'-f' 和 '-d'是用于测试文件类型的条件表达式. 1.'-f'表达式: 表达式: '[ -f file ]' 描述: 判断给定路径是否是一个常规文件 (regular file ...
- Odoo16—权限控制
odoo的权限控制是通过用户组来实现的,在用户组中配置控制权限,然后再添加用户到用户组中,从而实现对用户的访问和操作权限控制.一个用户可以属于多个用户组,用户最终的权限范围取决于所属用户组权限的并集. ...
- Javascript Ajax总结——FormData类型
XMLHttpRequest1级只是把已有的XHR对象的实现细节描述出来.XMLHttpRequest2级进一步发展了XHR.FormData类型FormData类型,为序列化表单以及创建以表单格式相 ...
- cmd命令根据端口号杀进程
1.根据端口查到进程pid netstat –ano|findstr 端口号 1 2.使用taskkill命令杀死进程 taskkill /pid pid 1 温馨提醒: 1.执行完第一步后,命令行显 ...
- DEDECMS 后台系统用户授权目录更改为无限级(默认为二级授权)
在做一个学校的项目,分类有四级分类,总共一百多个分类,因为每个分类对应不同的老师,用于上传资料作为考核,但是添加系统用户的时候发现DEDECMS只有两级分类,所以修改啦一些代码,目前不知道是否修改完全 ...
- Keepass调用Xshell、SecureCRT、RDP、Putty的方法(一劳永逸版)
依次点击"工具"--"选项"--"集成"--"网址替代"--"添加"--添加"方案&quo ...