补题链接:Here

1529A. Eshag Loves Big Arrays

【题意描述】

给定一个长度为 \(n\) 的正整数数组 \(a\) ,现在可执行若干次操作(可为 \(0\))

具体操作为:选定某个序列,删除严格大于序列的平均数的元素

请问最多能删去多少个元素

【解题思路】

观察一下样例容易发现,在若干次操作之后,一定是最小的元素留下,所以我们只需要统计最小值元素个数,然后输出 \(n - Mincnt\)

【AC 代码】

  1. void solve() {
  2. int n;
  3. cin >> n;
  4. int a[n + 1];
  5. for (int i = 1; i <= n; ++i)cin >> a[i];
  6. sort(a + 1, a + 1 + n);
  7. int cnt = 0;
  8. for (int i = 1; i <= n; ++i)if (a[i] == a[1])cnt++;
  9. cout << n - cnt << "\n";
  10. }

1529B. Sifid and Strange Subsequences

【题意描述】

先有一个长度为 \(n\) 的数组,定义“奇怪数组”:数组中任意两个元素的绝对值差值大于等于数组中的最大值,即 \(|a_i - a_j| >= Max\) ,请问由原数组中最大能选出多少个元素构成“奇怪数组”

【解题思路】

很容易证明一个奇怪的子序列不能包含一个以上的正元素。

所以最好选择所有的非正元素,现在我们最多只能选择一个正元素。

假设x是数组中最小的正元素。如果已经选取的集合中没有两个元素(如a和b)以a的方式存在,我们可以选取 \(|x−b |<x\)。

要检查这一点,我们只需对已经拾取的元素进行排序,并查看相邻元素对之间的差异。

复杂性:\(\mathcal{O}(nlog\ n)\)

【AC 代码】

  1. void solve() {
  2. int n;
  3. cin >> n;
  4. vector<int>a(n);
  5. for (int &x : a)cin >> x;
  6. sort(a.begin(), a.end());
  7. int ans = 0, cnt0 = 0, cnt = 0;
  8. for (int i = 0; i < n; ++i) {
  9. if (a[i] < 0)ans++;
  10. else if (a[i] == 0)cnt0++;
  11. }
  12. int res = ans + cnt0, Min = 1e9;
  13. for (int i = 0; i + 1 < n; ++i) {
  14. if (a[i + 1] > 0)break;
  15. Min = min(Min, a[i + 1] - a[i]);
  16. }
  17. for (int i = 0; i < n; ++i)if (a[i] > 0 and a[i] <= Min)cnt++;
  18. res = max(res, ans + (cnt0 > 0) + (cnt > 0));
  19. cout << res << "\n";
  20. }

1529C. Parsa's Humongous Tree

【题意描述】

给你一棵树,树上的每个节点 \(i\) 都有一个值域 \([l_i,r_i]\) ,我们需要从值域中确定一个值 \(a_i \in [l_i,r_i]\) ,而 \((u,v)\) 边权值则为$∣a_u − a_v∣ $ 。我们的目的就是要让所有的边权值之和最大。求出最大权值之和。

【解题思路】

感觉AtCoder上有一道很像的题

【AC 代码】

  1. using ll = long long;
  2. const int N = 1e5 + 10;
  3. vector<int>g[N];
  4. int a[N][2], n;
  5. ll f[N][2];
  6. void dfs(int v, int p) {
  7. for (int s : g[v])
  8. if (s != p) {
  9. dfs(s, v);
  10. f[v][0] += max(f[s][0] + abs(a[s][0] - a[v][0]), f[s][1] + abs(a[s][1] - a[v][0]));
  11. f[v][1] += max(f[s][0] + abs(a[s][0] - a[v][1]), f[s][1] + abs(a[s][1] - a[v][1]));
  12. }
  13. }
  14. void solve() {
  15. cin >> n;
  16. for (int i = 0; i < n; ++i)cin >> a[i][0] >> a[i][1];
  17. for (int i = 0, u, v; i + 1 < n; ++i) {
  18. cin >> u >> v;
  19. --u, --v;
  20. g[u].push_back(v);
  21. g[v].push_back(u);
  22. }
  23. dfs(0, -1);
  24. cout << max(f[0][0], f[0][1]) << "\n";
  25. for (int i = 0; i < n; ++i) {
  26. g[i].clear();
  27. f[i][0] = f[i][1] = 0;
  28. }
  29. }

1529D. Kavi on Pairing Duty

【题意描述】

【解题思路】

设 \(dp_i\) 为 \(2i\) 点的良好配对数。

显然,答案是 \(dp_n\) 。

引理:表示x为与点1匹配的点。注意每个点p(\(x<p≤2n\) )属于长度等于 \([1,x]\) 长度的线段。

证明:假设某点p(\(x<p≤2n\) )与点q配对(q>p),因为[p,q]不在 \([1,x]\) 之内,所以它们的大小必须相等,配对才是好的。

为了计算dpn,考虑以下情况:

  • \(x>n\) :类似于上述引理,可以证明每个点p(\(1≤p≤2n−x+1\))与点i+x配对−1,剩余的未配对x−n−1个点形成一个连续的子阵列,该子阵列位于每个当前对内,因此它们可以在dpx中配对−n−1种方式。
  • \(x≤n\):在这种情况下,由于上述引理,所有的线段必须具有相同的长度,因此它们的长度必须是n的一个除数,在这种情况下,它们可以以D(n)的方式配对;其中D(n)是n的除数。

所以 \(dp_n=D(n)+∑^{n−1}_{i=0}dp_i\)。

注意 \(dp_0=dp_1=1\)。

【AC 代码】

  1. const int N = 1e6 + 10, MOD = 998244353;
  2. int n, dp[N], S;
  3. void solve() {
  4. cin >> n;
  5. for (int i = 1; i <= n; i++) {
  6. for (int j = i + i; j <= n; j += i) {
  7. dp[j]++;
  8. }
  9. }
  10. dp[0] = S = 1;
  11. for (int i = 1; i <= n; i++) {
  12. dp[i] = (dp[i] + S) % MOD;
  13. S = (S + dp[i]) % MOD;
  14. }
  15. cout << dp[n] << endl;
  16. }

Codeforces Round #722 (Div. 2) A~D题解的更多相关文章

  1. Codeforces Round #612 (Div. 2) 前四题题解

    这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...

  2. Codeforces Round #198 (Div. 2)A,B题解

    Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...

  3. Codeforces Round #672 (Div. 2) A - C1题解

    [Codeforces Round #672 (Div. 2) A - C1 ] 题目链接# A. Cubes Sorting 思路: " If Wheatley needs more th ...

  4. Codeforces Round #614 (Div. 2) A-E简要题解

    链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...

  5. Codeforces Round #610 (Div. 2) A-E简要题解

    contest链接: https://codeforces.com/contest/1282 A. Temporarily unavailable 题意: 给一个区间L,R通有网络,有个点x,在x+r ...

  6. Codeforces Round #611 (Div. 3) A-F简要题解

    contest链接:https://codeforces.com/contest/1283 A. Minutes Before the New Year 题意:给一个当前时间,输出离第二天差多少分钟 ...

  7. Codeforces Round #499 (Div. 2) D. Rocket题解

    题目: http://codeforces.com/contest/1011/problem/D This is an interactive problem. Natasha is going to ...

  8. Codeforces Round #499 (Div. 2) C Fly题解

    题目 http://codeforces.com/contest/1011/problem/C Natasha is going to fly on a rocket to Mars and retu ...

  9. Codeforces Round #198 (Div. 2)C,D题解

    接着是C,D的题解 C. Tourist Problem Iahub is a big fan of tourists. He wants to become a tourist himself, s ...

  10. Codeforces Round #579 (Div. 3) 套题 题解

    A. Circle of Students      题目:https://codeforces.com/contest/1203/problem/A 题意:一堆人坐成一个环,问能否按逆时针或者顺时针 ...

随机推荐

  1. 【scipy 基础】--统计分布

    scipy.stats子模块包含大量的概率分布.汇总和频率统计.相关函数和统计测试.掩蔽统计.核密度估计.准蒙特卡罗功能等等. 这个子模块可以帮助我们描述和分析数据,进行假设检验和拟合统计模型等. 1 ...

  2. 重磅:谷歌发布最强大AI模型【Google Gemini】

    一.前言 北京时间 2023年12 月 13 日Google 发布了最新的 Gemini Pro模型,并且提供了 API 访问. 一个更好的消息是:Gemini Pro 可免费使用.赶紧体验起来吧~ ...

  3. nginx 反向代理teleport

    nginx 反向代理teleport 普通配置(以Nginx服务与TP服务在同一台主机上为例) # ...其他内容... server { listen 80; server_name www.you ...

  4. Oracle体系机构、基本术语

    oracle实例.oracle数据库.oracle服务器,这三个术语容易混淆. oracle实例 实例是一个非固定的.基于内存基本进程和内存接口生成.当oracle服务器关闭后,实例也就消失. ora ...

  5. 华企盾DSC造成svn、git连接不上常见处理方法

    1.检查svn服务器是否正在运行 2.检查个人模式连接不上服务器网络加密了客户端未加密(查看客户端日志进程是否为legal:1网络访问设置是否正常,试试只加密服务器IP及端口的方式),个人模式可以连接 ...

  6. 数字孪生为何需要融合GIS?以智慧城市项目为例说明

    数字孪生和地理信息系统(GIS)是两个在现代科技中崭露头角的概念,它们的融合为智慧城市项目带来了革命性的机会.本文将解释数字孪生为何需要融合GIS,并以智慧城市项目为例进行说明. 数字孪生是一种虚拟模 ...

  7. 【并发编程特性】并发编程特性之五种特性的探讨-volatileandsynchronized

    title: [并发编程特性]并发编程特性之五种特性的探讨 date: 2021-11-18 10:16:05.492 updated: 2021-12-26 17:43:10.414 url: ht ...

  8. 【李南江】从零玩转TypeScript

    前言 老套路肯定是 需要知道TS是干啥用的啦. 1.什么是TypeScript(TS)? TypeScript简称TS TS和JS之间的关系其实就是Less/Sass和CSS之间的关系 就像Less/ ...

  9. 『Flutter』开发环境搭建

    1.前言 大家好,我是 BNTang,今天给大家介绍一下 Flutter 的开发环境搭建.在之前我已经将 Dart 的基本语法给大家介绍了,所以今天就不再介绍 Dart 的基本语法了,直接进入 Flu ...

  10. [VMware]ESXI下硬盘的两种直通方式

    文章来自:https://rmbz.net/archives/vmware-esxi-passthrough 最近再搞ESXI,把原来的"黑群晖"改成ESXI:因为群晖里有数据,为 ...