题目传送门

背包的变形,不得不说卡了我很久(估计是下午睡傻了)。

设f[i][j]为前i个物品剩下j个挂钩。

f[i][j]=max(f[i-1][j],f[i-1][max(j-a[i].x,0)+1]);

显然f[i-1][j]表示不挂,而f[i-1][max(j-a[i].x,0)+1]表示挂。

第二个之所以+1是因为原本就有一个钩子。j-a[i].x表示转移前的钩子数量。

有一点很重要,那就是要对钩子数量从大到小排列,不然的话会产生后效性。

因为如果钩子多的在钩子少的后面,那么两者就可以对换。

code:

/**************************************************************
Problem: 4247
User: yekehe
Language: C++
Result: Accepted
Time:2728 ms
Memory:17516 kb
****************************************************************/ #include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; char tc()
{
static char fl[],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,,,stdin),A==B)?EOF:*A++;
} int read()
{
char c;while(c=tc(),(c<''||c>'')&&c!='-');
int x=,y=;c=='-'?y=-:x=c-'';
while(c=tc(),c>=''&&c<='')x=x*+c-'';
return x*y;
} const int MAXN=;
int N,f[MAXN][MAXN];
struct node{
int x,y;
}a[MAXN];
int cmp(node x,node y){return x.x>y.x;} int main()
{
// freopen("x.txt","r",stdin);
N=read();
for(int i=;i<=N;i++)a[i].x=read(),a[i].y=read();
memset(f,-,sizeof(f));
sort(a+,a+N+,cmp);
f[][]=;
for(int i=;i<=N;i++)
for(int j=;j<=N;j++)
f[i][j]=max(f[i-][j],f[i-][max(,j-a[i].x)+]+a[i].y);
int ans=;
for(int i=;i<=N;i++)ans=max(f[N][i],ans);
printf("%d",ans);
return ;
}

最新文章

  1. WinXP/Win7/Win8本地用户配置文件迁移至域用户
  2. 最后一周psp
  3. WebForm Repeater Response以及 地址栏
  4. 【Python自动化运维之路Day7】
  5. 怎样用ZBrush中的Curves和Insert笔刷创建四肢
  6. jquery/js特效代码总结(一):tab切换
  7. js字符串截取函数slice()、substring()、substr()
  8. 【BZOJ 3674】可持久化并查集加强版&amp;【BZOJ 3673】可持久化并查集 by zky 用可持久化线段树破之
  9. margin负值
  10. 112. Path Sum
  11. WordPress防暴力破解:安全插件和用.htpasswd保护WordPress控制面板
  12. sql第二天
  13. File文件操作类
  14. 我的iOS-App
  15. 蓝桥杯-括号问题-java
  16. SpringBoot(五):@ConfigurationProperties配置参数绑定
  17. 2025战略,中秋送福利!免费开源ERP Odoo Windows 一键傻瓜式安装版发布
  18. QT 启动shell脚本
  19. 开启mysql远程访问过程中所遇常见问题的解决办法
  20. 使用Groovy+Spock轻松写出更简洁的单测

热门文章

  1. postgres if ,when及判断表是否存在的sql编写
  2. D3——根据数据画图
  3. 安装MySql-Python遇到的错误及解决方法
  4. C 语言实现多态的原理:函数指针
  5. UVa 1262 - Password(解码)
  6. Mapper.xml映射文件
  7. redis安装和简介(1)
  8. 在eclipse中配置Tomcat时,出现“Cannot create a server using the selected type”的错误。
  9. 使用jQuery实现伪分页
  10. PAT——1003. 我要通过!