新闻详情

新闻详情

首页 / 资讯中心 / 详情

【csp-j 2020 方格取数】题解

发布时间:2026/10/1 21:37:50来源:尧图网络
【csp-j 2020 方格取数】题解
【csp-j 2020 方格取数】题解依旧csp-j的题解题目传送门({[ ]})这题看了之后都应该觉得用DP吧这题最大的难点在于它能往上走我们来盘一下走的规则吧1不能向左走2不能出界3不能走回头路如果用传统格点 DP 设f [ i ] [ j ] f[i][j]f[i][j]表示走到( i , j ) (i, j)(i,j)的最大权值很容易推出状态转移方程f [ i ] [ j ] max ⁡ ( f [ i ] [ j − 1 ] , f [ i − 1 ][ j ] , f [ i 1 ] [ j ] ) a [ i ] [ j ] f[i][j] max(f[i][j-1], f[i-1][j], f[i1][j]) a[i][j]f[i][j]max(f[i][j−1],f[i−1][j],f[i1][j])a[i][j]但会有一个致命问题:(后效性) !求f [ i ] [ j ] f[i][j]f[i][j]需要知道它下面的f [ i 1 ] [ j ] f[i1][j]f[i1][j]求f [ i 1 ] [ j ] f[i1][j]f[i1][j]时又要用到它上面的f [ i ] [ j ] f[i][j]f[i][j]自己依赖自己程序死循环了。解题关键点在于因为不能重复经过已经走过的方格且无法向左走所以在列与列之间是单向向右的而在同一列中只能“单向一直向上”或“单向一直向下”绝不能反复折返。定义状态我们可以将 r[i][j]:从左方进入,u[i][j]:从上方进入,d[i][j]:从下方进入那么r[i][j]是从第j − 1 j-1j−1列的第i ii行走过来的。至于它在第j − 1 j-1j−1列时是怎么到的向上、向下、向右都有可能r[i][j]max(max(u[i][j-1],d[i][j-1]),r[i][j-1])a[i][j];u[i][j]是从当前列下方的( i 1 , j ) (i1, j)(i1,j)走过来的。为了不回头它的上一步绝对不能是从上面下来的只能是向右走到( i 1 , j ) (i1, j)(i1,j)或继续向上走到( i 1 , j ) (i1, j)(i1,j)u[i][j] max(u[i 1][j], r[i 1][j]) a[i][j];d[i][j]是从当前列上方的( i − 1 , j ) (i-1, j)(i−1,j)走过来的。同理为了不回头它的上一步只能是向右走到( i − 1 , j ) (i-1, j)(i−1,j)或继续向下走到( i − 1 , j ) (i-1, j)(i−1,j)。d[i][j] max(r[i - 1][j], d[i - 1][j]) a[i][j];最终答案就是max(max(u[n][m], d[n][m]), r[n][m])三个取最大值代码#includebits/stdc.h#definemaxn1005usingnamespacestd;intn,m,a[maxn][maxn];//r[i][j]:从左方进入,u[i][j]:从上方进入,d[i][j]:从下方进入longlongr[maxn][maxn],d[maxn][maxn],u[maxn][maxn];intmain(){ios::sync_with_stdio(false);cin.tie(0);cinnm;for(inti1;in;i){for(intj1;jm;j){cina[i][j];r[i][j]u[i][j]d[i][j]-1e16;//数据有负数开1e16最安全}}r[1][1]u[1][1]d[1][1]a[1][1];//初始化起点(1,1)for(inti2;in;i){//初始第一列,i2因为(1,1)初始过了d[i][1]d[i-1][1]a[i][1];}for(intj2;jm;j){//开始DPfor(inti1;in;i){//向右r[i][j]max(max(u[i][j-1],d[i][j-1]),r[i][j-1])a[i][j];}for(intin-1;i1;i--){//向上u[i][j]max(u[i1][j],r[i1][j])a[i][j];}for(inti2;in;i){//向下d[i][j]max(r[i-1][j],d[i-1][j])a[i][j];}}//输出从上、下、右来的最大值coutmax(max(u[n][m],d[n][m]),r[n][m]);return0;}
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

两阶段鲁棒优化在微电网经济调度中的应用与CCG求解 2026/10/2 3:06:49

两阶段鲁棒优化在微电网经济调度中的应用与CCG求解

1. 微电网经济调度到底在解决什么问题做微电网调度的人,几乎都绕不开同一个痛点:光伏和风电的出力今天看着很准,明天就可能偏差百分之二三十,负荷曲线更是难伺候。你要是按确定性模型设计好一天的调度计划,实际运行的时…

阅读更多 →
微电网两阶段鲁棒优化经济调度:原理与CCG算法实践 2026/10/2 3:06:49

微电网两阶段鲁棒优化经济调度:原理与CCG算法实践

1. 微电网经济调度难在哪:不确定性才是真正的对手做过微电网调度的人都有同感:最难缠的不是机组约束、不是潮流计算,而是“明天到底来多少光、刮多大风、负荷涨多少”这种谁都说不好事。传统做法是把光伏出力、负荷当成一组确定数值塞进模型&…

阅读更多 →
Spring Boot集成Druid连接池:配置、监控与踩坑实战 2026/10/2 3:06:49

Spring Boot集成Druid连接池:配置、监控与踩坑实战

1. 从连接池到Druid:为什么要在Spring Boot里选它先亮个结论:如果你在Spring Boot项目里用JDBC、MyBatis或者JPA,连接池基本是绕不开的一环。而Druid在国内Java圈子里属于“老牌且能打”的选手,配合druid-spring-boot-starter这种…

阅读更多 →
LiteLLM生产部署实战:用统一API网关管理多模型接入 2026/10/2 3:06:49

LiteLLM生产部署实战:用统一API网关管理多模型接入

手头同时接了OpenAI、DeepSeek、本地Ollama,还有个用vLLM拉起来的开源模型,第一反应是很爽,第二反应就是头大:每家API格式不一样、鉴权方式不一样、限流策略也不一样,前端同事催着要上线,总不能每个模型都写…

阅读更多 →
Altium Designer画板全流程:原理图页+PCB板框+跨域协同 2026/10/2 3:06:49

Altium Designer画板全流程:原理图页+PCB板框+跨域协同

1. AD画板流程和快捷键:一个十年PCB工程师的日常操作手册Altium Designer(AD)里的“画板”,不是美术课上的水彩纸,而是工程师每天打交道的原理图页(Schematic Sheet)和PCB板框(Board…

阅读更多 →
PLC工程师生存指南:硬件实操、协议调试与自动化测试实战 2026/10/2 3:06:43

PLC工程师生存指南:硬件实操、协议调试与自动化测试实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉