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

代码部落 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.xdnf.cn/news/15321.html

相关文章:

  • 婚后才明白,原来结婚真需要一点冲动!
  • 时序预测 | Matlab代码实现VMD-TCN-GRU-MATT变分模态分解时间卷积门控循环单元多头注意力多变量时序预测
  • (一)SAP Group Reporting (GR) 集团财务合并解决方案套件概述
  • java 基本数据类型所对应的包装类
  • 暑期自学嵌入式——Day01(C语言阶段)
  • C++中顶层const与底层const
  • 【开源项目】网络诊断告别命令行!NetSonar:开源多协议网络诊断利器
  • 【研报复现】开源证券:均线的收敛与发散
  • 从 Manifest V2 升级到 Manifest V3:常见问题与解决方案
  • exe文件图标修改器 - exe图标提取器(ico、png) - 修改360文件夹的图标为windows自带的图标
  • # 通过wifi共享打印机只有手动翻页正反打印没有自动翻页正反打印,而通过网线连接的主机电脑可以自动翻页正反打印
  • 设计模式:软件开发的高效解决方案(单例、工厂、适配器、代理)
  • 预处理器完整功能介绍和示例演示(LESS/SCSS)
  • DMDIS文件到数据库
  • 并查集 UnionFind Test01
  • 什么是RAG(Retrieval-Augmented Generation)?一文读懂检索增强生成
  • websocket连接时发生未知错误
  • SAP顾问职位汇总(第28周)
  • 快速生成 Android 的 Splash 的 9 Patch 图片
  • phpMyAdmin:一款经典的MySQL在线管理工具又回来了
  • DNS解析过程和nmap端口扫描
  • 【STM32实践篇】:F407 时钟系统
  • MacOS使用Multipass快速搭建轻量级k3s集群
  • Spring Boot 安全登录系统:前后端分离实现
  • ERA5的UV合并成矢量并按时间维度转为nc或tif
  • 【版本控制】Perforce Helix Core (P4V) 完全入门指南(含虚幻引擎实战)
  • Spring Boot 集成 Spring Security 完整示例
  • C++ 单例模式实现
  • 牛客周赛 Round 100
  • AB实验评估指标体系之【实验评估指标体系】