日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shovels Shop

發(fā)布時間:2024/10/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shovels Shop 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://codeforces.com/contest/1154/problem/F

題意:你現(xiàn)在要買k把鏟子,商店有n把鏟子,價格數(shù)組給出。現(xiàn)在有m個優(yōu)惠:如果買了x_i個鏟子,那么其中y_i個最便宜的鏟子免費。一次只能使用一個優(yōu)惠或者不使用。求最少花費。

C++版本一

題解:完全背包+DP+思維

1、相比傳統(tǒng)完全背包,這個問題要先讓前i個物品最優(yōu);

2、x最為體積,區(qū)間[i-x+1,i-x+y]的和作為價值;

3、此題解尋找最大折扣;

/* *@Author: STZG *@Language: C++ */ #include <bits/stdc++.h> #include<iostream> #include<algorithm> #include<cstdlib> #include<cstring> #include<cstdio> #include<string> #include<vector> #include<bitset> #include<queue> #include<deque> #include<stack> #include<cmath> #include<list> #include<map> #include<set> //#define DEBUG #define RI register int #define endl "\n" using namespace std; typedef long long ll; //typedef __int128 lll; const int N=200000+10; const int M=2000+10; const int MOD=1e9+7; const double PI = acos(-1.0); const double EXP = 1E-8; const int INF = 0x3f3f3f3f; int t,n,m,k,p,l,r; ll ans,cnt,flag,temp,sum[N]; ll a[N],dp[M],w[N],v[N]; int main() { #ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout); #endif//ios::sync_with_stdio(false);//cin.tie(0);//cout.tie(0);//scanf("%d",&t);//while(t--){scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++){scanf("%I64d",&a[i]);}sort(a+1,a+n+1);for(int i=1;i<=m;i++){//scanf("%d%d",&e[i].x,&e[i].y);scanf("%I64d%I64d",&w[i],&v[i]);}for(int i=1;i<=n;i++){sum[i]=sum[i-1]+a[i];}for(int j=1;j<=k;j++){for(int i=1;i<=m;i++){if(j<w[i])continue;dp[j]=max(dp[j],dp[j-w[i]]+sum[j-w[i]+v[i]]-sum[j-w[i]]);}}cout<<sum[k]-dp[k]<<endl;//}#ifdef DEBUGprintf("Time cost : %lf s\n",(double)clock()/CLOCKS_PER_SEC); #endif//cout << "Hello world!" << endl;return 0; }

?C++版本二

題解:

1、對折扣規(guī)則排序,降低復(fù)雜度;

2、前綴和;

#include<bits/stdc++.h> #define ll long long #define pb push_back #define INF 0x3f3f3f3f; #define fi first #define se second #define MP make_pair #define PI pair<int,int> #define lson l,m,rt<<1,ls,rs #define rson m+1,r,rt<<1|1,ls,rs #define test printf("here!!!\n") using namespace std; const int mx=2e5+10; int n,m,k; ll a[mx]; ll qz[mx]; ll dp[mx]; struct Node {int x;int y; }b[mx]; bool cmp(const Node &a,const Node &b) {if (a.x!=b.x) return a.x<b.x;return a.y<b.y; } int main() {memset(dp,0x3f,sizeof(dp));dp[0]=0;scanf("%d%d%d",&n,&m,&k);for (int i=1;i<=n;++i){scanf("%I64d",&a[i]);}for (int i=1;i<=m;++i){scanf("%d%d",&b[i].x,&b[i].y);}sort(a+1,a+n+1);for (int i=1;i<=n;++i){qz[i]=qz[i-1]+a[i];}sort(b+1,b+n+1,cmp);for (int i=1;i<=k;++i){dp[i]=min(dp[i],dp[i-1]+a[i]);for (int j=1;b[j].x<=i;++j){dp[i]=min(dp[i],dp[i-b[j].x]+qz[i]-qz[i-b[j].x+b[j].y]);}}printf("%lld\n",dp[k]); }

?

總結(jié)

以上是生活随笔為你收集整理的Shovels Shop的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。