1. 程式人生 > >CodeM 資格賽 B 可樂 思維

CodeM 資格賽 B 可樂 思維

tac html ++ queue sta pop views info color

技術分享圖片

技術分享圖片

技術分享圖片

分析: 我們假設購買一種可樂p瓶,我們可以得到期望:p*(m/n*a[i]+(n-m)/n*b[i]),由這個式子我們可以看出唯一的變量是i,所以可以遍歷i找出式子的最大值

#include <map>
#include <set>
#include <stack>
#include <cmath>
#include <queue>
#include <cstdio>
#include <vector>
#include <string>
#include <cstring>
#include 
<iostream> #include <algorithm> #define debug(a) cout << #a << " " << a << endl using namespace std; const int maxn = 2e5 + 10; const int mod = 1e9 + 7; typedef long long ll; ll a[maxn], b[maxn]; int main() { ll n, m, k; while( cin >> n >> m >> k ) { ll sum
= -1e9, j = 0, flag; for( ll i = 0; i < k; i ++ ) { cin >> a[i] >> b[i]; if( m*a[i]+(n-m)*b[i] >= sum ) { flag = i; sum = m*a[i]+(n-m)*b[i]; } } for( ll i = 0; i < k; i ++ ) { if
( m*a[i]+(n-m)*b[i] == sum && i == flag ) { //取字典序最小 if( i == 0 ) { cout << n; } else { cout << " " << n; } } else { if( i == 0 ) { cout << 0; } else { cout << " " << 0; } } } cout << endl; } return 0; }

CodeM 資格賽 B 可樂 思維