首页 > 其他分享 >AtCoder Beginner Contest 270 G,Ex

AtCoder Beginner Contest 270 G,Ex

时间:2022-09-27 10:58:02浏览次数:55  
标签:AtCoder kappa sum 270 计数器 Ex kx 我们

y1s1,G和Ex在推等比数列式子上是相似的。

G
前置知识:BSGS(其实就是根号讨论)

首先我们展开这个递归式:

\[X_{i}\equiv A^{i} S+\sum_{j=0}^{i-1} A^j B \mod P \]

感觉第一项有些难搞,故我们设\(F_{i}\),为:

\[F_{i}\equiv A^{i+1} S+\sum_{j=0}^{i} A^j B \mod P \]

之后我们套用BSGS的方法,设答案为\(kx+b\)。

则:

\[F_{kx+b}=A^{kx+b+1} S+\sum_{j=0}^{kx+b} A^j B=A^{kx} \cdot A^{b+1} S+\sum_{j=0}^{kx} A^j B+A^{kx}\sum_{j=1}^{b} A^j B \]

提取公因式:

\[F_{kx+b}=A^{kx} ( A^{b+1} S+\sum_{j=1}^{b} A^j B)+\sum_{j=0}^{kx} A^j B \]

我们先进行预处理:枚举\(i=0\)到\(\kappa -1\),将 \(A^{i+1} S+\sum_{j=1}^{i} A^j B\) 模\(P\)的值存入map中,如果已经在map中有这个值了,那么我们取\(i\)最小的(因为我们要让答案最小)。

之后枚举\(x\),查询\(\frac{G-\sum_{j=0}^{\kappa x} A^j B}{A^{\kappa x}} \mod P\)是否在map中,如果在,更新答案\(ans=\min (ans,\kappa x+C)\),其中\(C\)是map中预处理得到的最小的值。

若我们设\(\kappa =70000\),时间复杂度最优,大概是\(O(\sqrt n\log n)\)。

Ex
一道好题。

首先\(n\)个计数器是不好记录状态的。

一、简化并列出状态

我们设状态\(k=\max(A_{i}-C_{i})\),其中\(C_{i}\)是第\(i\)个计数器的值。

可以发现,若\(k\leq 0\),则我们就满足了\(C_{i}\geq A_{i}\),并且,其实我们\(k\)在每次操作最多减去\(1\),故当\(k=0\)时,我们就终止操作。

这样有什么好处呢?

转移是更方便的:

我们设\(r\),满足\(A_{r}< k\leq A_{r+1}\),则:

  1. 如果我们将第\(i\)个计数器清零,且\(i\leq r\),那么\(k=k-1\)。(因为\(A_{i}\)<k,\(A_{i}-C_{i}\)也一定不超过\(k\),此时\(k\)只能是由\(j>r\)的\(A_{j}-C_{j}\)转移而来)

  2. 如果我们将第\(i\)个计数器清零,且\(i > r\),那么\(k=A_{i}\)。 (因为\(A_{i}\)>k,将第\(i\)个计数器清零后\(A_{i}-C_{i}=A_{i}>k\),故此时\(k=A_{i}\))

至此,我们发现\(k=\max(A_{i}-C_{i})\),不仅减少状态数,并且转移还是简单的。

我们可以列出DP方程:\(F(k)\)表示状态为\(k\)时的期望操作次数,则\(F(k)=\frac{r}{n} F(k-1) + \frac{1}{n} \sum _{i=r+1}^{n} F_{A_{i}} + 1\)。

标签:AtCoder,kappa,sum,270,计数器,Ex,kx,我们
From: https://www.cnblogs.com/Nastia/p/16733697.html

相关文章

  • 界面组件DevExpress WinForms v22.1 - 全新升级的HTML CSS 模板
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office......
  • latex 内嵌PDF
      把所有.exe都改为 安装texestudio所在目录的命令  ......
  • k3s部署kube-explorer面板
    书接上文,使用kube-explorer做界面管理工具一、项目地址https://github.com/cnrancher/kube-explorer二、复制配置文件cp/etc/rancher/k3s/k3s.yaml/root/.kube/confi......
  • vuex从后端获取data
    //store.jsimport{createStore}from"vuex";importaxiosfrom"axios";conststore=createStore({state(){return{merchants:[]......
  • TypeScript extends
    ......
  • The Python Standard Library by Example pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1XrEGFnmV_jwtkXILXLjUQg点击这里获取提取码 ......
  • 脚本之一键部署nexus
    NEXUS_URL="https://download.sonatype.com/nexus/3/nexus-3.39.0-01-unix.tar.gz"#NEXUS_URL="https://download.sonatype.com/nexus/3/nexus-3.36.0-01-unix.tar.gz"#N......
  • $nextTick原理及运用
    1.Vue.nextTick([callback,context]):在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。2.为什么需要它呢?Vue是异步修改......
  • Javaweb项目报错:MySQLNonTransientConnectionException: message from server: "Too
    错误描述:运行Javaweb时出现的错误,是在项目成功运行后,进行了几次页面跳转操作或数据库DML操作后出现的报错截图如下:解决方案:调整最大连接数重启mysql服务器servicem......
  • Atcoder试题乱做 Part2
    感受下来,思维难度有参差,所以还是可以做的,虽然有的题和中国赛题差距有点大,但是无伤大雅?新的\(\text{Part}\)我要自己做出来更多题!\(\text{[AGC014D]Blackan......