bc 一周年 1001 Souvenir (hdu 5310)

Souvenir

Accepts: 901

Submissions: 2743

Time Limit: 2000/1000 MS (Java/Others)

Memory Limit: 262144/262144 K (Java/Others)

问题描述

今天是BestCoder一周年纪念日. 比赛管理员Soda想要给每个参赛者准备一个纪念品. 商店里纪念品的单价是$p$元, 同时也可以花$q$元购买纪念品套装, 一个套装里有$m$个纪念品.

今天总共有$n$个参赛者, Soda想要知道最少需要花多少钱才可以给每个人都准备一个纪念品.

输入描述

输入有多组数据. 第一行有一个整数$T$ $(1 \le T \le 10^5)$, 表示测试数据组数. 然后对于每组数据:

一行包含4个整数 $n, m, p, q$ $(1 \le n, m, p, q \le 10^4)$.

输出描述

对于每组数据输出最小花费.

输入样例

2
1 2 2 1
1 2 3 4

输出样例

1
3

Hint

对于第一组数据, Soda可以1元购买一个套装. 对于第二组数据, Soda可以直接花3元购买一个纪念品.

水.只说三句话.不要用cin!不要用cin!不要用cin!
/*************************************************************************
    > File Name: code/bc/#ann/1001.cpp
    > Author: 111qqz
    > Email: [email protected]
    > Created Time: 2015年07月25日 星期六 18时54分24秒
 ************************************************************************/

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<stack>
#define y0 abc111qqz
#define y1 hust111qqz
#define yn hez111qqz
#define j1 cute111qqz
#define tm crazy111qqz
#define lr dying111qqz
using namespace std;
#define REP(i, n) for (int i=0;i<int(n);++i)
typedef long long LL;
typedef unsigned long long ULL;
int n,m,p,q;
int main()
{
    int T;
    cin>>T;
    int ans = 0;
    while (T--)
    {
    //  scanf("%d %d %d %d",&n,&m,&p,&q);
      scanf("%d %d %d %d",&n,&m,&p,&q);
      ans = n*p;
      ans = min(ans,n/m*q+n%m*p);
      ans = min(ans,((n-1)/m+1)*q);
      printf("%d\n",ans);
    }

    return 0;
}
时间: 2024-12-17 22:05:05

bc 一周年 1001 Souvenir (hdu 5310)的相关文章

BestCoder Round #1 1001 &amp;&amp; 1002 hdu 4857 4858

hdu 4857 逃生 第一题是拓扑排序,不是按照字典序最小输出,而是要使较小的数排在最前面..赛后弄了好久,才比较明白,我一直以为 反向建图,i从1到n,开始深搜dfs( i ),对i点的边,由小到大继续搜一下,同时标记搜过的数,搜过之后就不再搜,搜到底之后ans[cnt++] = u;这样顺序输出就是答案,后来经过超哥指点,才明白深搜贪心是错的.只有 反向建图,用优先队列把较大的数尽量排在前面,然后反序输出才是正解.. 1 #include<iostream> 2 #include<

hdu 5310 Souvenir

http://acm.hdu.edu.cn/showproblem.php?pid=5310 题意:今天是BestCoder一周年纪念日. 比赛管理员Soda想要给每个参赛者准备一个纪念品. 商店里纪念品的单价是p 元, 同时也可以花q 元购买纪念品套装, 一个套装里有m 个纪念品. 今天总共有n 个参赛者, Soda想要知道最少需要花多少钱才可以给每个人都准备一个纪念品. 输入描述 输入有多组数据. 第一行有一个整数T (1≤T≤10 5 ) , 表示测试数据组数. 然后对于每组数据: 一行包

(BC 一周年)hdu 5311 Hidden String

Hidden String Accepts: 437 Submissions: 2174 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) 问题描述 今天是BestCoder一周年纪念日. 比赛管理员Soda有一个长度为nn的字符串ss. 他想要知道能否找到ss的三个互不相交的子串s[l_1..r_1]s[l?1??..r?1??], s[l_2..r_2]s[l?2??..r?2

hdu 5310 Souvenir(BestCoder 1st Anniversary ($))

http://acm.hdu.edu.cn/showproblem.php?pid=5310 题目大意:要买n个纪念品,可以单个买p元每个,可以成套买q元一套,每套有m个,求最少花费 #include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> #define N 110 using namespace std; int main() { int t, sum, n, m,

hdu 5310 Souvenir (水)

题意:今天是BestCoder一周年纪念日. 比赛管理员Soda想要给每个参赛者准备一个纪念品. 商店里纪念品的单价是p元, 同时也可以花q元购买纪念品套装, 一个套装里有m个纪念品.今天总共有n个参赛者, Soda想要知道最少需要花多少钱才可以给每个人都准备一个纪念品. 思路:3种可能之一,要么不买套装,要么全买套装,要么留下一点点单独买其他买套装. 1 //#include <bits/stdc++.h> 2 #include <iostream> 3 #include <

(BC 一周年) hdu 5312 Sequence

Sequence Accepts: 25 Submissions: 1442 Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) 问题描述 Soda习得了一个数列, 数列的第nn (n \ge 1)(n≥1)项是3n(n-1)+13n(n−1)+1. 现在他想知道对于一个给定的整数mm, 是否可以表示成若干项上述数列的和. 如果可以, 那么需要的最小项数是多少? 例如, 22可以表示

hdu 5310 Souvenir (简单题)

这是一道稍微仔细想想就可以做出来的简单题,而我wa了两次,这也是把它写上来的原因,只是因为我没有认真想,还是不够仔细啊,还是很马虎啊,不能慌张,得仔细读题,慢慢想题. 思路: 一共只有几种情况:1全部用单价p买:2全部用套装q买:3先用套装买,剩下的用单价p买 注:不必判断先用单价p再用套装(如果先用p的话就证明单价比套装更划算(买相同数量所需要的话费)) 贴代码: #include<stdio.h> #include<stdlib.h> #include<string.h&

hdu 5310(贪心)

题意:要买n个纪念品,单价p元,有团购价 m个q元,问怎样买钱最少 这个是BC周年庆第一题,水题昂,小学数学题,就是看n个纪念品单买.总体买团购然后零头买单价的.全部买团购价的多买也无所谓的,然后直接取最小值就没了``` 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<math.h> 5 using namespace std; 6 7 int minn(in

HDU 5310 Hidden String(暴力枚举)

Hidden String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 429    Accepted Submission(s): 161 Problem Description Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets