洛谷P9676 [ICPC 2022 Jinan R] Skills

news/2025/10/5 8:19:18/文章来源:https://www.cnblogs.com/OrangeRED/p/19126225

洛谷P9676 [ICPC 2022 Jinan R] Skills

P9676 [ICPC 2022 Jinan R] Skills

设计状态时,可以知道要用当前的压掉一维,\(dp_{i,j,0/1/2}\) 表示当前选第 \(0/1/2\) 种,\(i,j\) 表示其余两种的最后选择时间。

如果没有 \(0\) 的限制,我们可以很自然的看出 \(DP\) 方程。

首先,上次选的,这次也选。

// cur表示时间,now是cur&1
dp[now^1][i][j][0] = max(dp[now^1][i][j][0],dp[now][i][j][0]-(i?cur-i+1:0)-(j?cur-j+1:0)+val[cur+1][0]);
dp[now^1][i][j][1] = max(dp[now^1][i][j][1],dp[now][i][j][1]-(i?cur-i+1:0)-(j?cur-j+1:0)+val[cur+1][1]);
dp[now^1][i][j][2] = max(dp[now^1][i][j][2],dp[now][i][j][2]-(i?cur-i+1:0)-(j?cur-j+1:0)+val[cur+1][2]);

然后,上次选的,这次不选,一共 \(9\) 种。

dp[now^1][cur][j][1] = max(dp[now^1][cur][j][1],dp[now][i][j][0]-(j?cur-j+1:0)-1+val[cur+1][1]);
dp[now^1][cur][i][2] = max(dp[now^1][cur][i][2],dp[now][i][j][0]-(i?cur-i+1:0)-1+val[cur+1][2]);
dp[now^1][cur][j][0] = max(dp[now^1][cur][j][0],dp[now][i][j][1]-(j?cur-j+1:0)-1+val[cur+1][0]);
dp[now^1][i][cur][2] = max(dp[now^1][i][cur][2],dp[now][i][j][1]-(i?cur-i+1:0)-1+val[cur+1][2]);
dp[now^1][j][cur][0] = max(dp[now^1][j][cur][0],dp[now][i][j][2]-(j?cur-j+1:0)-1+val[cur+1][0]);
dp[now^1][i][cur][1] = max(dp[now^1][i][cur][1],dp[now][i][j][2]-(i?cur-i+1:0)-1+val[cur+1][1]);

再来一个性质,一个练习不可能掉成 \(0\),否则不如一开始就给其他练习。

距离上一次不会超过 \(200\) 天。

做完了,时复 \(O(n\max{a_{i,j}})\)

\(\Large \mathscr{Code}\)

#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
int T,n,m,val[N][4],dp[2][N][N][3],ans;
inline void DP(int cur,int i,int j){int now = cur&1;dp[now^1][i][j][0] = max(dp[now^1][i][j][0],dp[now][i][j][0]-(i?cur-i+1:0)-(j?cur-j+1:0)+val[cur+1][0]);dp[now^1][i][j][1] = max(dp[now^1][i][j][1],dp[now][i][j][1]-(i?cur-i+1:0)-(j?cur-j+1:0)+val[cur+1][1]);dp[now^1][i][j][2] = max(dp[now^1][i][j][2],dp[now][i][j][2]-(i?cur-i+1:0)-(j?cur-j+1:0)+val[cur+1][2]);dp[now^1][cur][j][1] = max(dp[now^1][cur][j][1],dp[now][i][j][0]-(j?cur-j+1:0)-1+val[cur+1][1]);dp[now^1][cur][i][2] = max(dp[now^1][cur][i][2],dp[now][i][j][0]-(i?cur-i+1:0)-1+val[cur+1][2]);dp[now^1][cur][j][0] = max(dp[now^1][cur][j][0],dp[now][i][j][1]-(j?cur-j+1:0)-1+val[cur+1][0]);dp[now^1][i][cur][2] = max(dp[now^1][i][cur][2],dp[now][i][j][1]-(i?cur-i+1:0)-1+val[cur+1][2]);dp[now^1][j][cur][0] = max(dp[now^1][j][cur][0],dp[now][i][j][2]-(j?cur-j+1:0)-1+val[cur+1][0]);dp[now^1][i][cur][1] = max(dp[now^1][i][cur][1],dp[now][i][j][2]-(i?cur-i+1:0)-1+val[cur+1][1]);
}
inline void work(){cin>>n;ans = 0;for(int i=1;i<=n;i++){cin>>val[i][0]>>val[i][1]>>val[i][2];}memset(dp,-0x3f,sizeof(dp));dp[0][0][0][0] = dp[0][0][0][1] = dp[0][0][0][2] = 0;for(int cur=0;cur<n;cur++){int now = cur&1;for(int i=max(0,cur-201);i<=cur;i++){for(int j=max(0,cur-201);j<=cur;j++){memset(dp[now^1][i][j],-0x3f,sizeof(dp[now^1][i][j]));}}for(int i=max(0,cur-201);i<=cur;i++){memset(dp[now^1][0][i],-0x3f,sizeof(dp[now^1][0][i]));}for(int i=max(0,cur-201);i<=cur;i++){memset(dp[now^1][i][0],-0x3f,sizeof(dp[now^1][i][0]));}memset(dp[now^1][0][0],-0x3f,sizeof(dp[now^1][0][0]));for(int i=max(0,cur-201);i<=cur;i++){for(int j=max(0,cur-201);j<=cur;j++){DP(cur,i,j);}}for(int i=max(0,cur-201);i<=cur;i++){DP(cur,0,i);}for(int i=max(0,cur-201);i<=cur;i++){DP(cur,i,0);}DP(cur,0,0);}for(int i=0;i<=n;i++){for(int j=0;j<=n;j++){ans = max({ans,dp[n&1][i][j][0],dp[n&1][i][j][1],dp[n&1][i][j][2]});}}cout<<ans<<'\n';
}
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>T;while(T--) work();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序(uniapp)搭建腾讯云 IM 消息撤回

微信小程序(uniapp)搭建腾讯云 IM 消息撤回2025-10-05 08:13 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

读人形机器人31未来30年

读人形机器人31未来30年1. 先进的技术前景 1.1. 自主决策与认知计算1.1.1. 预计到2055年,最重大的突破之一将是具备先进自主决策能力的人形机器人的出现1.1.2. 借助认知计算和神经网络架构方面的突破,这些机器人将能…

【java面试】redis篇 - 指南

【java面试】redis篇 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

做推文网站营销型网站建设广告语

简洁的结论&#xff1a; 系统环境 ubuntu22.04 nvidia-535解决方案 删除/etc/X11/xorg.conf 文件 记录一下折腾大半天的问题。 ubuntu系统是22.04,之前使用的时候更新驱动导致桌面崩溃&#xff0c;重新安装桌面安装不上&#xff0c;请IT帮忙&#xff0c;IT一番操作过后也表示…

洛谷P8421 [THUPC 2022 决赛] rsraogps

洛谷P8421 [THUPC 2022 决赛] rsraogps P8421 [THUPC 2022 决赛] rsraogps - 洛谷 因为从一个点最多会变化 \(\log V\) 次(这三种操作都是这样),考虑扫描线,这样每次更新前面答案贡献时,就有可能做到 \(\log V\) …

正规的网站建设专业公司学校微网站模板下载地址

原文&#xff1a;https://www.toutiao.com/i6855460778359816715/平台&#xff1a;头条作者&#xff1a;程序员不就是0和1一、 备份恢复策略进行备份或恢复操作时需要考虑一些因素&#xff1a;1、确定要备份的表的存储引擎是事务型还是非事务型&#xff0c;两种不同的存储引擎备…

实用指南:流媒体基础解析:音视频封装格式与传输协议

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站友链展示设计图片

模板的使用 1.如何使用模板 在manage.py的同级文件夹中创建templates在setting.py的文件中把第58行DIRS: [ ],改成DIRS: [os.path.join(BASE_DIR,templates)], 知识点: os.path.join(BASE_DIR,templates) 拼接两个字符串 BASE_DIR找到项目根目录127.0.0.1:8000/myadmin/templ…

校园网站建设资金来源有南阳做网站优化公司

文章目录 k8s 部署yapi平台前言准备工作构建yapi镜像Dockerfileentrypoint.shbuild.sh源码下载构建镜像启动mongo数据库新建nfs服务mongo创建mongo服务初始化数据启动yapi服务创建yapi服务查看密码访问地址k8s 部署yapi平台 前言 部署yapi平台需要mo

Differential Equations (Smita Sood) Notes

Separable Differential Equations \[\frac{{\rm d}y}{{\rm d}x}=\frac{f(x)}{g(y)},g(y)\ne0 \]Solution \[\begin{align} \frac{{\rm d}y}{{\rm d}x}=\frac{f(x)}{g(y)}&\Longleftrightarrow g(y)\frac{{\rm d}y…

《前端面试题:BFC(块级格式化上下文)》 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

NLP学习路线图(十四):词袋模型(Bag of Words) - 详解

NLP学习路线图(十四):词袋模型(Bag of Words) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

实用指南:苍茫命令行:linux模拟实现,书写微型bash

实用指南:苍茫命令行:linux模拟实现,书写微型bashpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

营销型网站策划建设wordpress 转换 织梦

百科词条创建上去是相当不易的&#xff0c;同时修改也是如此&#xff0c;一般情况下&#xff0c;百科词条是不需要修改的&#xff0c;但是很多时候企业或是人物在近期收获了更多成就或是有更多的变动&#xff0c;这个时候就需要补充维护词条了&#xff0c;如何修改百科内容&…

微信餐饮微网站建设重庆网站建立

Kafka 1.基于Pull的模式来处理消息消费 2.追求高吞吐量 3.一开始的目的就是日志收集和传输 4.0.8版本开始支持复制&#xff0c;不支持事务&#xff0c;对消息的重复、丢失、错误没有严格要求、适合产生大量数据的互联网服务的数据收集业务. RabbitMQ RabbitMQ是使用Erlang语…

品牌网站建设9小蝌蚪9a广州天河区做网站

视频监控技术从传统监控到智能化升级的过程是一个技术革新和应用场景拓展的过程。智能视频监控系统通过集成AI和机器学习算法&#xff0c;能够实现行为分析、人脸识别和异常事件检测等功能&#xff0c;提升了监控的准确性和响应速度。这些系统不仅用于传统的安全防护&#xff0…

公司网站建设费怎么入账deppt模板网

一、简介 股票上涨和下跌,创造出像海浪一样难以预测的模式和走势。然而,就像科学家通过了解下面的水流来预测波浪的运动一样,我们也可以使用类似的工具破译股票市场的一些模式。 通过利用小波变换的力量,我们深入表面,试图揭示驱动股价的深层原因。这段旅程不仅仅涉及数字…

微信群公告如何做网站链接工商注册流程和需要的资料

WP中获取POST有两个主要函数&#xff0c;Get_post()和Get_Posts()。一个是获取单文章&#xff0c;另外一个是获取多文章&#xff0c;其中&#xff0c;官网对Get_posts()函数的描述很简单。但有的时候描述越简单的函数&#xff0c;使用起来却并没有那么简单。下面我通过一个案例…

CF2149题解

A. Be Positivecode #include<bits/stdc++.h> using namespace std; const int NN = 1e4; int T; int n,a[NN]; int cnt1,cnt2; void solve(){cnt1 = cnt2 = 0;cin >> n;for(int i = 1; i <= n; ++i){c…

教育网站建设改版湘潭做网站 z磐石网络

网站爬虫&#xff08;Web Scrapers&#xff09;是一种自动化工具&#xff0c;用于抓取网页上的数据。虽然合法的搜索引擎爬虫有助于提升网站的可见度&#xff0c;但恶意爬虫可能带来数据盗窃、版权侵犯等问题&#xff0c;甚至造成服务器过载。本文将探讨如何有效预防网站受到恶…