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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言面试题每日一练(一)[通俗易懂]

    C语言面试题每日一练(一)[通俗易懂]C语言作为嵌入式Linux开发的必备工具,作为嵌入式Linux开发的基础语言,那么在面试嵌入式工程师时C语言定是面试中的重中之重。作为一名开学就大三的老学长,不得不为找工作做必要准备。每天做一道C语言面试题,并且能够融会贯通。2020.8.5题目描述:    在未排序的数组中找到第k个最大元素。请注意,你需要找的是数组排序后的第k个最大的元素而不是第k个不同的元素。示例1:输入:32.

    2022年7月14日
    20
  • iOS唯一标示符引导

    iOS唯一标示符引导

    2021年5月11日
    132
  • Maven 菜鸟教程 5 常用插件配置

    Maven 菜鸟教程 5 常用插件配置jdk编译插件jetty插件把maven项目配置为标准web项目插件

    2025年10月2日
    4
  • OpenWrt make menuconfig 构建过程「建议收藏」

    OpenWrt make menuconfig 构建过程「建议收藏」OpenWrtmakemenuconfig构建过程1.课题背景之前在《20190614OpenWrt如何添加驱动以及应用程序谢艺华-遗留问题解答》文档的问题7中,承诺要写一个关于makemenuconfig的构架过程。于是就决定花点时间熟悉一下流程,方便以后的工作。2.分析过程2.1OpenWrt目录下的Makefile分析makemenuconfig的过程也…

    2022年5月12日
    47
  • Java自定义注解Annotation详解[通俗易懂]

    简介开发中经常使用到注解,在项目中也偶尔会见到过自定义注解,今天就来探讨一下这个注解是什么鬼,以及注解的作用和自定义注解。列举开发中常见的注解@Override:当重写父类的方法时一般都会在方法上标注上此注解(我们最经常看到的toString()方法上总能看到这货)@Deprecated:用于标记某个方法已经过期,请使用新的方法来替代已经废弃的方法@SuppressWarnings:让编译器或

    2022年4月13日
    67
  • 防不胜防,你可能访问了一个被克隆的网站什么意思_浏览被黑客攻击的网站

    防不胜防,你可能访问了一个被克隆的网站什么意思_浏览被黑客攻击的网站我们来看一下以下这2个网址:http://www.lcbc.com.cn、http://www.baiud.com,在此之前大家有没有发现有什么异样?仔细一看,大家会发现…

    2025年9月11日
    8

发表回复

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

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