hdu 5310 Souvenir (水)

题意:今天是BestCoder一周年纪念日. 比赛管理员Soda想要给每个参赛者准备一个纪念品. 商店里纪念品的单价是p元, 同时也可以花q元购买纪念品套装, 一个套装里有m个纪念品.今天总共有n个参赛者, Soda想要知道最少需要花多少钱才可以给每个人都准备一个纪念品.

思路:3种可能之一,要么不买套装,要么全买套装,要么留下一点点单独买其他买套装。

 1 //#include <bits/stdc++.h>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <map>
 9 #include <set>
10 #include <stack>
11 #include <queue>
12 #define LL long long
13 #define pii pair<int,int>
14 #define INF 0x7f7f7f7f
15 using namespace std;
16 const int N=100;
17
18 int main()
19 {
20     //freopen("input.txt", "r", stdin);
21     int n, m, t, p, q;
22     cin>>t;
23     while(t--)
24     {
25         scanf("%d%d%d%d",&n,&m,&p,&q);
26         int tmp=n/m*q + (n%m)*p;
27         int tmp2=min((n/m+1)*q, tmp);
28         int ans=min(n*p,tmp2);
29         printf("%d\n", ans);
30
31     }
32     return 0;
33 }

AC代码

 
时间: 07-25

hdu 5310 Souvenir (水)的相关文章

hdu 5310 Souvenir (简单题)

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

HDU 4960 (水dp)

Another OCD Patient Problem Description Xiaoji is an OCD (obsessive-compulsive disorder) patient. This morning, his children played with plasticene. They broke the plasticene into N pieces, and put them in a line. Each piece has a volume Vi. Since Xi

HDU 2092 整数解 --- 水题

x+y = n, x*y = m; y = n - x; x * ( n - x) = m nx - x^2 = m; x^2 - nx + m = 0; △ = sqrt(n^2 - 4m) 要有整数解即△需要为可开方数即可. /* HDU 2092 整数解 --- 水题 */ #include <cstdio> #include <cmath> int main() { double n, m; while (scanf("%lf%lf", &n,

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想要知道最少需要

hdu 5210 delete 水题

Delete Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5210 Description wld有n个数(a1,a2,...,an),他希望进行k次删除一个数的操作,使得最后剩下的n−k个数中有最多的不同的数,保证1≤n≤100,0≤k<n,1≤ai≤n(对于任意1≤i≤n) Input 多组数据(最多100组)对于每组数据:第一行:一个数n表示数的个数接下来一行:

HDU 5703 Desert 水题 找规律

已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这题输出二进制数就行了......那就更简单了,直接输出1,然后后面跟n-1个0就行了╮(╯_╰)╭ 下面AC代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm>

hdu 1015 Safecracker 水题一枚

题目链接:HDU - 1015 === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Klein safe behind a painting in the second-floor library. Klein safes are extremely rare; most of them, along with Klein and his factory, were destroyed in World

HDU 5211 Mutiple 水题

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5211 题解: 1.筛法: 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #include<vector> 6 using namespace std; 7 8 const int maxn=10000+10; 9 const i

hdu 5495 LCS 水题

LCS Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5495 Description 你有两个序列\{a_1,a_2,...,a_n\}{a?1??,a?2??,...,a?n??}和\{b_1,b_2,...,b_n\}{b?1??,b?2??,...,b?n??}. 他们都是11到nn的一个排列. 你需要找到另一个排列\{p_1,p_2,...,p_n\}{p?1?