2019.8.13 模拟赛
T1
题意
有一个\(1...n\)的排列,现在给出\(n\)和一个正整数\(k\),代表目标是原序列右移\(k\)次的结果(右移一位代表将当前的序列末尾插入头上,如\(12345\)右移两次是\(45123\))你可以进行任意次操作,每次反转一个区间\([l,r]\),最终使得原序列变为目标序列.最小化操作次数并输出任意一组方案.
\(0≤k<n≤100\)
解法
事实上,这个题完全是结论题因为你可以发现,无论是什么样的情况,都只需要0或1或2或3次就搞定了.因为根本上,它的原始序列是\(1...n\),所以右移后一定能分成至多两个有序的部分.
0:没有右移,不需要反转
1:\(n=2\)且\(k=1\)时
2:\(k=n-1\)或\(k=1\)时,只要先反转\(1...n-1\)或\(2...n\),然后全局反转就可以了
3:其他情况,懒得讲了.
T2
题意
现在给出\(n\)个在\(1...9\)之间的正整数,你可以将它们任意排列组合,并分成\(k\)份,每份组成一个十进制数字.最小化这些数字的最大值.
\(1≤k≤n≤100000,1≤t≤5\)
解法
首先我们可以发现一些性质:
- 所有这些十进制数字都是按位递增的,也就是没有\(54321\)这种数
- 最大值的位数是\(ceil(n/k)\)位,而有些是\(floor(n/k)\)位.
我们可以把最大的数丢给位数少的数字.
T3
题意
给定一棵\(n\)个点的树,从中选出若干个点,使得任意选中的两点之间距离\(\le k\),两点之间的距离定义为树上两点间简单路径经过的边数.询问有多少符合题意的选择方法.
\(1≤n≤10000,1≤k≤min(500,n)\)
解法
我们来考虑如何判断两点之间的距离是不是小于等于\(k\).假设我们的两棵子树内的点已经都满足了.那么我们就需要判断子树间点的距离.我们记录离这个点最近的点
即设\(f_{i,j}\)表示以\(i\)为根的子树,子树内部已经满足条件了,选出的点中离\(i\)最近的点的距离为\(j\)的方案数.合并子树时要满足的条件是:子树间点的距离\(>=k,j_1+j_2+2>=k\).新的\(j=max(j_1,j_2)+1\)
合并子树时,枚举\(j_1,j_2\)满足\(j_1+j_2+2>=k\).\(f_{x,max(j_1,j_2)+1}+=f_{c_1,j_1}×f_{c_2,j_2}\)
原文地址:https://www.cnblogs.com/i-cookie/p/11383927.html
- set使用实例1+lower_bound(val)(个人模版)
- Selenium2+python自动化29-js处理多窗口
- 谷歌「机弦」有何玄机?
- 01字典树贪心查询+建立+删除(个人模版)
- 优先队列(个人模版)
- Numpy教程第2部分 - 数据分析的重要功能
- 最小表示法(个人模版)
- 基于Python-ChatterBot搭建不同adapter的聊天机器人(使用NB进行场景分类)
- 并查集(个人模版)
- Markdown 语法和 MWeb 写作使用说明既然都整理了,捎带手把这个也整理了吧第一级标题<h1>
- 带权并查集(个人模版)
- 我的第一次Pascal程序
- Hive第二天学习内容总结Hive 第三天DDL特别注意一下,没事别删除数据DML
- Codeforces 791B Bear and Friendship Condition(DFS,有向图)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringMVC:基本应用
- SpringMVC:进阶
- SpringMVC:SSM 整合
- 12 | Tornado源码分析:BaseIOStream 对象(上)
- 数据一致性校验及数据同步,运维必看
- Windows使用scoop包管理器安装RabbitMQ
- 深入理解web协议(二):DNS、WebSocket
- Elasticsearch:使用 function_score 及 soft_score 定制搜索结果的分数
- Elasticsearch:基于 Vector 的打分
- RocketMQ的发送模式和消费模式
- 实现一个简单的JS效果
- 1000000 / 60S 的 RocketMQ 不停机,扩容,平滑升级!
- Mysql支持远程链接访问
- linux shell编程
- Linux下的I/O复用与epoll详解