Contest

A. defile

struct 自定义排序。按照题意抽象成模型模拟就可以了。

自定义排序核心代码:

struct node {
int x, id;
} d[1000003]; bool cmp1(const node& a, const node& b) {
return a.x < b.x;
}
bool cmp2(const node& a, const node& b) {
return a.id < b.id;
}

坑点:注意排序函数调用时参数问题。sort 的区间应该是 \([l,r)\),左闭右开。所以例如排序 a 到 b 之间的元素,应写作:

sort(d+a, d+b+1); // 包含 a,不包含 b+1

B. mute

贪心求最优解。思路类似于 [[雷达安装]]。

C. queue

给定正整数 \(N\),对于 \(N\) 的所有排列,求使排列中每两个相邻元素的数值差的绝对值的和的最大值。即求最大化 \(\sum\limits_{i=1}^{N-1}\lvert a_i-a_{i+1}\rvert\)。

我们考虑 \(N=10\) 的情况。为使答案尽可能大,我们应该尽量远离相差较小的两个数字,把相差较大的两个数字放在一起。

容易得出,数列 \(1,10,2,9,3,8,4,7,5,6\) 的答案为 \(45\),不是最优解。

我们在数列某处放入 \(10\)。显然,\(1\) 和 \(2\) 应该放在 \(10\) 的两侧,顺序任意。

而此时不应该立即填入 \(3,4\),而是填入 \(9,8\),以保证大小分布的均匀。

同理,填入 \(3,4,7,6,5\) 后数列如下:\(6,3,8,1,10,2,9,4,7,5\),答案为 \(49\)。

注意其中每两个数字的填入是随意的,左右填入相反不影响答案,但是为了计算方便,这里统一为左边填入较小的数字、右边填入较大的数字。\(5\) 作为独立的数字,放在最后面(比放在前面答案大)。

此时可作出差分数组 \(2,3,5,7,9,8,7,5,3\)。

观察可得,对于偶数 \(N\) 的排列,和的最大值为 \(2+2(3+5+7+\cdots+N-3)+(N-2)+(N-1)=2N-1+\displaystyle\frac{N(N-4)}{2}\)。

同理,当 \(N\) 为奇数时,和的最大值为 \(2(2+4+6+\cdots+N-3)+(N-2)+(N-1)=2N-3+\displaystyle\frac{(N-1)(N-3)}{2}\)。

特别地,当 \(N=1\) 时,最大值为 \(0\) 而不是 \(-1\)。(坑点)

综上。

注意开 long longprintf 参数的类型问题。

22 October in 614的更多相关文章

  1. 26 October in 614

    Practice tower 有 \(N\,(2\le N\le 600000)\) 块砖,要搭一个 \(N\) 层的塔,要求:如果砖 \(A\) 在砖 \(B\) 上面,那么 \(A\) 不能比 \ ...

  2. 23-25 October in 614

    Practice sort 给定一系列形如 \(A<B\) 的不等关系,判断前 \(k\) 个不等关系是否即可确定 \(n\) 个元素之间的大小顺序:如果不可确定,判断前 \(k\) 个不等关系 ...

  3. 蓝牙Bluetooth技术手册规范下载

    [背景] 之前就已经整理和转帖了和蓝牙技术相关的一些内容: [资源下载]bluetooth 协议 spec specification 蓝牙1.1.蓝牙1.2.蓝牙2.0(蓝牙2.0+EDR)区别 但 ...

  4. An Implementation of Double-Array Trie

    Contents What is Trie? What Does It Take to Implement a Trie? Tripple-Array Trie Double-Array Trie S ...

  5. android-包签名

    android-包签名 应用能在Android 系统上安装必须是经过有私有key的证书数据签名.Android系统通过证书确定应用的作者,和与应用建立信任关系.证书不会用于控制应用的安装.证书不需要权 ...

  6. 网络-04-端口号-linux端口详解大全--TCP注册端口号大全

    # John Murphy <john.m.murphy&mci.com>afs3-fileserver 7000/tcp file server itselfafs3-files ...

  7. [官网]Linux版本历史

    This is a list of links to every changelog. https://kernelnewbies.org/LinuxVersions 总结一下 2.6.x 存在了八年 ...

  8. 蓝牙Bluetooth技术手册规范下载【转】

    蓝牙Bluetooth技术手册规范下载 http://www.crifan.com/summary_bluetooth_specification_download/ [背景] 之前就已经整理和转帖了 ...

  9. Patrick Hughes - 错觉3D雕塑艺术

    Pictures Patrick Hughes (artist) From Wikipedia, the free encyclopedia Patrick Hughes. Leaning on a ...

随机推荐

  1. hibernate搭建及其增删改查

    一.jar包 最基础的hibernatejar包,以及数据库驱动的jar包 二.数据库 t_user表 id int 主键 自动增长 name varchar() 三.配置文件 <?xml ve ...

  2. org.w3c.dom。 XML解析 练习

    HTML文档 1 import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; ...

  3. XML学习——java解析xml文件

    递归获取每个标签 package test; import java.io.File; import java.util.List; import org.dom4j.Document; import ...

  4. MYSQL 的七种join

    建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...

  5. 二维码生成器,基于python,segno库

    import segno temp = input("Please enter value:") qr = segno.make(temp) qr.save("qrcod ...

  6. java_第一年_JavaWeb(7)

    JSP执行过程 客户端发出请求访问JSP文件 JSP Container将要访问的JSP文件转译为Servlet的源代码(转译时期),并将其编译成.class文件(编译时期): 执行编译后的.clas ...

  7. JavaScript 各种遍历方式详解及总结

    JavaScript 各种遍历方式详解 在$.each中想要终止循环,但是它没有continue或者break这样的终止方式,所以尝试使用return来进行终止,但是发现并没有跳出循环.为了搞清楚js ...

  8. 如何查找django安装路径

    需要找到django的安装路径,官方说的那个方法不好用,国内搜索都是都不到的,后来谷歌搜到了很简单 import django django 这样就可以找django的安装路径了,真心不懂为什么国内都 ...

  9. 20180329-layoutSubviews的调用机制

    如果你想强制更新布局,不要直接调用此方法,你可以调用setNeedsLayout方法,如果你想立即显示你的views,你需要调用layoutIfNeed方法 layoutSubviews作用: lay ...

  10. 环境管理 pipenv 的 使用

    安装 pip3 install pipenv 配置 配置 环境变量 WORKON_HOME , 表示 生成的虚拟环境 文件 的 存放位置 创建虚拟环境 方式一 pipenv --python 3.7 ...