洛谷P8816 [CSP-J 2022] 上升点列一题的题解

发布时间:2026/9/27 7:11:30

洛谷P8816 [CSP-J 2022] 上升点列一题的题解 20分采用暴力搜索方法。使用深度优先搜索DFS进行遍历。对于每个点有两种选择将其加入序列或不加入序列。当遍历到第n个点时对生成的序列进行合法性判断。判断序列是否合法需满足两个条件序列单调不减且相邻两点之间的欧几里得距离为1即一个点要么在另一个点的正上方要么在正下方。如果两点之间出现单调递减则序列不合法如果两点之间需要补充的点数超过k同样不合法。#includebits/stdc.husingnamespacestd;intn,k;vectorpairint,intp;intmaxn0;voidcheck(constvectorintc){if(c.empty())return;vectorpairint,intcur;for(intidx:c){cur.push_back(p[idx]);}sort(cur.begin(),cur.end());//单调性的检查booloktrue;for(inti1;icur.size();i){if(cur[i].firstcur[i-1].first||cur[i].secondcur[i-1].second){okfalse;break;}}if(!ok)return;//计算需要添加的点数 d(x2-x1)(y2-y1)intcost0;for(inti1;icur.size();i){intdxcur[i].first-cur[i-1].first;intdycur[i].second-cur[i-1].second;cost(dxdy-1);//需要补的点数}if(costk){maxnmax(maxn,(int)c.size());}}voiddfs(intidx,vectorintc){if(idxn){check(c);return;}dfs(idx1,c);c.push_back(idx);dfs(idx1,c);c.pop_back();}intmain(){cinnk;for(inti0;in;i){intx,y;cinxy;p.push_back({x,y});}vectorintc;dfs(0,c);coutmaxnk;return0;}100分法一采用暴力搜索结合记忆化优化。由于DFS本身没有明显的记忆化点因此将记忆化策略应用在check函数中。我们知道从一个点出发可以走很多条路有一些路是有重叠的。所以可以记录每条路的子路的长度到时候重叠部分直接用即可。#includebits/stdc.husingnamespacestd;intn,k;vectorpairint,intp;intmemo[505][505];intmaxn0;intdfs(inti,intused)//used是之前补的点数{if(memo[i][used]!-1)returnmemo[i][used];intbest1;for(intji1;jn;j){if(p[j].secondp[i].second)continue;//递减直接跳过intdxp[j].first-p[i].first;intdyp[j].second-p[i].second;intneeddxdy-1;if(usedneedk){bestmax(best,dfs(j,usedneed1);//找最长序列}}returnmemo[i][used]best;//记忆化}intmain(){cinnk;for(inti0;in;i){intx,y;cinxy;p.push_back({x,y});}sort(p.begin(),p.end());memset(memo,-1,sizeof(memo));for(inti0;in;i){maxnmax(maxn,dfs(i,0));}coutmaxnk;return0;}100分法二暴力有一定风险我们可以想想用dp。实际上就是把记忆化数组变成dp数组就行了只不过dp[i][0]要赋初值为1。策略改在某个点往后探索为以该点结尾中间某点开始到这里。但是used需要我们自己枚举也充当dp[x][y]中的y。就是从某点此前花费used个点下一个点接该点不算补的点的长度装进dp数组。#includebits/stdc.husingnamespacestd;intn,k;vectorpairint,intp;intdp[505][505];intmaxn0;intmain(){cinnk;for(inti0;in;i){intx,y;cinxy;p.push_back({x,y});}sort(p.begin(),p.end());for(inti0;in;i){dp[i][0]1;for(intj0;ji;j){if(p[i].secondp[j].second)continue;intdxp[i].first-p[j].first;intdyp[i].second-p[j].second;intneeddxdy-1;for(intused0;usedneedk;used){dp[i][usedneed]max(dp[i][usedneed],dp[j][used]1);}}}for(inti0;in;i){for(intused0;usedk;used){maxnmax(dp[i][used],maxn);}}coutmaxnk;return0;}
延伸阅读

更多相关文章

2026/9/27 5:45:07

建设一个购物网站要多少钱?2024年老板必看:从几千元到上百万元的真实账单拆解

咱们今天不整那些虚头巴脑的互联网黑话,也不搞什么高科技名词轰炸。就坐在咱们这杯刚泡好的茶旁边,像老朋友聊天一样,好好掰扯一下这个让无数初创老板和传统企业主深夜辗转反侧的问题:建设一个购物网站要多少钱?说实话,这个问题问得越笼统,答案就越像玄学。你去问外包公…

2026/9/23 22:50:53

AI Agent安全攻防:为什么你的智能体可能泄露企业数据?

前言:AI Agent最大的风险,是它拥有了“行动能力”过去的软件漏洞:通常来自:SQL注入;权限错误;代码漏洞。但是AI Agent出现后:新的问题来了。因为Agent不仅能:回答问题。它还能&#…

2026/9/25 23:33:51

《数字信号处理:使用Python分析与实现》全套PPT课件2026

《数字信号处理:使用Python分析与实现》全套PPT课件2026 课件参考:数字信号处理:使用Python分析与实现 李蓉艳 教材 课件内容: 第1章离散时间信号与系统-pptx 第2章时域离散系统的频域分析.ppx 第3章离散傅里叶变换(DFT&#xff0…

2026/9/27 7:11:06

Microsoft Agent Framework 中 Agent 的架构形态

目录 1. 应用托管型 Agent(Application-owned Agent) 可用的模型提供商 不同 Model Provider 面向 Microsoft Agent Framework 提供的能力 .NET SDK 和 Endpoint 2. 自定义实现型 Agent(Custom Agent) 引用 Abstractions 包…

2026/9/27 7:11:06

3个实战案例解决wordpress页面重定向循环

3个实战案例解决wordpress页面重定向循环 域名解析指向了服务器IP,服务器却把请求踢回域名,这个死循环一卡,网站直接白屏。很多项目经理接手烂摊子时,面对后台日志里满屏的301和302跳转,脑子里只剩“域名服务器搞不懂”这几个字。别慌…

2026/9/27 7:11:06

网站构建是什么新手入门避坑指南

网站构建是什么新手入门避坑指南 网站做好了却没人访问,这是绝大多数新手最崩溃的瞬间。别急着怀疑自己的代码写得烂,或者SEO没做好,很多时候是因为你对“网站构建是什么”这个基础概念理解得过于浅显。…

2026/9/27 7:06:06

求ccf-csp备考方法

我现在学完了awing的语法课以及做完了里面的练习题,想考今年12月份的,我的目标是考到全国平均分多50分就行,请问接下来我应该怎么做,求

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑