ABC306 A - F

代码不提供

A

题意:吧字符串的每个字符连续输出两遍,记得不要快读,不要忘记输入 $ n $

纪念 Qinzh A 题 WA 掉

B

题意:给定长度为 $ 64 $ 的数组 $ A $,输出 $ \sum_{i = 0}^{63} A_i2^i $

暴力模拟即可

注意要开 unsigned long long

纪念我 WA 了 $ 2 $ 次,第一次用的 int,第二次 long long,第三次 unsigned long long AC

C

题意:给定一个数组 $ A $,里面每个数出现 $ 3 $ 次

把每个数第二次出现的下标排序

只需要用 map < int, int > 来记录出现的次数

然后就过了

D

题意:

孔祥琸去了一家餐厅,他要吃 $ n $ 份饭,每份饭可能是有毒的

他要是吃了有毒的饭,会肚子疼

如果他现在肚子疼,而且又吃了一份有毒的饭,那么世界上的祸害就少了一个,否则他的肚子立刻就会好起来

每份饭有美味度 $ y $,和是否有毒的标识 $ x $,求他不死的前提下能品尝的最大美味度(他可以选择不吃哪份饭)

(题里 $ n $ 的范围是 $ 3 \times 10^5 $,他这么能吃吗?)

这个题我们需要写 dp

设 $ dp_{i, 0/1} $ 表示他吃到第 $ i $ 份饭,和他肚子的状态

然后考虑有毒的情况

他吃的话,肚子一定疼,所以他之前肚子是好的,也就是上一份饭是无毒的

不吃就是,上一盘把上一盘的状态延续

无毒的情况如下:

他如果吃,就不论之前的状态如何,直接更新

否则就可以考虑把之前的情况延续

然后就做完了

E

题意:$ n $ 个数,$ q $ 次操作,每次操作令 $ a_{x_i} = y_i $,每次操作完求前 $ k $ 大之和

这个题考虑平衡树,可以很方便的求出每个数的排名

我们考虑前 $ k $ 大的和用一个变量记录

我们先考虑插入,插入的时候我们需要查询排名,如果能排到前 $ k $ 大,就把原先的最小的顶替掉,同时处理答案

删除的时候,如果删掉了前 $ k $ 个,就把第 $ k + 1 $ 大的顶上

然后每次把 $ a_{x_i} $ 删掉,然后插入 $ y_i $

接着输出答案就可以了

F

题意:有 $ n $ 个长度为 $ m $ 的集合 $ s $,定义 $ f_{s_i, s_j} $ 表示把两个集合并起来中集合 $ i $ 中所有数排名的和(从小到大)

求所有 $ f_{s_i, s_j} $ 保证 $ i < j $

所有集合的数互不相同

考虑计算的东西是 $ \sum_{i = 1}^{n - 1} \sum_{j = i + 1}^{n} f(s_i, s_j) $

这里考虑枚举一个 $ k $,表示枚举 $ s_i $ 中的元素,然后他的排名如下:

在 $ s_i $ 里面的排名是 $ k $,在 $ s_j $ 里面的排名暂时记为 $ c_{j, a_{i, k}} $

然后我们要求的东西就变成了 $ \sum_{i = 1}^{n - 1} \sum_{j = i + 1}^{n} \sum_{k = 1}^{m} (k + c_{j, a_{i, k}}) $

考虑把 $ k $ 提出来: $ \sum_{i = 1}^{n - 1} \sum_{j = i + 1}^{n} \frac{m(m + 1)}{2} + \sum_{i = 1}^{n - 1} \sum_{j = i + 1}^{n} \sum_{k = 1}^{m} c_{j, a_{i, k}} $

这里 $ \sum_{k = 1}^{m} k $ 也就是从 $ 1 $ 加到 $ m $,等于 $ \frac{m(m + 1)}{2} $

然后我们把前面的枚举完全拆开,得到 $ \frac{n(n - 1)}{2} \cdot \frac{m(m + 1)}{2} + \sum_{i = 1}^{n - 1} \sum_{j = i + 1}^{n} \sum_{k = 1}^{m} c_{j, a_{i, k}} $

接下来考虑优化后面,我们可以把所有数离散化后插入到值域树状数组里面,然后一下子求得在所有集合里面的排名

具体操作是倒着枚举,一边计算一边插入,就可以实现不重复,可以自己想一想

然后就可以把 $ j $ 这一层循环给去掉:

$ \frac{n(n - 1)}{2} \cdot \frac{m(m + 1)}{2} + \sum_{i = 1}^{n} \sum_{k = 1}^{m} c_{j, a_{i, k}} $

复杂度是 $ O(nm\log{nm}) $

ABC306 A - F的更多相关文章

  1. Mysql_以案例为基准之查询

    查询数据操作

  2. 在 C# 里使用 F# 的 option 变量

    在使用 C# 与 F# 混合编程的时候(通常是使用 C# 实现 GUI,F#负责数据处理),经常会遇到要判断一个 option 是 None 还是 Some.虽然 Option module 里有 i ...

  3. 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型

    前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.

  4. 如果你也会C#,那不妨了解下F#(2):数值运算和流程控制语法

    本文链接:http://www.cnblogs.com/hjklin/p/fs-for-cs-dev-2.html 一些废话 一门语言火不火,与语言本身并没太大关系,主要看语言的推广. 推广得好,用的 ...

  5. 使用F#开发ASP.NET Core应用程序

    .NET Core 里的F# 在.NET Core刚发布时,就已经添加了对F#的支持.但因为当时F#组件还不完整,而一些依赖包并没有放在Nuget上,而是社区自己放到MyGet上,所以在使用dotne ...

  6. 如果你也会C#,那不妨了解下F#(6):面向对象编程之“类”

    前言 面向对象的思想已经非常成熟,而使用C#的程序员对面向对象也是非常熟悉,所以我就不对面向对象进行介绍了,在这篇文章中将只会介绍面向对象在F#中的使用. F#是支持面向对象的函数式编程语言,所以你用 ...

  7. 如果你也会C#,那不妨了解下F#(5):模块、与C#互相调用

    F# 项目 在之前的几篇文章介绍的代码都在交互窗口(fsi.exe)里运行,但平常开发的软件程序可能含有大类类型和函数定义,代码不可能都在一个文件里.下面我们来看VS里提供的F#项目模板. F#项目模 ...

  8. 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数

    函数式编程其实就是按照数学上的函数运算思想来实现计算机上的运算.虽然我们不需要深入了解数学函数的知识,但应该清楚函数式编程的基础是来自于数学. 例如数学函数\(f(x) = x^2+x\),并没有指定 ...

  9. 如果你也会C#,那不妨了解下F#(3):F#集合类型和其他核心类型

    本文链接:http://www.cnblogs.com/hjklin/p/fs-for-cs-dev-3.html 在第一篇中,我们介绍了一些基础数据类型,其实那篇标题中不应该含有"F#&q ...

  10. 如果你也会C#,那不妨了解下F#(1):F# 数据类型

    本文链接:http://www.cnblogs.com/hjklin/p/fs-for-cs-dev-1.html 简单介绍 F#(与C#一样,念作"F Sharp")是一种基于. ...

随机推荐

  1. js md5 和java md5后的值不一样

    开发发现js 对字符串md5 和 java对字符串md5 计算的结果居然不一样,后来找了一个匹配的这里记录一下 注:加密的对象中不能有空格,有空格md5后的结果就不一致,都是眼泪.. js md5算法 ...

  2. Oracle数据库学习总结

    SQL 笔记 ch3_cn 1.数据类型记录 char(n) 定长字符 varchar(n) 可变长字符 numeric(p,d) 定点数,总位数p,小数点后位数q float(n) n位浮点数 2. ...

  3. Spring cloud gateWay 限流器限流(一)

    转载请注明出处: spring cloud 提供了限流操作的功能,其使用步骤如下: 1.引入maven依赖: <dependency> <groupId>org.springf ...

  4. ThreadLocal应用及理解

    转载请注明出处: 1. 先展示threadLocal的一个简单封装,该封装用来在不同的请求线程中解析用户参数.在请求经过过滤器时, 对用户的信息进行设置入 ThreadLocalContext 中,可 ...

  5. C#/.Net Core/WPF框架初建(国际化、主题色)

    C#/.Net Core/WPF框架初建(国际化.主题色) English | 简体中文 作为 TerminalMACS 的一个子进程模块 - WPF管理端,目前搭建框架部分功能:本地化.国际化.主题 ...

  6. C:\Keil_v5\ARM\ARMCC\include\stdint.h contains an incorrect path.

    1.问题 在使用Keil uvison5打开例程代码进行学习时,发现部分.h文件无法读取 2.解决方法 1.找到如图的设置按钮(小锤子) 2.根据自己所用的是C/C++还是ARM选择(我这里是C/C+ ...

  7. 探讨Java死锁的现象和解决方法

    死锁是多线程编程中常见的问题,它会导致线程相互等待,无法继续执行.在Java中,死锁是一个需要注意和解决的重要问题.让我们通过一系列详细的例子来深入了解Java死锁的现象和解决方法. 1. 什么是死锁 ...

  8. [转帖]ss 输出格式说明

    ss 命令输出详解ss 全名socket statistics,是iproute2中的一员ss已经替代netstat,大热于江湖.但是关于ss命令输出的内容,是什么意思呢? [root@test]#  ...

  9. [转帖] 请求量突增一下,系统有效QPS为何下降很多?

    https://www.cnblogs.com/codelogs/p/17056485.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 最近我观察到一 ...

  10. [转帖]lsblk命令详解

    https://www.cnblogs.com/ishmaelwanglin/p/11043918.html lsblk命令用来查看block设备的信息. 主要应用场景: 获取wwnid,获取块设备列 ...