首页 > 其他分享 >CF889E Mod Mod Mod

CF889E Mod Mod Mod

时间:2022-11-25 19:46:38浏览次数:49  
标签:ch CF889E max LL ans bmod Mod

CF889E Mod Mod Mod

一道有趣的题,考虑\(x\)有意义的取值,设\(f_i\)表示\(x \bmod a_1 ... \bmod a_i\)的值,那么一定存在\(f_k = a_k - 1\),否则我们可以让\(x\)整体加一直到达到上界,这样显然更优,所以\(x\)有意义的取值只有\(O(n)\)个,这样我们可以\(DP\)去维护这些取值的答案。具体的,设\(g_{i,j}\)表示到第\(i\)轮,在\(\bmod a_i\)后的值为\(j\)高于当前数的和,这样答案就为\(g_{i,j} + ij\)。

\[g_{i+1,j \bmod a_{i + 1}} = \max{g_{i,j} + i * (j - j \bmod a_{i + 1})} \]

\[g_{i+1,a_{i+1} - 1} = \max{g_{i,j} + i * ((j + 1) / a_{i+1} * a_{i + 1} - a_{i+1})} \]

用\(map\)来转移\(DP\)。

Code
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<map>
#define LL long long
#define IN inline
using namespace std;
const int N = 2e5 + 5;
int n; LL a[N];

IN LL read() {
	LL res = 0; char ch = getchar();
	for (; !isdigit(ch); ch = getchar());
	for (; isdigit(ch); ch = getchar()) res = (res << 3) + (res << 1) + (LL)(ch ^ 48);
	return res;
}
map<LL, LL> f;
int main() {
	n = read();
	for (LL i = 1; i <= n; i++) a[i] = read();
	f[a[1] - 1] = 0;
	for (int i = 2; i <= n; i++) {
		for (auto j = f.lower_bound(a[i]); j != f.end(); f.erase(j++)) {
			LL v = j->first % a[i], g = j->first;
			f[v] = max(f[v], j->second + (LL)(i - 1) * (g - v));
			f[a[i] - 1] = max(f[a[i] - 1], j->second + (LL)(i - 1) * ((g + 1) / a[i] * a[i] - a[i]));
		}
	}
	LL ans = 0;
	for (auto i : f) ans = max(ans, i.second + (LL)n * i.first);
	printf("%lld\n", ans);
}

标签:ch,CF889E,max,LL,ans,bmod,Mod
From: https://www.cnblogs.com/nibabadeboke/p/16926175.html

相关文章

  • centos7部署mpi和module环境
    1.概述本篇博客主要介绍在centos7.9部署和测试mpi并行程序开发环境,并通过module加载不同的环境。2.部署过程2.1安装mpich节点安装相关依赖环境:yum-yinstallgcc-g......
  • pytorch之model.zero_grad() 与 optimizer.zero_grad()
    转自https://cloud.tencent.com/developer/article/17108641.引言在PyTorch中,对模型参数的梯度置0时通常使用两种方式:model.zero_grad()和optimizer.zero_grad()。二......
  • ModelViewSet 响应封装
    fromutils.responseimportAPIResponesfromrest_framework.viewsetsimportModelViewSet#统一请求成功返回模版classMyModelViewSet(ModelViewSet):defcrea......
  • linear jump Markov models
    只有当雅可比矩阵存在时,才能应用线性化。但是,情况并非总是如此。一些系统包含不连续性(例如,过程模型可能是跳跃线性的[14],其中参数可以突然变化[1],或者传感器可能返回高度量......
  • OS Lab 1.6 xargs (moderate)
    1实验要求编写一个简单的UNIX​​xargs​​​程序,从标准输入中读取行并为每一行运行一个命令,将该行作为命令的参数提供。你的解决方案应该放在​​user/xargs.c​​中......
  • PROCEDURAL GENERALIZATION BY PLANNING WITH SELF-SUPERVISED WORLD MODELS
    发表时间:2022(ICLR2022)文章要点:这篇文章基于muzero来度量model-basedagent的泛化能力。主要研究了三个因素:planning,self-supervisedrepresentationlearning,andp......
  • SyntaxError: Cannot use import statement outside a module
    搭建第一个Vite项目兼容性注意Vite需要 Node.js 版本14.18+,16+。然而,有些模板需要依赖更高的Node版本才能正常运行,当你的包管理器发出警告时,请注意升级你的Nod......
  • GO mod not found
    Goget下载包的时候,会报错:go.modfilenotfoundincurrentdirectoryoranyparentdirectory.解决方法:初始化项目,比如我的项目名称叫GOWORKSPACEPSD:\goWorkSp......
  • Run Configuration Error: No plugin module specified for configuration
    【错误描述】:RunConfigurationError:Nopluginmodulespecifiedforconfiguration. 【解决方式】:IDEA里修改项目中和.idea文件同级目录下的.iml文件中的<module>标......
  • NModbus4项目4——数据的读写框架
    上位机与PLC之间进行数据读写时一般采用两种方式,一种是使用定时器进行读,一种是使用一个独立的线程进行读,但是无论使用哪种方式,都要求写优先级高于读,这里就涉及到读写状态......