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. 【自动化测试】WebDriver使用

    from selenium import webdriver from selenium.webdriver.common.keys import Keys from bs4 import Beaut ...

  2. Golang通过反射获取结构体的标签

    Golang通过反射获取结构体的标签 例子: package main import ( "fmt" "reflect" ) type resume struc ...

  3. 16/7/14-MySQL-修改mysql5.6以上版本root密码

    版本更新,原来user里的password字段已经变更为authentication_string 版本更新 缘故,好多网上的教程都不适用了,甚至连官网的文档也不是能够顺利操作的. 如果 MySQL ...

  4. MySQL 查询语句--------------进阶9:联合查询

    #进阶9:联合查询 /* union 联合 合并:将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union..... 应用场景:要查询的结果来自于多个表,且多个表没有 ...

  5. git不能先commit后再pull

    本文首发hilsion的博客 今天遇到一个在使用git上的一个误区.具体的问题现象是: 我commit后再pull而不能在本地合并的情况,结果导致我的commit直接把同事的修改覆盖了.因为相对于我此 ...

  6. [Python3] 024 面向对象 第四弹

    目录 11. 类和对象的三种方法 12. 抽象类 12.1 抽象方法 12.2 抽象类 12.3 抽象类的使用 13. 自定义类 接上一篇 [Python3] 023 面向对象 第三弹 11. 类和对 ...

  7. 从0 开始手写一个 RPC 框架,轻松搞定!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 来源:juejin.im/post/5c4481a4f265da613438aec3 之前在 RPC框架底层到底什么原理得知 ...

  8. Kubernetes V1.16.2部署Dashboard V2.0(beta5)

    Kubernetes V1.16.2部署Dashboard V2.0(beta5) 在Master上部署Dashboard 集群安装部署请看安装Kubernetes V1.16.2 kubectl g ...

  9. 【洛谷p1025】数的划分

    数的划分[传送门] 算法的话,dfs+剪枝: 据说是01年之前的NOIp提高组: 思路: 这道题是求把n无序的划分成k份的方案数,最直接的搜索方法是依次枚举x1,x2……xk的值,然后判断,显然这么搜 ...

  10. Manacher(输出最长回文串及下标)

    http://acm.hdu.edu.cn/showproblem.php?pid=3294 Girls' research Time Limit: 3000/1000 MS (Java/Others ...