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

CF889E Mod Mod Mod DP

时间:2024-11-21 16:00:43浏览次数:1  
标签:ch log CF889E Mod ll include DP define

对于一个x我们发现最多只有 \(\log\) 次有效取模,但没啥用。我们发现 \(dp\) 数组(函数)是一个分段一次函数(等差数列),然后从第一个 \(a_i\) 开始考虑,发现每次只会多出一条线段(就是\(a_i-1\)这条)其他线段会翻折到下面,对于一条线段只会进行\(\log a\)次翻折,所以对线段的操作总次数是\(n \log a\)的,上个\(map\)就能做到\(n \log n \log a\)了

点击查看代码
bool M1;
#define look_memory cerr<<abs(&M2-&M1)/1024.0/1024<<" MB\n"
#define look_time cerr<<(clock()-Time)*1.0/CLOCKS_PER_SEC<<'\n'
#include <cstdio>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <cstring>
#include <array>
#include <algorithm>
#include <queue>
#include <vector>
#include <bitset>
#include <ctime>
#include <cstdlib>
#include <random>
#include <set>
#include <ctime>
#include <map>
#include <stack>
#include <unordered_map>
#include <assert.h>
#include <unordered_set>
#define i128 __int128
#define ll long long
#define uint unsigned
#define ull unsigned long long
#define ld long double
#define fo(a,b,c) for(ll a=b;a<=c;++a)
#define re(a,b,c) for(ll a=b;a>=c;--a)
#define pii pair<ll,ll>
#define pdd pair<db,db>
#define fi first
#define pb push_back
#define se second
#define ite set<ll> ::iterator
#define vite vector<ll> ::iterator
#define mite map<ll,ll> ::iterator
using namespace std;
const ll mod=1e9+7;
inline ll gi()
{
	ll x = 0, f = 1;
	char ch = getchar();
	while(ch < '0' || ch > '9')
	{
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while(ch >= '0' && ch <= '9')
	{
		x = (x<<1) + (x<<3) + (ch^48);
		ch = getchar();
	}
	return x * f;
}
ll _=1;
const ll inf=2e17+5,iinf=1e9+5;
const ll N=200005;
ll n,a[N];
map<ll,ll> mp;
void ckmax(ll &x,ll y)
{
	if(x<y) x=y;
}
void sol()
{
	n=gi();
	fo(i,1,n) a[i]=gi();
	mp[a[1]-1]=0;
	fo(i,2,n)
	{
		while(1)
		{
			mite it=mp.lower_bound(a[i]);
			if(it==mp.end()) break;
			mp.erase(it);
			pii p=*it;
			ll num=p.fi/a[i];
			ckmax(mp[a[i]-1],p.se+(num-1)*a[i]*(i-1));
			ckmax(mp[p.fi%a[i]],p.se+num*a[i]*(i-1));
		}
	}
	ll ans=0;
	for(pii p:mp)
	{
		ans=max(ans,p.se+p.fi*n);
	}
	cout<<ans;
}
bool M2;
int main()
{
	int Time=clock();
	look_memory;
//	_=gi();
	while(_--)
	{
		sol();
		printf("\n");
	}
	look_time;
	return 0;
}

标签:ch,log,CF889E,Mod,ll,include,DP,define
From: https://www.cnblogs.com/ciuim/p/18560936

相关文章

  • 【C#】【winforms】MVP架构中从 Model 或 View 层主动向 Presenter 传递数据或调用处
    背景使用winforms做上位机软件,软件功能简单来说就是与串口通信。因为一个软件要应用于不同型号的下位机,采用MVP架构提高代码复用性。 其中Model层中实例化SerialPort对象:privateSerialPort_serialPort;只关注串口收发。 presenter层负责主要业务逻辑。view层负责......
  • 计算机网络实验 UDP协议分析
    实验3UDP协议分析1.实验目的掌握运输层UDP协议内容理解UDP协议的工作原理了解应用层和运输层协议的关系2.实验环境硬件要求:阿里云云主机ECS一台。软件要求:Linux/Windows操作系统3.实验内容UDP(UserDatagramProtocol)用户数据报协议是一种无连接的运输层......
  • 【模板】状压DP
    **[POI2004]PRZ****考察内容:二进制子集遍历,DP转移**#include<bits/stdc++.h>usingnamespacestd;intn,W;structdata1{ intt,w;}a[20];intdp[(1<<20)],tt[(1<<20)],ww[(1<<20)];intmain(){ scanf("%d%d",&W,&n); for(......
  • wordpress获取当前分类的顶级分类ID并调用子分类
    函数定义:在functions.php中定义一个函数来获取当前分类的顶级分类ID。代码示例://获取分类ID,函数参数是int类型为当前分类的IDfunctiontx_wp_get_category_root_id($cat){$this_category=get_category($cat);//获取当前分类的对象//循环往上获得父级分......
  • modbus
    简介Modbus协议是一种工业通信协议,最早由Modicon(现为施耐德电气的一部分)在1979年开发,用于可编程逻辑控制器(PLC)之间的通信。它是一种主从式协议,设计简单、易于实现,广泛应用于工业自动化领域的设备和系统之间的通信。主要特点1. 开放性:Modbus是公开的工业标准,任何制造商都可以实......
  • 【JavaSE】【网络编程】UDP数据报套接字编程
    目录一、网络编程简介二、Socket套接字三、TCP/UDP简介3.1有连接vs无连接3.2可靠传输vs不可靠传输3.3面向字节流vs面向数据报3.4双向工vs单行工四、UDP数据报套接字编程4.1API介绍4.1.1DatagramSocket类4.1.1.1构造方法4.1.1.2主要方法4.1.2DatagramP......
  • Unlocking the Potential: Benchmarking Large Language Models in Water Engineering
    本文是LLM系列文章,针对《UnlockingthePotential:BenchmarkingLargeLanguageModelsinWaterEngineeringandResearch》的翻译。释放潜力:对水工程和研究中的大型语言模型进行基准测试摘要1引言2方法3实验设置4实验结果摘要大型语言模型(LLM)的最新......
  • DISCOVERYBENCH: Towards Data-Driven Discovery with Large Language Models
    本文是LLM系列文章,针对《DISCOVERYBENCH:TowardsData-DrivenDiscoverywithLargeLanguageModels》的翻译。DISCOVERYBENCH:使用大型语言模型实现数据驱动的发现摘要1引言2相关工作3公式化4DISCOVERYBENCH5实验6结论摘要使用大型语言模型(LLM)的......
  • RT-Surv: Improving Mortality Prediction After Radiotherapy with Large Language M
    本文是LLM系列文章,针对《RT-Surv:ImprovingMortalityPredictionAfterRadiotherapywithLargeLanguageModelStructuringofLarge-ScaleUnstructuredElectronicHealthRecords》的翻译。RT-Surv:通过大规模非结构化电子健康记录的大型语言模型结构改进放疗后死......
  • Impact of Non-Standard Unicode Characters on Security and Comprehension in Large
    本文是LLM系列文章,针对《ImpactofNon-StandardUnicodeCharactersonSecurityandComprehensioninLargeLanguageModels》的翻译。非标准Unicode字符对大型语言模型中安全性和理解性的影响摘要1引言2背景和相关工作3方法4对大语言模型的影响5跨语......