Educational Codeforces Round 172 Solution

news/2024/12/3 0:53:06/文章来源:https://www.cnblogs.com/NightRaven/p/18583155

A. Greedy Monocarp

题目大意

有N个箱子,第i个箱子里有Ai个硬币,有一个人会从多到少拿这些箱子。

现在你可以给一个箱子加若干硬币,请你使这个人可以拿到刚好K个硬币时停下拿箱子,要求加入的硬币数量尽量少。

解题思路

排个序,然后从大到小加,加到刚好不能再多加一个箱子为止,结果就是K-sum。

void solve()
{int n, k;cin >> n >> k;vi v(n);fore(i, v) cin >> i;sort(all(v));reverse(all(v));int sum = 0;rep(i, n) {sum += v[i];if (sum >= k) break;if (i != n - 1)if (sum < k && sum + v[i + 1] > k) {cout << k - sum << endl;return;}}cout << k - sum << endl;
}

B. Game with Colored Marbles

题目大意

两个人玩游戏,桌子上有N个不同颜色的弹珠,他们可以轮流选择弹珠拿走,最后拿完的时候记分,积分规则如下:

  • 有一个不同颜色的弹珠加一分
  • 完全拿完了一种颜色的弹珠加一分

两个人都采取最佳策略,问Alice最后的分数。

解题思路

对于单个的弹珠两个人肯定是轮流拿,剩下的弹珠Alice都能抢到一个。

int cnt[1005];
void solve()
{int n;cin >> n;vi v(n);memset(cnt, 0, sizeof(cnt));fore(i, v) {cin >> i;cnt[i]++;}int cnt1 = 0, cnt2 = 0;repo(i, 1000) {if (cnt[i] == 1) cnt1++;else if (cnt[i] != 0) cnt2++;}int ans = (cnt1 + 1) / 2 * 2 + cnt2;cout << ans << endl;
}

C. Competitive Fishing

题目大意

有一个序列,0表示Alice,1表示Bob,你可以把整个序列分成m段,对于第一段的积分为0,第二段积分为1,第三段积分为3...,两个人分别根据01在哪个段内加分。

现在Bob想领先Alice至少k分,问最少要分多少段(分段方式自选)

解题思路

考虑在某个位置划一刀带来的贡献,贡献就是后缀所有的位置的积分都会+1,那么Bob领先的差值就会增加后缀1的个数减去后缀0的个数。

那么对于每个位置都计算一下后缀1的个数减去0的个数,然后排个序算最少要划几刀就可以了。

int cnt[1005];
void solve()
{int n;cin >> n;vi v(n);memset(cnt, 0, sizeof(cnt));fore(i, v) {cin >> i;cnt[i]++;}int cnt1 = 0, cnt2 = 0;repo(i, 1000) {if (cnt[i] == 1) cnt1++;else if (cnt[i] != 0) cnt2++;}int ans = (cnt1 + 1) / 2 * 2 + cnt2;cout << ans << endl;
}

D. Recommendations

题目大意

有N个区间,一个区间如果完全包含另一个区间,那么就被称作是这个区间的predictor,求每个区间的所有predictor的相同覆盖段长度。

解题思路

显然相同覆盖段长度是这些predictor的最小的R-最大的L,那么就是一个二维数点,求以LR为XY轴的二维平面内,左上角的区域中最小的R和最大的L。

代码从X轴扫的,其实扫Y轴更方便。

const int m = 1e9 + 2;int n, s[200005];struct su {int x, y, id;bool operator<(const su& temp)const {if (x == temp.x) return y > temp.y;return x < temp.x;}
}a[200005];
int ans[200005];void add(int x, int v) {for (;x <= n;x += x & -x) s[x] = max(s[x], v);
}int ask(int x) {int res = 0;for (;x;x -= x & -x) res = max(s[x], res);return res;
}void solve()
{cin >> n;set<int> q;vector<int> f;unordered_map<int, int> mp;for (int i = 1;i <= n;++i) {int x, y;cin >> x >> y;a[i].x = x;a[i].y = y;a[i].id = i;f.push_back(a[i].y);s[i] = 0;}sort(all(f));reverse(all(f));unique(all(f));for (int i = 0;i < f.size();++i) {if (i > 0 && (f[i] > f[i - 1])) break;mp[f[i]] = i + 1;}sort(a + 1, a + n + 1);repo(i, n) {if (i > 1) {q.insert(a[i - 1].y);add(mp[a[i - 1].y], a[i - 1].x);}if ((i > 1 && a[i].x == a[i - 1].x && a[i].y == a[i - 1].y) || (i < n && a[i].x == a[i + 1].x && a[i].y == a[i + 1].y)) {ans[a[i].id] = 0;continue;}auto xx = q.lower_bound(a[i].y);if (xx == q.end()) {ans[a[i].id] = 0;continue;}int y = ask(mp[a[i].y]);if (y == 0 || (*xx) < y) {ans[a[i].id] = 0;continue;}ans[a[i].id] = (*xx) - y - (a[i].y - a[i].x);}repo(i, n) {cout << ans[i] << "\n";}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/845709.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Educational Codeforces Round 172 (Rated for Div. 2)

A. Greedy Monocarp题目大意:给你n个箱子,每个箱子有ai枚硬币,现在有一个人会进行若干次操作:每次拿走硬币最多的箱子,直到他的硬币总和大于等于k。 你可以在一些箱子内增加一些硬币,使得这个人拿走的硬币数量最小,问你最少需要加多少枚硬币。思路: 看数据范围,ai<…

HCIP-15 BGP路由反射器

为解决IBGP水平分割问题可以采用全互联的IBGP连接,但是该方式需要维护大量的IBGP对等体关系,为此可以部署RR来减少IBGP对等体关系的数量。 RR的设定打破了IBGP水平分割规则,为了防止路由环路产生,BGP增加了Originator_ID、Cluster_ID两个路径属性。目录中转AS中的IBGP问题路…

财务知识-期末常用会计分录

财务知识-期末常用会计分录

Rancher容器云管理平台

Rancher容器云管理平台 一、主机硬件说明序号 硬件 操作及内核1 CPU 4 Memory 4G Disk 100G CentOS72 CPU 4 Memory 4G Disk 100G CentOS73 CPU 4 Memory 4G Disk 100G CentOS74 CPU 4 Memory 4G Disk 100G CentOS7二、主机配置 2.1 主机名 # hostnamectl set-hostname rancher…

《痞子衡嵌入式半月刊》 第 112 期

痞子衡嵌入式半月刊: 第 112 期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《…

学习高校课程-系统设计与分析-优化设计(lec8)

将用例行为分发到类 对于每个事件用例流:确定分析类 ,将用例职责分配给分析类 ,在交互图中对分析类交互进行建模描述职责 做什么:创建对象,执行计算,对其他对象的初始化操作,控制和协调工作...... 知道什么:关于私有封装数据,关于相关对象,关于他可以推导和计算的事物…

使用CloudDrive 将网盘挂载本地(网盘本地化,超简单)

使用CloudDrive 将网盘挂载本地(网盘本地化,超简单) 创建时间:20241122 一、介绍 免费的,可以将两个网盘挂载在本地。可实现不用登陆即可 下载。很好用。 之前还有一个alist+RaiDrive 可以免费挂载很多(我觉得没必要懒得搞没搞那个,这个也够用了。感兴趣的可以去试试那…

manim边做边学--曲面

Surface类是Manim中专为创建和操控复杂的三维表面而打造的。 在实际应用中,无论是创建数学教学中的几何模型,还是模拟物理现象中的曲面变化,甚至是构建复杂的动画场景中的三维元素,Surface类都能以其强大的功能和灵活性满足我们的需求。 通过Surface类的参数和方法,我们可…

mac通过网线连接主机(fnOS)

一、mac端 mac是typec的,用了个转接头+网线直连主机,初始化的时候跟下面一致,默认都是自动的点击详细信息,配置IPv4选择使用DHCP二、主机端 主机端是最麻烦的,刚开始的时候怎么也找不到网卡,ifconfg敲了很多遍,最后发现是fnOS没有装驱动。。。 root@server:~# sudo lshw…

05_VIM编辑器

VIM编辑器 一、VIM编辑器的工作模式命令行模式 用户刚刚启动 vi/vim,便进入了命令模式。控制屏幕光标的移动,字符、字或行的删除,移动、复制某区域及进入插入模式,或者到末行模式插入模式 只有在插入模式下才可以做文本输入,按“ESC”键可回到命令行模式末行模式 在命令模…

HTTP协议基础

总结了HTTP协议的一些基础知识。HTTP协议基础 一.定义 HTTP协议(HyperText Transfer Protocol),超文本传输协议,它是一种客户端(如网页浏览器)和服务器端(如网站服务器)之间进行通信、请求与响应数据的规则集合。通过 HTTP 协议,客户端可以向服务器发起获取网页、图片…