Only Pluses

算法:数学。

题意简述:有三个数,每次选择一个数 \(x\),使得 \(x\) 增加一,至多操作 \(5\) 次,最后求出这三个数的乘积最大值。

简单题,一眼秒了。考虑把这 \(3\) 个数从小到大排序,显然加最小的数比加其他的数更优。

简单证一下:设排序后的三个数为 \(a,b,c\),有 \(b\times c\ge a\times b\) 且 \(b\times c\ge a\times c\),而 \(b\times c\) 就是把最小数 \(a\) 加一增加的贡献,故改变最小数一定更优。

Angry Monk

算法:数学。

题意简述:有两种操作,把一个大于 \(1\) 的数 \(x\) 拆成 \(x-1\) 和 \(1\);或者把 \(1\) 和另一个数 \(x\) 合并成 \(x+1\),问把原序列合成一个数最少需要几次操作。

简单题,同样一眼秒了。考虑最大的数不要拆,把剩下的数都拆成 \(a_i\) 个 \(1\),最后把每个 \(1\) 和最大数 \(a_1\) 合并。

这里把一个数 \(x\) 拆开需要 \(x-1\) 次操作,合并需要 \(x\) 次操作,总共需要 \(x\times 2-1\) 次操作,所以我们应该按这个数排序,最大操作次数的不动。事实上,就是最大数不动。

Gorilla and Permutation

算法:贪心,构造。

题意简述:定义两个数组 \(f_i\) 和 \(g_i\),构造出的数组为 \(a_i\),给定 \(m,k\)。\(f_i\) 的转移:\(f_i=f_{i-1}+(a_i \ge k?a_i:0)\);\(g_i\) 的转移:\(g_i=g_{i-1}+(a_i \le m?a_i:0)\),最后求序列 \(a\) 使得 \(\displaystyle \sum_{i=1}^{n}(f_i-g_i)\) 取到最大值。

仔细想一想就可以发现,我们要让 \(f\) 尽可能大,\(g\) 尽可能小,所以根据 \(f\) 的定义,我们把当前最大的且能对 \(f\) 造成贡献的放在前面,剩下不能造成贡献的就从小到大放在上文提到那些数的后面,具体证明可以使用调整法,这里不再进行证明。

Test of Love

算法:贪心。

题意简述:有一个长为 \(n\) 的数组,初始在坐标为 \(0\) 的原木(原文中是岸边,但是两者等价,所以下文把岸边称为原木),要走到坐标 \(n+1\) 的原木上。数组中可能有原木,水,鳄鱼三个东西,鳄鱼所在位置不能到达,水的位置的到达次数不能超过 \(k\),每次在原木上可以向后跳跃 \([1,m]\) 格,在水上只能向后移动 \(1\) 格,问能不能到达 \(n+1\) 位置上的原木。

考虑贪心,如果当前在原木上,所在位置能向后到达一个原木,那我们选择最远的原木到达;否则,选择最远的水到达。如果在水上,直接向后即可。在每次出发前判断一下是不是处在鳄鱼格或者经过的水的数量超过限制即可。

每次选择最远的东西过去正确性显然,而优先选择原木是因为,原木一定能比水优,原因是原木可以向后很多,最右边的位置一定比现在最右边的位置远,而水只能向后 \(1\) 格,故原木一定更优。

Novice's Mistake

算法:数学。

题意简述:给出一个数字 \(n\),记 \(s\) 为把 \(n\) 转换为字符串后再把自己重复写 \(a\) 次后删掉最后 \(b\) 个字符(长度不足则删空,数字表示为 \(0\))所表示的数。求出有多少对 \((a,b)\) 满足 \(a\times n-b=s\)。例如字符串 923 表示数 \(923\)。

我们发现 \(n\) 非常小,不超过 \(100\),而 \(a,b\) 也不超过 \(10^4\),故最后的 \(s\) 不超过 \(10^6\)。

这里设 \(len\) 为字符串表示下的 \(n\) 的长度。

所以我们枚举 \(a\) 和最后字符串的长度 \(c\),这里简单推一下可以发现 \(b=a\times len-c\)。然后进行判断,看这样一组 \((a,b)\) 是否满足题意,如果满足加进我们的答案序列中即可。

Valuable Cards

算法:数据结构,数学。

题意简述:给一个序列,序列中没有数 \(x\),现在要求把序列划分成任意成连续段,使得每一段中不存在若干个数相乘的结果为 \(x\)。问最少划分成多少段。

我们考虑使用 set 维护当前如果出现值 \(k\),使得如果后续出现一个数 \(k\) 就能凑出来 \(x\)。

具体维护方式为:我们判断每一个数 \(k\) 是否为 \(x\) 的因数,如果不是跳过即可。否则我们把 \(\dfrac{x}{k}\) 存进去,如果发现出现重复,则把 set 清空,再进行上述操作。而当遇到集合中的数 \(y\) 也是 \(k\) 的倍数时,把 \(\dfrac{y}{k}\) 也存进集合即可。

Ultra-Meow

算法:数学。

题意简述:定义 \(\operatorname {MEX}(S,k)\) 为集合 \(S\) 中没有出现的正数中第 \(k\) 小的,\(|S|\) 为集合 \(S\) 的大小。现在需要求出 \(\displaystyle \sum_{a\in S} \operatorname{MEX}(a,|a|+1)\)。

一道比较正常的组合题,首先简单的想一下,可以看出可能产生的答案一定 \(\in [2,n\times 2+1]\),于是我们把它们分成两段计算。

第一段是答案 \(\in [2,n]\),我们考虑先枚举答案 \(i\),再枚举子集大小 \(j\),比较显然地,可以看出答案为 \(i\times C_{i-1}^{i-j-1}\times C_{n-i}^{j\times 2-i+1}\)。注意这里 \(j\) 的上界为 \(\min(i-1,\dfrac{n-1}{2})\),因为如果超过 \(i-1\) 个数,即使这些数都比 \(i\) 大,答案也至少是 \(i+1\);同理可得,如果超过 \(\dfrac{n-1}{2}\),也是不合法的。

上面的 \(i-j-1\) 其实是因为 \(i-j-1+j+1=i\),所以我们要让前面选这么多数,而剩下的数显然不能选 \(i\),故应该在 \([i+1,n]\) 这个区间中选择剩下的数。

第二段答案显然只有答案 \(i\) 为奇数才能产生贡献,而每一部分的贡献随意取 \(\dfrac{i}{2}\) 个即可,故贡献为 \(i\times C_{n}^{\dfrac{i}{2}}\)。

所以我们预处理组合数,分开计算这两段答案即可。

CF1992场题解的更多相关文章

  1. 2016多校第六场题解(hdu5793&hdu5794&hdu5795&hdu5800&hdu5802)

    这场就做出一道题,怎么会有窝这么辣鸡的人呢? 1001 A Boring Question(hdu 5793) 很复杂的公式,打表找的规律,最后是m^0+m^1+...+m^n,题解直接是(m^(n+ ...

  2. T1 找试场 题解

    拖延症又犯了QwQ. 今天上午考试了,按照惯例,我仍然要把我会的所有题的题解写一遍. 1.找试场(way.cpp/in/out) 问题描述 小王同学在坐标系的(0,0)处,但是他找不到考试的试场,于是 ...

  3. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  4. HDU 全国多校第四场 题解

    题解 A AND Minimum Spanning Tree 参考代码: #include<bits/stdc++.h> #define maxl 200010 using namespa ...

  5. 2019牛客暑期多校第二场题解FH

    F.Partition problem 传送门 题意:有2n个人,分两组,每组n个,要求sum(vij)最大值. 题解:n并不大我们可以枚举每个人是在1组还是2组爆搜. 代码: #include &l ...

  6. 2019牛客暑期多校第六场题解ABDJ

    A.Garbage Classification 传送门 题意:给你两个串,第一个串s由小写字母组成,第二个串t由dwh组成,长度为26,分别表示字母a到z代表的字符.现在要你判断: 如果字符串中‘h ...

  7. 2019牛客暑期多校第五场题解ABGH

    A.digits 2 传送门 题意:给你一个n,要求输出一个每一位数字之和能整除n且其本身也能整除n的数.n不超过100,要求的数不超过10000位数. 题解:直接将n输出n次. 代码: #inclu ...

  8. 2019HDU多校第四场题解

    1001.AND Minimum Spanning Tree 传送门:HDU6614 题意:给你一个又n个点的完全图,点编号从1~n,每条边的权值为被连接的两点编号按位与后的值.现在要你找到最小生成树 ...

  9. 2019牛客暑期多校第一场题解ABCEFHJ

    A.Equivalent Prefixes 传送门 题意:给你两个数组,求从第一个元素开始到第p个元素 满足任意区间值最小的元素下标相同的 p的最大值. 题解:我们可以从左往右记录到i为止每个区间的最 ...

  10. [noi.ac省选模拟赛]第12场题解集合

    题目 比赛界面. T1 数据范围明示直接\(O(n^2)\)计算,问题就在如何快速计算. 树上路径统计通常会用到差分方法.这里有两棵树,因此我们可以做"差分套差分",在 A 树上对 ...

随机推荐

  1. 随机二次元图片API第三弹

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 随机二次元图片API第三弹 日期:2020-3-10 阿珏 ...

  2. 【译】VisualStudio.Extensibility 17.10:用 Diagnostics Explorer 调试您的扩展

    想象一下,创建的扩展比以往任何时候都运行得更快.更流畅!如果您最近还没有跟上,我们一直在努力改进 VisualStudio. Extensibility SDK.VisualStudio. Exten ...

  3. Linux 内核:RCU机制与使用

    Linux 内核:RCU机制与使用 背景 学习Linux源码的时候,发现很多熟悉的数据结构多了__rcu后缀,因此了解了一下这些内容. 介绍 RCU(Read-Copy Update)是数据同步的一种 ...

  4. 4 - 【RocketMQ 系列】CentOS 7.6 安装部署RocketMQ

    五.自启动脚本 1.rocketmq 服务脚本 cd /etc/init.d vim rocketmq 把下面内容填好后 按ESC 再输入 :wq! 保存退出 之后再修改权限 chmod 777 ro ...

  5. 深度解读昇腾CANN模型下沉技术,提升模型调度性能

    本文分享自华为云社区<深度解读昇腾CANN模型下沉技术,提升模型调度性能>,作者:昇腾CANN. AI模型的运行通常情况下需要CPU和NPU(昇腾AI处理器)等AI专用处理器协同工作,CP ...

  6. EasyBPM进销存之物料管理

    本文是EasyBPM平台实现进销存系列中的一篇,主要讲述物料的相关的管理. 在ERP系统中,"物料"一词有着广泛的含义,它是所有产品.半成品.在制品.原材料.配套件.协作件.易耗品 ...

  7. 共享库soname机制

    目录 前言 共享库版本号 共享库命名机制 realname soname linkname 总结 参考文章 前言 在使用第三方库时,我们会发现第三方库会提供一组文件,他们的后缀一般是.so(如libn ...

  8. 微信小程序热门选题

    一.大体实现思路 微信小程序,现在是非常热门的,基于微信生态开发的.现在很多计算机毕业的同学,都会选择微信小程序作为毕业设计 小程序端通常都是展示数据给用户去看的,大多数情况下,这些数据不是写死的,而 ...

  9. [oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

    光标位置 回忆上次内容 上次讲了 三引号的输出 三引号中 回车和引号 都会 被原样输出 \ 还是需要从 \\转义 黑暗森林 快被摸排清了 还有哪个 转义序列 没 研究过吗? \e是 干什么的? 回忆转 ...

  10. QT 的 ModelView

    QApplication a(argc, argv); QDirModel model;    //QDirModel,   问文件目录树 QTreeView tree;    QListView l ...