博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 3535 AreYouBusy
阅读量:6077 次
发布时间:2019-06-20

本文共 2263 字,大约阅读时间需要 7 分钟。

该题要用分组背包做,这里就是要怎样处理0必须选,1最多选一个,2任意选的问题;

这里我们就开个二维数组;f[i][j],i表示第组,j表示时间;当该组为0时,我们在该组的选择可以来自上一组的结果,也可以来自该组的结果;

如果为1那么结果只能依赖上一组的结果,如果依赖本组那么就会造成该组会多选;

为2是那就是一个01背包;

View Code
#include
#include
#include
using namespace std; class node {
public: int cost,happy; }; class Node {
public: node t[124]; int type,N; }; Node T[124]; int Max( int a, int b ) {
return a > b ? a : b; } int DP( int n , int time ) {
int f[124][124]; memset( f , -1 , sizeof( f ) ); memset( f[0] , 0 ,sizeof(f[0]) ); for( int i = 1 ; i <= n ; i ++ ) {
switch( T[i].type ) {
case 0: for( int j = 0 ; j < T[i].N; j++ ) for( int k = time ; k >= T[i].t[j].cost ; k-- ) {
if( f[i][k-T[i].t[j].cost]!=-1 ) f[i][k] = Max(f[i][k],f[i][k-T[i].t[j].cost] + T[i].t[j].happy); if( f[i-1][k-T[i].t[j].cost]!=-1 ) f[i][k] = Max(f[i][k],f[i-1][k-T[i].t[j].cost] + T[i].t[j].happy); } break; case 1: for( int j = 0 ; j < T[i].N; j++ ) for( int k = time ; k >= 0 ; k-- ) {
f[i][k] = Max(f[i-1][k],f[i][k]); if( k-T[i].t[j].cost>=0&&f[i-1][k-T[i].t[j].cost] != -1 ) f[i][k] = Max( f[i][k],f[i-1][k-T[i].t[j].cost] + T[i].t[j].happy ); } break; case 2: for( int j = 0 ; j <= time ; j++) {
f[i][j] = f[i-1][j]; } for( int j = 0 ; j < T[i].N; j++ ) for( int k = time ; k >= 0 ; k-- ) {
if( k-T[i].t[j].cost>=0&&f[i][k-T[i].t[j].cost]!=-1 ) f[i][k] = Max(f[i][k], f[i][k-T[i].t[j].cost] + T[i].t[j].happy); } break; } } return f[n][time]; } int main( ) {
int n , m , time, type; while( scanf( "%d%d",&n , &time )==2 ) {
for( int i = 1 ; i <= n ; i++ ) {
scanf( "%d%d",&T[i].N, &T[i].type ); for( int j = 0 ; j < T[i].N ; j++ ) {
scanf( "%d%d",&T[i].t[j].cost , &T[i].t[j].happy ); } } printf("%d\n", DP( n , time )); } return 0; }

 

转载于:https://www.cnblogs.com/bo-tao/archive/2012/03/13/2394502.html

你可能感兴趣的文章
面向 Photoshop 的英特尔® Texture Works 插件
查看>>
datatable使用的简单demo
查看>>
linux中单独编译网卡驱动
查看>>
结合zabbix监控系统io相关性能服务
查看>>
cve-2014-8517 FTP漏洞详解
查看>>
apache优化的“增加连接数”没学明白
查看>>
nmap 简单使用
查看>>
TortoiseGit日常使用指南
查看>>
ubuntu安装mongodb
查看>>
MVC4 EF linq从客户端中检测到有潜在的危险的Request.Path值
查看>>
MariaDB数据库备份与恢复
查看>>
Struts2中checkboxlist标签——应用、实现换行
查看>>
我的友情链接
查看>>
MySQL字符类型存放不同字符所占字节问题确认
查看>>
力战SDRAM(三)
查看>>
Lync 2010 学习(十三),手机登陆过程
查看>>
Datatables的自定义columns渲染与事件注册冲突解决
查看>>
异步获取EJB 服务实例
查看>>
######建立两台主机之间的ssh信任通道
查看>>
windows server迁移工具
查看>>