HDOJ--4791--Alice's Print Service
題意:現在你要打印一些東西,比如需要99張紙,打印100張以下時話費10元每張,100張及100張以上時需要5元每張,此時你可以選擇打印100張,使得花費更小。現給一個數字n,表示n個區間段,然後有s1,p1,s2,p2......sn,pn,表示打印紙張大於等於s1而小於s2時,每張紙話費p1元,現有m個詢問,問每次給你x張紙,所需的最小花費是多少。
思路:可以從後往前做一個O(n)的預處理,表示需要的紙張少於si時,多打印紙需要的最小花費。從後往前,則min[ si ] = min ( si*pi , min[ si+1 ] ),之後每次查詢只需比較min[si]和正常方法的話費取最小即可。
因為輸出量較大 10^6 用cout果斷T了,需要用printf
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include