A

用计算器式显示数字,可以显示 \(n\) 段。可以显示的最大数字是多少?

如果用了一个需要至少四段的数字,一定不如把这个替换成两个 \(1\) 好。

如果一共可以用偶数个,一定是全部 \(1\)。

如果一共可以用奇数个,一定是开头一个 \(7\),之后全是 \(1\)。

B

给定一个 \(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)}\) 是否非负!!!

C

老套路题。

记 \(nxt_{pos,ch}\) 为从 \(pos\) 号位置开始,下一个 \(ch\) 在哪里出现。

一个贪心:如果遇到一个能匹配当前字符的,就一定要配上。

D

给定 \(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')\).

E

给定一个 \(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\) 的最小)。

随机推荐

  1. java进阶(15)--DecimalFormat、BigDecimal

    一.DecimalFormat(数字格式化) 1.数字格式化的表示: (#) 代表任意数字 (,)代表千分位 (.)代表小数 (0)代表不够时补0 2.示例

  2. idea新建spring boot 项目右键无package及java类的选项

    新创建的spring boot项目,只有一个默认的资源目录及启动配置. 在 group 的目录下右键新建包路径时 ,发现没有package选项,也没有Java Class的选项: 解决办法: File ...

  3. [java] - 获取上传到服务器上的文件路径

    request.getSession().getServletContext().getRealPath("upload/" );

  4. [转帖]rsync工作原理

    1)软件简介 Rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件.Rsync 本来是用以取代rcp 的一个工具,它当前由 Rsync.samba.org 维护.Rsy ...

  5. [转帖]PD 配置文件描述

    https://docs.pingcap.com/zh/tidb/stable/pd-configuration-file PD 配置文件比命令行参数支持更多的选项.你可以在 conf/config. ...

  6. [转帖]elasticsearch 8.0 linux安装部署

    1. 下载安装包 https://www.elastic.co/cn/downloads/elasticsearch 选择下载linux版本,elasticsearch-8.0.0-linux-x86 ...

  7. [转帖]overcommit_memory、overcommit_ratio、CommitLimit、Committed_AS概念

    overcommit_memory.overcommit_ratio.CommitLimit.Committed_AS概念 overcommit_memory是一个内核对内存分配的一种策略. over ...

  8. ESXi6.7安装Win11的方法

    背景 公司里面要进行新的操作系统验证了. 之前Win10 Win7 Win8 都比较简单. 就是现在Win11有了TPM非常繁琐. 今天必须得搞一把了,就简单搜索了下. 发现还是可以解决的. 然后记录 ...

  9. 45从零开始用Rust编写nginx,静态文件服务器竟然还有这些细节

    wmproxy wmproxy已用Rust实现http/https代理,socks5代理, websocket代理,反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透等,力争打 ...

  10. node借助jsonwebtoken生成token以及验证token是否过期

    生成token使用 jsonwebtoken 插件 我当时使用的版本"jsonwebtoken": "^9.0.0", cnpm i jsonwebtoken ...