zoukankan      html  css  js  c++  java
  • Codeforces Round #552 (Div. 3) F. Shovels Shop(dp)

    题目链接
    大意:给你n个物品和m种优惠方式,让你买k种,问最少多少钱。
    思路:考虑dpdp,dp[x]dp[x]表示买xx种物品的最少花费,然后遍历mm种优惠方式就行转移就好了。

    #include<bits/stdc++.h>
    
    #define LL long long
    #define fi first
    #define se second
    #define mp make_pair
    #define pb push_back
    
    using namespace std;
    
    LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
    LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
    LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
    const int N = 2e5 +11;
    int n,m,a[N],k;
    struct uzi
    {
    	int a,b;
    	bool operator <(const uzi & t)const{
    		return b>t.b;
    	}
    }p[N];
    LL dp[2033],s[N];
    int main(){
    	ios::sync_with_stdio(false);
    	cin>>n>>m>>k;
    	for(int i=1;i<=n;i++)cin>>a[i];
    	sort(a+1,a+1+n);
    	for(int i=1;i<=n;i++)s[i]=s[i-1]+a[i];
    	for(int i=1;i<=m;i++)cin>>p[i].a>>p[i].b;
    	for(int i=1;i<=k;i++){
    		dp[i]=dp[i-1]+a[i];
    		for(int j=1;j<=m;j++){
    			if(p[j].a<=i){
    				int l=i-p[j].a;
    				dp[i]=min(dp[i],dp[i-p[j].a]+s[i]-s[l]+s[i-p[j].a]-s[i+p[j].b-p[j].a]);
    			}
    		}
    	}
    	cout<<dp[k]<<endl;
    	return 0;
    }
    
  • 相关阅读:
    git clone --early EOF
    weex 小结 -- <list>
    weex 小结 --官方扩展组件
    weex 小结--内建模块
    viewPager 的可滑动 Title
    viewPager + fragment
    onInterceptTouchEvent / onTouchEvent响应事件的详析
    startActivity跳转失败而且没有异常信息
    ios2048
    插入排序
  • 原文地址:https://www.cnblogs.com/pubgoso/p/10759697.html
Copyright © 2011-2022 走看看