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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7-39 魔法优惠券 (25 分)(思路加解释 用容器做的)加油兄弟们

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7-39 魔法优惠券 (25 分)(思路加解释 用容器做的)加油兄弟们 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:題目

在火星上有個魔法商店,提供魔法優惠券。每個優惠劵上印有一個整數面值K,表示若你在購買某商品時使用這張優惠劵,可以得到K倍該商品價值的回報!該商店還免費贈送一些有價值的商品,但是如果你在領取免費贈品的時候使用面值為正的優惠劵,則必須倒貼給商店K倍該商品價值的金額…… 但是不要緊,還有面值為負的優惠劵可以用!(真是神奇的火星)

例如,給定一組優惠劵,面值分別為1、2、4、-1;對應一組商品,價值為火星幣M7、6、?2、?3,其中負的價值表示該商品是免費贈品。我們可以將優惠劵3用在商品1上,得到M28的回報;優惠劵2用在商品2上,得到M12的回報;優惠劵4用在商品4上,得到M3的回報。但是如果一不小心把優惠劵3用在商品4上,你必須倒貼給商店M12。同樣,當你一不小心把優惠劵4用在商品1上,你必須倒貼給商店M7。

規定每張優惠券和每件商品都只能最多被使用一次,求你可以得到的最大回報。

輸入格式:
輸入有兩行。第一行首先給出優惠劵的個數N,隨后給出N個優惠劵的整數面值。第二行首先給出商品的個數M,隨后給出M個商品的整數價值。N和M在[1, 10
6
]之間,所有的數據大小不超過2
30
,數字間以空格分隔。

輸出格式:
輸出可以得到的最大回報。

輸入樣例:

4 1 2 4 -1 4 7 6 -2 -3

輸出樣例:

43

二:思路

這個是用vector容器做的,在處理數據時,我是將正數和負數分開處理了,所以就簡單多了

如果兄弟們對vector這個特好用的容器不了解的話,可以點鏈接學習下哈

vector的基本用法

三:上碼

#include<bits/stdc++.h> using namespace std;int main(){int N,M;vector<int>v1,v2,v3,v4; //v1,v3處理正數,v2,v4處理負數 int sum = 0; cin >> N;for( int i = 0; i < N; i++ ){int temp;cin >> temp;if(temp > 0) v1.push_back(temp);elsev2.push_back(temp);}cin >> M;for( int i = 0; i < M; i++ ){int temp;cin >> temp;if( temp > 0) v3.push_back(temp);elsev4.push_back(temp);}sort(v1.begin(),v1.end());sort(v2.begin(),v2.end());sort(v3.begin(),v3.end());sort(v4.begin(),v4.end());while(!v1.empty() && !v3.empty()){int a = v1.back();int b = v3.back();sum += a * b;v1.pop_back();v3.pop_back();}int K = v2.size() < v4.size()? v2.size():v4.size();for( int i = 0; i < K; i++ ){sum += v2[i] * v4[i]; }cout << sum;}//4 1 2 4 -1 //3 7 6 -2

總結

以上是生活随笔為你收集整理的7-39 魔法优惠券 (25 分)(思路加解释 用容器做的)加油兄弟们的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。