我写了篇题解(第一篇)
管理员大大没给过,理由是:数学公式应添加 LaTeX;LaTeX 公式/英文/数字与汉字之间应加空格
有没有大佬教我怎么用LaTeX 公式啊!!!
矮一定先走,不然都走不掉了,而且对梯子贡献少
高一定后走,基本都走得掉了,而且对梯子贡献大
如果总长(a+b)一样,让脚到肩膀短(对梯子贡献少)的先走
状态转移方程:dp[j]=max(dp[j],dp[j-1]-a[i])
剩下就没有什么要点了
再多嘴一句,考试实在想不出来就暴力30分 最后的最后,代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,h,dp[2001];
struct node
{
int a,b;
}a[2001];
bool cmp(node x,node y)//排一下,逃生能力弱的人
(a+b小的)先逃出去
{
if(x.a+x.b==y.a+y.b) return x.a<y.a;
return x.a+x.b<y.a+y.b;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].a>>a[i].b;
cin>>h;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++) dp[i]=-100000000,dp[0]+=a[i].a;//一定不要忘了
(dp[i]=-100000000)哦!!!
for(int i=1;i<=n;i++) for(int j=i;j>=1;j--)
if(dp[j-1]+a[i].b>=h) dp[j]=max(dp[j],dp[j-1]-
a[i].a);//状态转移方程
for(int i=n;i>=0;i--) if(dp[i]>=0){
cout<<i;return 0;}
return 0;//完结散花
}