CF1295
用计算器式显示数字,可以显示 \(n\) 段。可以显示的最大数字是多少?
如果用了一个需要至少四段的数字,一定不如把这个替换成两个 \(1\) 好。
如果一共可以用偶数个,一定是全部 \(1\)。
如果一共可以用奇数个,一定是开头一个 \(7\),之后全是 \(1\)。
给定一个 \(01\) 序列 \(s\) 和 \(k\),\(t\) 为 \(s\) 的无限重复。求 \(x\) 的个数,\(x\) 满足:\(t\) 的前 \(x\) 个元素中的 \(0\) 的个数减 \(1\) 的个数等于 \(k\).
令 \(balance(len)=cnt_{0,len}-cnt_{1,len}\)。
注意到 \(balance(len)=[\frac{len}{n}]\times balance(n)+balance(len\mod n)\).
而 \(balance(0\sim n)\) 可以预处理出来。
我们只需要枚举 \(i=0\sim n-1\),判断 \(x-balance(i)\) 是否为 \(balance(n)\) 的倍数即可。
注意,不仅要判断倍数,还要判断 \(\dfrac{x-balance(i)}{balance(n)}\) 是否非负!!!
老套路题。
记 \(nxt_{pos,ch}\) 为从 \(pos\) 号位置开始,下一个 \(ch\) 在哪里出现。
一个贪心:如果遇到一个能匹配当前字符的,就一定要配上。
给定 \(a,m\),求所有 \(x\) 满足 \(gcd(a+x,m)=gcd(a,m)\).
\(gcd(a+x,m)=gcd(a,m)\),不妨令 \(x'=(a+x)\% m\),这样 \(gcd(a+x,m)=gcd(x',m).\)
于是现在的问题转化为:\(gcd(x',m)=gcd(a,m),x'\in [0,m).\)
设 \(gcd(a,m)=g,a=a'g,m=m'g\),因为 \(gcd(x',m)=g\),则 \(x'=x''g\)。
此时应有 \(gcd(x'',m')=1,x''\in[0,m')\),而每一个与 \(m'\) 的 \(gcd\) 等于 \(1\) 的数,都可以唯一对应到原问题中的 \(x\)。
这时问题转化为求 \(0\sim m'-1\) 中和 \(m'\) 互质的数的个数,发现 \(1\sim m'-1\) 的个数就是 \(\varphi(m')\)。
而 \(gcd(0,m')=1\) 是否成立还要看 \(m'=1\),但是 \(m'=1\) 说明 \(m=g\) 说明 \((a,m)=m\) 说明 \(m\mid a\) 说明 \(a\geq m\) 矛盾。
所以答案就是 \(\varphi(m')\).
给定一个 \(1\sim n\) 的排列 \(p\) 和一个花费数组 \(a\)。
可以选一个 \(k\in [1,n-1]\) 把 \(p\) 分成两半:\(p_{1\sim k},p_{k+1\sim n}\).
可以选择这两组中的一些元素移动到另外一组,第 \(i\) 个元素的移动代价是 \(a_i\)。
经过一些移动后,要求第一组中所有元素都小于第二组中所有元素。如果某一组空了,也满足条件。
求最小代价和。
枚举 \(k=0\sim n\),表示最终我们希望 \(1\sim k\) 在第一组中。
令 \(t[i]\) 表示此时把排列分成 \(1\sim i-1,i\sim n\) 两段的最小代价。(此时就是当我们枚举 \(k\) 时 \(k\) 每变一次都求一次)
对于 \(k=k'\) 时,\(t[i]=\)(\(p[1]\sim p[i-1]\) 中不属于 \(1\sim k'\) 的元素的代价之和)+(\(p[i]\sim p[n]\) 中属于 \(1\sim k'\) 的元素的代价之和),这时我们知道,如果要 \(1\sim k'\) 在第一组,答案就是此时的 \(\min(t[2],\dots,t[n])\)。
现在的问题在于,我们不能对每一个 \(k\) 都求一次 \(t\) 数组,复杂度会爆。
我们发现,当 \(k\) 加 \(1\) 时,变化其实很少:\(t[2]\sim t[pos[k+1]]\) 都 \(+a[pos[k+1]]\),\(t[pos[k+1]+1]\sim t[n]\) 都 \(-a[pos[k+1]]\)。\(pos[k+1]\) 表示在排列中 \(k+1\) 的位置。
这是因为如果我们要让 \(k+1\) 去第一组,那所有初始没有包含 \(k+1\) 的分法,也就是在 \(2,\dots,pos[k+1]\) 分开的方法,都需要额外花 \(a[pos[k+1]]\) 的代价把 \(k+1\) 放到左边。
这可以用线段树维护。区间加 + 区间最小值(求 \(t\) 的最小)。
随机推荐
- C#利用折线图分析产品销售走势
图形界面 数据 查询效果 代码 private void button1_Click(object sender, EventArgs e) { G++; DrowFont(this.comboBox ...
- 机器学习-无监督机器学习-kmeans-17
目录 1. 什么是聚类 2. 代码实现 1. 什么是聚类 无监督机器学习的一种 输入数据只有X 没有y 将已有的数据 根据相似度 将划分到不同的簇 (花团锦簇) 步骤: 随机选择k个簇的中心点 样本根 ...
- Go-数据类型-数字
Go数字类型 整数 int 类 int(在32机器上为int32,在64位机器上为int64) int8 int16 int32 int64 unit类 uint(在32机器上为uint32,在64位 ...
- ZHS16GBK字符集下面Oracle数据库varchar与nvarchar的验证
ZHS16GBK字符集下面Oracle数据库varchar与nvarchar的验证 背景 周末分析了 SQLServer mysql等数据库 想着继续分析一下oracle数据库 这边oracle使用的 ...
- [转帖]Nginx - 根据IP分配不同的访问后端
https://www.cnblogs.com/hukey/p/11868017.html 1. 需求分析 为了在线上环境提供测试分支,规定将某IP转发到测试程序地址.如果是 ngx 直接对外,采用 ...
- [转帖]Prometheus Shell Exporter
Shell Exporter can execute Powershell or Bash scripts and transform its output to Prometheus metrics ...
- [转帖]goproxy 使用说明
Go 版本要求 建议您使用 Go 1.13 及以上版本, 可以在这里下载最新的 Go 稳定版本. 配置 Goproxy 环境变量 Bash (Linux or macOS) export GOPROX ...
- [转帖]SSH交互式脚本StrictHostKeyChecking选项 benchmode=yes
https://www.cnblogs.com/klb561/p/11013774.html SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击.但是在特定情况下,严格的 SSH 公钥 ...
- [转帖]Windows平台下使用 Rclone 挂载 OneDrive 为本地硬盘
https://zhuanlan.zhihu.com/p/139200172 Rclone (rsync for cloud storage) 是一个命令行程序,用于同步文件和目录,支持常见的 Ama ...
- [转帖]拜托!面试请不要再问我Spring Cloud底层原理
https://www.cnblogs.com/jajian/p/9973555.html 概述# 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大 ...