zoukankan      html  css  js  c++  java
  • 【解题报告】洛谷P4138 挂饰

    【解题报告】洛谷P4138 挂饰

    题目链接

    https://www.luogu.com.cn/problem/P4138

    思路

    (f[i][j]) 表示挂了前 (i) 个挂饰,还剩下 (j) 个挂的位置,可以得到的最大的喜悦值是多少

    这就是一个背包

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

    其中如果加上挂钩之后小于零了之后,那就只挂在手机上了,所以是还剩下一个的那种情况,然后观察状态转移方程可以使用滚动数组优化一下就可以了

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <string>
    #define int long long
    using namespace std;
    const int maxn=2005;
    struct node{
    	int a,b;
    }c[maxn];
    int n,ans=-1e9;
    int f[5][maxn];
    bool cmp(node x,node y)
    {
    	return x.a>y.a;
    }
    signed main()
    {
    	memset(f,-0x3f3f3f,sizeof(f));
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	cin>>c[i].a>>c[i].b;
    	sort(c+1,c+1+n,cmp);
    	f[0][1]=0;
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=0;j<=n;j++)
    		f[i&1][j]=max(f[(i-1)&1][j],f[(i-1)&1][max(j-c[i].a,1ll*0)+1]+c[i].b);
    	}
    	for(int i=0;i<=n;i++)
    	ans=max(ans,f[n&1][i]);
    	cout<<ans<<'
    ';
    	return 0;
    }
    
    本博文为wweiyi原创,若想转载请联系作者,qq:2844938982
  • 相关阅读:
    Cocos2d-html5 笔记2: director
    Cocos2d html5 笔记 1: overview
    Device Pixel Ratio & Media Queries
    Viewport
    Viewport解决分辨率适配问题
    Ajax缓存解决办法
    capitalize()
    chr() 、ord()
    oct()
    eval()
  • 原文地址:https://www.cnblogs.com/wweiyi2004/p/15425418.html
Copyright © 2011-2022 走看看