首页 > 其他分享 >2024做题计划

2024做题计划

时间:2024-10-30 19:32:27浏览次数:1  
标签:int up long cin 2024 lst 计划 做题

难度范围:[绿-紫]

CSP-S2024 T3染色

首先动态规划显然,如何呢?不难设 \(f_{i}\) 表示对于前 \(i\) 个数来说的话,以 \(i\) 为结尾的答案的最大值,为啥是答案,因为这样可以直接转移 \(f_i=\max_{1\leq j<i}^{f_j+calc(j+1,i)+[a_j=a_i]\times a_i}\)
当然还有 \(f_i=\max{f_{i-1},f_i}\) 所以你就发现 \(f\) 有单调性,因为他可定大于等于上一个,然后你就发现答案就是 \(f_n\)。但是如果你直接转移是 \(O(n^2)\) 很显然会 TLE 。然后你发现如果有个 \(j\) 满足 \(a_j\) 不等于 \(a_i\) 那么会劣,那么又因为 \(f\) 单调,所以 \(f_i\) 从前一个与 \(a_i\) 的值相等的位置转移是不劣的,然后考虑开桶维护下上一次出现的位置就做完了!

代码:

#include<bits/stdc++.h>
using namespace std;
#define up(i,l,r) for(int i=l;i<=r;++i)
#define dn(i,l,r) for(int i=l;i>=r;--i)
#define int long long
const int N=2e5+5;
const int M=1e6+5;
int lst[M],a[N],n,f[N],pr[N],s[N];
inline void solve(){
	cin>>n;
	up(i,1,M-1) lst[i]=0;
	up(i,1,n){
		cin>>a[i];f[i]=0;s[i]=s[i-1]+(a[i]==a[i-1])*a[i];
		pr[i]=0;
	}
//	up(i,1,n) cout<<s[i]<<' ';
//	cout<<endl; 
	up(i,1,n){
		f[i]=f[i-1];pr[i]=lst[a[i]];
		if(lst[a[i]]){
			if(lst[a[i]]==i-1){
				f[i]=max(f[i],f[lst[a[i]]]+a[i]);
			}else{
				f[i]=max(f[i],f[lst[a[i]]+1]+a[i]+s[i]-s[lst[a[i]]+1]);
			}
		}
//		cout<<f[i]<<' ';
		lst[a[i]]=i;
	}
	cout<<f[n]<<'\n';
}
int32_t main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	int t;
	cin>>t;	
	while(t--) ::solve();
	return 0;
}
//tomxi

标签:int,up,long,cin,2024,lst,计划,做题
From: https://www.cnblogs.com/tomxi/p/18516460

相关文章

  • 2024.10.30 2022广西省赛
    Solved:11/12Penalty:1059Rank:1/146(N+2)Dirt:48%ProblemABCDEFGHIJKL题数罚时Time1122141271076128398415916111059dirt31132A,B,G,H,L:签到F直接扔一个带修莫队板子上去就过了。虽然1000的值域应该有点说法。。。#inc......
  • NOIP2024 模拟赛19
    A拆位算贡献,枚举每一个位置,与操作两者都是\(1\),异或操作相反,或操作有一个是\(1\)即可。B观察到条件\(a_1\lek\)证明是必然有答案的,答案这样构成:从\(1\)走到任意点\(j\),然后\(j\)挖空,然后推到\(i\),记\(f_i\)为从\(1\)走到\(i\)的最小花费,答案\(i\)即为\(f_......
  • 2024牛客暑期多校训练营10 - VP记录
    A.SurrendertoMyWill直接判断当前是否不可翻盘。点击查看代码#include<cstdio>usingnamespacestd;intmain(){ charstr[10];scanf("%s",str); inty=0,n=0; for(inti=0;i<5;i++) { if(str[i]=='Y')y++; if(str[i]=='N')n++; ......
  • 20222412 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    202224122024-2025-1《网络与系统攻防技术》实验三实验报告1.实验内容(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件veil,加壳工具使用C+shellcode编程(2)通过组合应用各种技术实现恶......
  • 华为OD机试 E卷 2024|增强的strstr(Python)
    0、关于本专栏&刷题交流群本文收录于专栏【2024华为OD机试真题】,专栏共有上千道OD机试真题,包含详细解答思路、与四种代码实现(Python、Java、C++、JavaScript)。点击文末链接加入【华为OD机试交流qun】,和群友一起刷题备考。刷的越多,考试中遇到原题的概率就越大,永久、实时......
  • (Pr2024)Premiere Pro 软件下载
    目录一、AdobePremierePro发展历史1.1初期阶段1.2专业化阶段1.3创新与升级1.4下载链接二、AdobePremierePro功能介绍2.1视频剪辑与组合2.2调色与音频处理2.3字幕与输出三、AdobePremierePro系统要求3.1最低系统要求一、AdobePremierePro发展......
  • 蓝桥杯备赛&学习计划 2024.11—2025.4
    学习计划概览2024年11月到12月-巩固基础,学习基本算法。2025年1月到2月-学习中级算法和数据结构。2025年3月-进阶算法学习和刷题练习。2025年4月-复习重点知识,专注于比赛准备。详细周计划2024年11月:基础知识&基础算法第1-2周:复习基本控制结构(循环、条件语......
  • 2024年项目经理必看!项目管理平台如何助力项目成功交付?
    一、项目管理平台的重要性在2024年,项目管理平台对于项目成功交付起着至关重要的作用。首先,项目管理平台能够极大地提高协作效率。例如,像禅道这样的优秀平台,为团队提供了统一的协作空间,成员可以在平台上共享文档、讨论问题、分配任务等。通过这种方式,信息传递更加及时准确,避......
  • 强势建议收藏!2024年工程项目管理平台上的10个高效工具
    一、多功能的禅道禅道作为工程项目管理平台,拥有众多强大功能。在项目管理和协作方面,禅道集成了产品管理、项目管理、质量管理、文档管理、组织管理和事务管理等多方面功能,完整覆盖了工程项目管理的核心流程。通过禅道,团队成员可以清晰地了解项目的各个环节,从需求收集到项目交付......
  • 2024年强势推荐!最经典4款最适合工程项目的免费管理平台
    一、工程项目管理平台的重要性工程项目管理具有复杂性高、周期长、资源要求多样、协调性强等特点。复杂性体现在涉及多个专业领域协同工作,需遵循严格法律法规和标准,且各个阶段都需要详细计划和协调。例如,一个大型工程项目可能需要土木、电气、机械等多个专业人员合作,每个领域都有......