当前位置: 首页 > news >正文

代码部落 20250713 CSP-J复赛 模拟赛

网址:代码部落    

密码 666888

T1-T3    自行处理

一:T4 游乐场

        思路:首先进行可行性判断: 当c[q]>m时,直接输出-1即可

        原本我想用01背包做,但因为有免费玩的条件在,所以应直接用线性dp

        状态转移方程

                设f[i][j][0/1]表示前i个设施,花费j元,第i个设施是“免费”(0)

        或花钱玩(1)时的最大快乐值

        转移:  f[i][j][0] : 从之前“花钱玩”的设施转移(免费获得当前设施),快乐值+hi

        f[i][j][1]: 从之前“免费玩”的设施转移(花钱玩当前设施),快乐值+hi 花费+ci

        同时设施按 从大到小排序(保证 “送” 的设施 ),并强制在 DP 中包含 q 设施。

        代码:

                

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=505;
int f[N][N][2];
int n,m,q;
struct node{int h,c,id;
}a[N];
bool cmp(node xx,node yy){return xx.c>yy.c;
}
signed main(){cin>>n>>m>>q;for(int i=1;i<=n;i++){cin>>a[i].h>>a[i].c;a[i].id=i;		}if(a[q].c>m){cout<<-1<<endl;return 0;}sort(a+1,a+1+n,cmp);for(int i=1;i<=n;i++){if(a[i].id==q){q=i;break;}}memset(f,-1,sizeof(f));f[0][0][0]=0;for(int i=1;i<q;i++){for(int j=0;j<=m;j++){for(int k=0;k<i;k++){if(f[k][j][1]!=-1){f[i][j][0]=max(f[i][j][0],f[k][j][1]+a[i].h);}if(j-a[i].c>=0&&f[k][j-a[i].c][0]!=-1){f[i][j][1]=max(f[i][j][1],f[k][j-a[i].c][0]+a[i].h);}}}}for(int j=0;j<=m;j++){for(int k=0;k<q;k++){if(f[k][j][1]!=-1)f[q][j][0]=max(f[q][j][0],f[k][j][1]+a[q].h);if(j-a[q].c>=0&&f[k][j-a[q].c][0]!=-1)f[q][j][1]=max(f[q][j][1],f[k][j-a[q].c][0]+a[q].h);}}for(int i=q+1;i<=n;i++){for(int j=0;j<=m;j++){for(int k=q;k<i;k++){if(f[k][j][1]!=-1)f[i][j][0]=max(f[i][j][0],f[k][j][1]+a[i].h);if(j-a[i].c>=0&&f[k][j-a[i].c][0]!=-1)f[i][j][1]=max(f[i][j][1],f[k][j-a[i].c][0]+a[i].h);}}}int ans=0;for(int i=q;i<=n;i++){for(int j=0;j<=m;j++){ans=max(ans,max(f[i][j][0],f[i][j][1]));}}cout<<ans<<endl;return 0;} 

        

http://www.lryc.cn/news/587123.html

相关文章:

  • Java#为什么使用ThreadLocal传参而不是直接传参
  • 每天一个前端小知识 Day 30 - 前端文件处理与浏览器存储机制实践
  • 5.适配器模式
  • ClickHouse 分区机制详解:规则、合并与实践指南
  • LeetCode 1156.单字符重复子串的最大长度
  • 力扣 hot100 Day43
  • OSPF与BGP的联动特性
  • 【设计模式】备忘录模式(标记(Token)模式)
  • 面向对象设计模式详解
  • Flink学习笔记:整体架构
  • NO.4数据结构数组和矩阵|一维数组|二维数组|对称矩阵|三角矩阵|三对角矩阵|稀疏矩阵
  • 【Docker基础】Dockerfile指令速览:环境与元数据指令详解
  • 【保姆级图文详解】Spring AI 中的工具调用原理解析,工具开发:文件操作、联网搜索、网页抓取、资源下载、PDF生成、工具集中注册
  • leetGPU解题笔记(1)
  • 【CMake】CMake创建、安装、使用静态库和动态库
  • LeetCode|Day8|1047. 删除字符串中的所有相邻重复项|Python刷题笔记
  • java.net.InetAddress
  • 嵌入式 Linux开发环境构建之安装 SSH 软件
  • MongoDB数据基本介绍
  • 小白成长之路-LVS
  • 【VSCode+LaTeX】科研写作环境搭建
  • C语言的一些随笔
  • 面试150 填充每个节点的下一个右侧节点指针Ⅱ
  • 006_测试评估与安全实践
  • 2025上海市“星光计划“信息安全管理与评估赛项二三阶段任务书
  • RAG篇(RAG的流程)
  • STM32-第六节-TIM定时器-2(输出比较)
  • Linux驱动开发2:字符设备驱动
  • iOS UI视图面试相关
  • 哪些行业的“反内卷”前景更好?