CF889E Mod Mod Mod

CF889E Mod Mod Mod

http://codeforces.com/problemset/problem/889/E

题解

首先我们观察到在每次取模的过程中一定会有一次的结果是\(a_i-1\),因为如果不是,我们可以调整,答案肯定是会更优的。

于是我们的有用状态就变成了\(O(n)\)级别。

我们可以对于一个状态,把它表示为\((a,b)\),表示前\(i\)个数,当前取完模的结果为\(a\),总和写成\(i*a+b\)的形式后最大的\(b\)

我们的转移每次要把\(a\)变成\(a%v\),再添加一个新状态\(v-1\)

转移讨论一下。

代码

#include<bits/stdc++.h> #define N 200009 using namespace std; typedef long long ll; const int mod=1e9+7; map<ll,ll>f; map<ll,ll>::iterator it; int n; inline ll rd(){ ll x=0;char c=getchar();bool f=0; while(!isdigit(c)){if(c=='-')f=1;c=getchar();} while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();} return f?-x:x; } int main(){ n=rd(); f[rd()-1]=0; for(int i=2;i<=n;++i){ ll x=rd(); while(!f.empty()){ it=f.end();--it; ll a=it->first,b=it->second; if(a<x)break; f.erase(it); f[x-1]=max(f[x-1],b+1ll*(i-1)*(a-a%x-x)); f[a%x]=max(f[a%x],b+1ll*(i-1)*(a-a%x)); } } ll ans=0; for(it=f.begin();it!=f.end();++it)ans=max(ans,it->first*n+it->second); cout<<ans; return 0; }

转载于:https://www.cnblogs.com/ZH-comld/p/11020728.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100867.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • visitor设计模式ppt_常用的设计模式

    visitor设计模式ppt_常用的设计模式动机Visitor是访问者的意思。数据结构中保存着元素。一般我们需要对元素进行处理,那么处理元素的代码放在哪里呢?最显然的方法就是放在数据结构的类中,在类中添加处理的方法。但是如果有很多处理,就比较麻烦了,每当增加一种处理,我们就不得不去修改表示数据结构的类。visitor模式就是用来解决这个问题的,visitor模式将数据结构的定义和处理分离开。也就是会新增一个访问者的类,将数据元素的处理交给访问者类,这样以后要新增处理的时候,只需要新增访问者就可以了。模式定义将更新(变更)封装到一个类中(访问

    2022年8月8日
    7
  • sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

    sql2008数据库置疑的解决方法_sqlserver2008数据库可疑在企业使用SQLServer时,有时会因为各种原因遇到SQLServer数据库置疑的情况,那么是什么原因产生数据库置疑呢?对于这样的问题要如何预防?遇到后要如何解决呢?本文主要对这几个疑问进行解答。

    2022年4月19日
    675
  • EVE-ng模拟器安装教程和使用教程

    EVE-ng模拟器安装教程和使用教程EVE-NG模拟器安装教程和EVE-ng模拟器使用教程提前安装好“VMwareWorkstationPro”、”SecureCRTPortable.exe”、“vuc”、”Wireshark”等软件;一、EVE-NG模拟器安装教程1、下载EVE-NG镜像文件Eve-NG-中文网:http://www.eve-ng.cn/doku.php?id=wget:download2、下载好EVE镜像文件3、选中第二个文件(.ovf)4、右键–>选择“VMwareWorkstation

    2022年6月14日
    62
  • Redis集群搭建(非常详细)

    Redis集群搭建(非常详细)https blog csdn net article details redis 集群搭建在开始 redis 集群搭建之前 我们先简单回顾一下 redis 单机版的搭建过程 下载 redis 压缩包 然后解压压缩文件 进入到解压缩后的 redis 文件目录 此时可以看到 Makefile 文件 编译 redis 源文件 把编译好的 redis 源文件安装到 usr local redis 目录下 如果 local 目录下没有 redis 目录 会自动新建 r

    2025年10月28日
    5
  • 2022新UI美观发卡网源码下载+功能强大且齐全

    2022新UI美观发卡网源码下载+功能强大且齐全正文:程序没有更多的介绍,总的来说就是2022最新版本的,美观功能齐全无BUG,上传程序后,运行目录public,伪静态thinkPHP,域名/install.php进行安装,就是这么简单哈,程序没有马赛克的演示图我就放压缩包了,大家自行去查看吧。程序:lanzou.com/ieWX005hj7dc图片:…

    2022年7月14日
    23
  • hashmap和hashtable和hashset的区别_Hashtable

    hashmap和hashtable和hashset的区别_Hashtable相同点:hashmap和Hashtable都实现了map接口不同点:Hashtable是不允许键或值为null的,HashMap的键值则都可以为null。实现方式不同:Hashtable继承了Dictionary类,而HashMap继承的是AbstractMap类。初始化容量不同:HashMap的初始容量为:16,Hashtable初始容量为:11,两者的负载因子默认都是:0.75。扩容机制不同:当已用容量>总容量*负载因子时,HashMap扩容规则为当前

    2026年1月19日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号