2018 CodeM 資格賽 下單

2021-08-20 08:50:53 字數 1672 閱讀 6497

這道題目應該算簽到題了吧(我大概掃了一下,感覺這道題目應該是最簡單的 ^_^)

注:如果您現在還沒有ac,並且比賽還沒有結束,我建議再想想,認真再重新讀下題目描述,或許你就會發現原來是自己想複雜了(不管你是不是這樣的情形,反正我當時是這樣的,哈哈)

[程式設計|1000分] 下單

時間限制:c/c++ 1秒,其他語言 2秒

空間限制:c/c++ 262144k,其他語言 524288k

題目鏈結 — 牛客網

題目描述

輸入描述:

第一行,兩個整數n,m。

接下來n行,每行乙個正整數ai,以及乙個0/1表示是否可以選擇**優惠(1表示可以)。

接下來m行,每行兩個正整數bi,ci,描述一款滿減優惠。

1 <= n,m <=10

1 <= ai <= 100

1 <= ci < bi <= 1000

輸出描述:

一行乙個實數,表示至少需要消耗的錢數(保留恰好兩位小數)。

示例1輸入

2 1

6 110 1

12 2

輸出

12.80
示例2輸入

2 2

6 110 1

5 116 6

輸出

10.00
最開始拿到這道題目,讀了下題目,題意應該是很容易讀懂的,畢竟這樣的場景在現實生活中經常出現嘛(感覺這道題目命的很不錯呀 ^_^)

咋一看,我們如何進行選取哪些物品進行優惠?腦袋馬上就閃出dp(假裝心中一萬個dp)。

然後就開始認真做題了(傻了吧唧的)

做了一半,發現這題是真的難(自己太菜就太菜,還怪題目難,哼,就是這麼不講理)

想了下,真的難,難道是我題目理解錯誤了?(好像開竅了)

好吧,讓我們來畫重點了。

每種滿減優惠描述為(bi,ci),即滿bi減ci(當消費》=bi時優惠ci)。

求要買齊這n個物品(必須一單買齊),至少需要多少錢(保留兩位小數)。

注意我標註的重點,然後再想想應該明白了

只能使用一種滿減,並且只能一單買完(我就是最開始以為可以使用多種滿減方案,發現這道題目是真的難)

#include 

using

namespace

std;

int a[11][2];

int bc[11][2];

int main()

for(int i=0;icin>>bc[i][0]>>bc[i][1];

}double res = 0; //結果

double temp = 0; //商品總額

for(int i=0;i0];

if(a[i][1]) else

}for(int i=0;i//遍歷選擇最優的滿減

if(temp >= bc[i][0])}}

cout

<2)0;}

2018 CodeM 資格賽 B 可樂

小美和小團最近沉迷可樂。可供ta們選擇的可樂共有k種,比如可口可樂 零度可樂等等,每種可樂會帶給小美和小團不同的快樂程度。ta們一共要買n瓶可樂,每種可樂可以買無限多瓶,小美會隨機挑選其中的m瓶喝,剩下的n m瓶小團喝。請問應該如何購買可樂,使得小美和小團得到的快樂程度的和的期望值最大?現在請求出購...

2018 CodeM資格賽 第三題 世界盃

題意 給16支球隊互相勝利的概率,問每支球隊獲勝的概率。世界盃就要開始啦!真真正正的戰鬥從淘汰賽開始,現在我們給出球隊之間的勝負概率,來 每支球隊奪冠的可能性。在接下來的篇幅中,我們將簡單介紹淘汰賽階段的規則。淘汰賽階段的90分鐘常規時間內 含補時階段 進球多的球隊取勝,如果參賽雙方在90分鐘內 含...

CodeM資格賽E 數碼 題解

題意 給定兩個整數 l 和 r 對於所有滿足1 l x r 10 9 的 x 把 x 的所有約數全部寫下來。對於每個寫下來的數,只保留最高位的那個數碼。求1 9每個數碼出現的次數。思路首先我們只需要能求出從1到x的答案,然後減就好了,對於不超過x 的數,就要在這個的最高位的計數上加x x 並記錄下x...