Codeforces Round 1000 (Div. 2)

news/2025/1/22 23:03:32/文章来源:https://www.cnblogs.com/maburb/p/18686919

A. Minimal Coprime

题意:互素区间是指\(gcd(l, r) = 1\)的区间,极小互素区间是互素区间并且没有一个被他包含的区间也是互素区间。问你区间\([l, r]\)里有多少个极小互素区间。

根据数论的基础知识,\(x,x+1\)一定是互素的,所以统计所有长度为\(2\)的区间就行,不过要注意,\([1, 1]\)是唯一一个长度不为\(2\)的极小互素区间。

点击查看代码
void solve() {int l, r;std::cin >> l >> r;int ans = r - l;if (l == 1) {ans = std::max(ans, 1);}std::cout << ans << "\n";
}

B. Subsequence Update

题意:给你一个数组,你可以翻转一个子序列,求一次操作后\([l, r]\)区间的最小总和。

赛时把子序列看成子数组了。。。
左边的最小的\(r-l+1\)个数一定能翻转到\([l, r]\)里。具体操作是,假设前\(r-l+1\)小的数有\(x\)个不在\([l, r]\)里面,那么\([l, r]\)里有\((r-l+1)-x\)个最小值,发现不是最小值的正好也是\((r-l+1-(r-l+1)-x)=x\)个,那么明显可以选中这些数进行翻转,这样\(x\)个数就到\([l, r]\)里了。右边同理,所以两边模拟一下取最小就行。

点击查看代码
void solve() {int n, l, r;std::cin >> n >> l >> r;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}auto b = a;std::sort(a.begin(), a.begin() + r);i64 sum1 = 0, sum2 = 0;for (int i = 0; i < r - l + 1; ++ i) {sum1 += a[i];}std::sort(b.begin() + l - 1, b.end());for (int i = l - 1; i < l - 1 + r - l + 1; ++ i) {sum2 += b[i];}i64 ans = std::min(sum1, sum2);std::cout << ans << "\n";
}

C. Remove Exactly Two

题意:给你一颗树,你要删掉两个点,然后使得剩下的连通块最大。

\(u\)的度数为\(deg_u\)。因为树没有环,那么如果删一个点就会分成\(deg_u\)块,那就是删度数最大的。现在考虑两个点,发现如果删除的两个点之间没有连边的话是不影响的,如果连边则因为有一条边重复了会少分成一个块。所以我们先枚举所有度数最大的点看有没有两个最大点之间没有连边,有点话就选这两个点就行。否则就拿一个度数最大的和一个剩下点度数最大的点就行。然后我是用并查集数的联通块,不过好像可以直接算。
这题赛时代码写的奇丑。

点击查看代码
struct DSU {std::vector<int> f, siz;DSU() {}DSU(int n) {init(n);}void init(int n) {f.resize(n);std::iota(f.begin(), f.end(), 0);siz.assign(n, 1);}int find(int x) {while (x != f[x]) {x = f[x] = f[f[x]];}return x;}bool same(int x, int y) {return find(x) == find(y);}bool merge(int x, int y) {x = find(x);y = find(y);if (x == y) {return false;}siz[x] += siz[y];f[y] = x;return true;}int size(int x) {return siz[find(x)];}
};void solve() {int n;std::cin >> n;std::vector<std::vector<int> > adj(n);std::vector<std::pair<int, int> > edges;std::vector<int> deg(n);for (int i = 1; i < n; ++ i) {int u, v;std::cin >> u >> v;-- u, -- v;adj[u].push_back(v);adj[v].push_back(u);++ deg[u]; ++ deg[v];edges.push_back({u, v});}if (n == 2) {std::cout << 0 << "\n";return;}int max = *std::max_element(deg.begin(), deg.end());std::vector<int> b;int x = -1, y = -1, mx = 0;for (int i = 0; i < n; ++ i) {if (deg[i] == max) {b.push_back(i);}}if (b.size() >= 2) {int mx = 0;for (auto & u : b) {for (auto & v : b) {if (u != v) {int flag = 0;for (auto & x : adj[u]) {if (x == v) {flag = 1;break;}}if (max * 2 - flag > mx) {mx = max * 2 - flag;x = u, y = v;}}}if (mx == 2 * max) {break;}}} else {x = b[0];int mx = -1;for (int i = 0; i < n; ++ i) {if (i == x) {continue;}int flag = 0;for (auto & j : adj[i]) {if (x == j) {flag = 1;break;}}if (max + deg[i] - flag > mx) {mx = max + deg[i] - flag;y = i;}}}DSU d(n);for (auto & [u, v] : edges) {if (u != x && u != y && v != x && v != y) {d.merge(u, v);}}int ans = 0;for (int i = 0; i < n; ++ i) {if (i != x && i != y && d.find(i) == i) {++ ans;}}std::cout << ans << "\n";
}

D. Game With Triangles

待补

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

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

相关文章

二. Redis 超详细的安装教程((七步)一步一步指导,步步附有截屏操作步骤)

二. Redis 超详细的安装教程((七步)一步一步指导,步步附有截屏操作步骤) @目录二. Redis 超详细的安装教程((七步)一步一步指导,步步附有截屏操作步骤)1. Redis 详细安装教程2. Redis 后台基本启动 & 详细的基本使用3. Redis 服务器的关闭和启动的注意事项4. 如何修改 Re…

数据分库分表和迁移方案

在我们业务快速发展的过程中,数据量必然也会迎来突飞猛涨。那么当我们的数据量百倍、千倍、万倍、亿倍增长后,原有的单表性能就不能满足我们日常的查询和写入了,此时数据架构就不得不进行拆分,比如单表拆分成10张表、100张表、单个月分多张表等等。下面我们针对具体案例分析…

Power BI 连接GaussDB提取数据方法

Power BI本身没有直接的链接器来获取GaussDB,目前连接GaussDB的方法有2个: ODBC, JDBC,这两种方式在云端都要通过设置网关,pbi云端通过网关链接到虚拟机或者某台电脑上,电脑安装个人网关(组织网关没有成功,不知道为什么,知道原因的希望能留言),下面说下两种连接方式: …

2025-1-20-盒子模型-弹性盒子模型

重新学一下巩固,之前发的看不了,本来还想着直接看呢 盒子模型 width,height是宽高,padding是内边距,如果里边有文本的话一般是贴着左上方,但是有内边距就不会,类似下边的演示图;border是内外之间边框,就是给宽高之外加一层;margin是外边距,可以理解为是你构造的边框…

【Ubuntu】安装OpenSSH启用远程连接

【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端: sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端: sudo systemctl start ssh贰、配置SSH(可跳过) 配置文件 OpenSSH的配置文件所在位置:/etc/ssh/sshd_confi…

CTF-web第二步!

菜狗杯web的传说之下。打开F12,发现有个Game=new Underophidian(gameCanvas)表明有个Game变量存储着数据。在控制台输入Game获取,根据题意,修改分数,然后玩一下就可以得到flag了。

【CodeForces训练记录】Codeforces Round 1000 (Div. 2)

训练情况赛后反思 C题猜了个假结论WA4,每次选择度最多的删掉,在连续三个度都是最大的情况下,删中间的会寄 A题 有点前缀和的感觉,\([1,l]\) 互质个数为 \(l\),\([1,r]\) 互质个数为 \(r\),所以区间 \([l,r]\) 的个数就是 \(r-l\),特判一下 \(l=1,r=1\) 的情况答案是 \(1\…

GUIClip在IMGUI中的作用

目录简介IMGUIGUIClipPush Pop Count局部坐标StyleDraw中Rect点的位置鼠标位置绝对坐标ScrollOffset对局部坐标的影响局部坐标和绝对坐标的相互转化裁剪参考链接 简介 Unity中的IMGUI是一个独立于ugui的UI系统。IMGUI是事件(消息)驱动的UI系统,主要用于编写开发工具。 Unity官…

ceph-安装

【os】 ubuntu1804 【文心上找到的】 【步骤】一、环境准备‌配置节点名称‌:配置集群各节点的hostname,确保互相可以通过hostname来解析节点IP,不需要通过DNS。 ‌时间同步‌:确保所有节点的时间同步,以避免时间不一致导致的问题。 ‌关闭防火墙和SELinux‌:为了简化安装…

开源项目芋道源码解析 [开篇]

文章首发于我的博客:https://blog.liuzijian.com/post/source-code-about-ruoyi-vue-pro.html 1.引言 芋道(又名yudao,ruoyi-vue-pro)是一个基于spring-boot框架的单体Java后端开源项目,拥有基于RBAC模型的组织架构管理、CRM、ERP、商城、代码生成、AI等多个功能模块。封装了…

【跟着阿舜学音乐-笔记】2.2了解架子鼓

2.2了解架子鼓 架子鼓:学名爵士鼓,最早起源于爵士乐,后演变为流行音乐中最主要的套鼓。这里展示一下架子鼓构成2.2.1.底鼓 低音大鼓,在整套乐器中声音最低、最重的鼓,它主要的作用就是铺设节奏。导入导出音轨时,一般写作BD,即英文Bass Drum。(在音乐当中,越是低音的部…

Java编程规范-常量定义

常量定义规范【强制】常量不允许任何魔法值(即未经定义的常量)直接出现在代码中。 反例: String key = "Id#taobao_" + tradeId; cache.put(key, value);【强制】long 或者 Long 初始赋值时,必须使用大写的 L,不能是小写的 l,小写容易跟数字 1 混淆,造成误解…