Educational Codeforces Round 133 (Rated for Div. 2) (C dp D前缀和优化倍数关系dp)

2024-04-04 16:44

本文主要是介绍Educational Codeforces Round 133 (Rated for Div. 2) (C dp D前缀和优化倍数关系dp),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A:能用3肯定用三,然后分类讨论即可

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10,M=2*N,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
typedef unsigned long long ULL;
using node=tuple<int,int,int>;
const long long inf=1e18;int n,m,k;
int a[N];void solve()
{cin>>n;if(n==1) cout<<"2\n";else{if(n%3==0) cout<<n/3<<"\n";if(n%3==1) cout<<(n-4)/3+2<<"\n";if(n%3==2) cout<<n/3+1<<"\n";}
}
//1 2 3 4
signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}==0==

B:

我们可以构造n个

分别是

n n-2 n-3... 0

因为一开始交换会改变两个,然后后面全都和第一个换就可以保证递减下去了

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10,M=2*N,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
typedef unsigned long long ULL;
using node=tuple<int,int,int>;
const long long inf=1e18;int n,m,k;
int a[N];void solve()
{cin>>n;cout<<1+n-1<<"\n";for(int i=1;i<=n;i++) a[i]=i;//1 2 3 4 4//2 1 3 4 2for(int i=1;i<=n;i++){cout<<a[i]<<" \n"[i==n];}swap(a[1],a[2]);for(int i=2;i<=n;i++){for(int j=1;j<=n;j++){cout<<a[j]<<" \n"[j==n];}swap(a[i+1],a[1]);}
}
//1 2 3 4
signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

C:正常都能想到先蛇形再走U字形

dp预处理当前[i,j]走到[i^1,j]的最长等待时间,然后从当前这个时间可以一路往后走,不停下来,

对于同行的dp=max(dp[i][j]+1,a[i][j])

但是对于新增的[i^1,j]也可能造成时间问题

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10,M=2*N,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
typedef unsigned long long ULL;
using node=tuple<int,int,int>;
const long long inf=1e18;int n,m,k;
int a[3][N];void solve()
{cin>>m;n=2;vector<vector<int>> dp(m + 1, vector<int>(2));for(int i=0;i<n;i++){for(int j=0;j<m;j++)cin>>a[i][j];}a[0][m]=a[1][m]=0;a[0][0]=-1;for(int i=m-1;i>=0;i--){for(int j=0;j<2;j++)dp[i][j]=max({a[j][i]+1,dp[i+1][j]-1,a[j^1][i]-2*(m-i-1)});}int res=inf;array<int,2> pos={0,0};int cur=0;for(int i=0;i<m;i++){res=min(res,max(cur,dp[pos[1]][pos[0]])+2*(m-i)-1);pos[0]^=1;cur=max(a[pos[0]][pos[1]]+1,cur+1);pos[1]++;res=min(res,max(cur,dp[pos[1]][pos[0]])+2*(m-i-1));cur=max(a[pos[0]][pos[1]]+1,cur+1);}cout<<res<<"\n";}
//1 2 3 4
signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

D:

因为 (k+1)*(k)/2<=n,可以推出m等于根号2*n

然后直接前缀和优化dp的倍数和即可

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10,M=2*N,mod=998244353;typedef long long LL;
typedef pair<int, int> PII;
typedef unsigned long long ULL;
using node=tuple<int,int,int>;
const long long inf=1e18;int n,m,k;
int a[N];
LL res[N];
LL f[2][N],s[N];
void solve()
{cin>>n>>k;f[0][0]=1;m=sqrt(2*n);m++;for(int i=1;i<=m;i++){for(int j=0;j<=n;j++){if(j>=(k+i-1))s[j]=(s[j-(k+i-1)]+f[(i-1)&1][j])%mod;else s[j]=f[(i-1)&1][j];   if(j>=(k+i-1)){f[i&1][j]=(f[i&1][j]+s[j-(k+i-1)])%mod;}}for(int j=0;j<=n;j++){f[(i-1)&1][j]=0;res[j]=(res[j]+f[i&1][j])%mod;}}//(x+1)*(x)/2>=n//x*x>=2*n//max 根号2*n=500for(int i=1;i<=n;i++)cout<<res[i]<<" ";
}
//1 2 3 4
signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;// cin>>t;while(t--) solve();
}

这篇关于Educational Codeforces Round 133 (Rated for Div. 2) (C dp D前缀和优化倍数关系dp)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/876318

相关文章

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

MYSQL关联关系查询方式

《MYSQL关联关系查询方式》文章详细介绍了MySQL中如何使用内连接和左外连接进行表的关联查询,并展示了如何选择列和使用别名,文章还提供了一些关于查询优化的建议,并鼓励读者参考和支持脚本之家... 目录mysql关联关系查询关联关系查询这个查询做了以下几件事MySQL自关联查询总结MYSQL关联关系查询

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件