hdu 5410
来源:互联网 发布:网页游戏发布平台源码 编辑:程序博客网 时间:2024/05/16 10:08
CRB and His Birthday
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 625 Accepted Submission(s): 325
Problem Description
Today is CRB's birthday. His mom decided to buy many presents for her lovely son.
She went to the nearest shop withM Won(currency unit).
At the shop, there areN kinds of presents.
It costsWi Won to buy one present of i -th kind. (So it costs k × Wi Won to buy k of them.)
But as the counter of the shop is her friend, the counter will giveAi × x + Bi candies if she buys x (x >0) presents of i -th kind.
She wants to receive maximum candies. Your task is to help her.
1 ≤T ≤ 20
1 ≤M ≤ 2000
1 ≤N ≤ 1000
0 ≤Ai, Bi ≤ 2000
1 ≤Wi ≤ 2000
She went to the nearest shop with
At the shop, there are
It costs
But as the counter of the shop is her friend, the counter will give
She wants to receive maximum candies. Your task is to help her.
1 ≤
1 ≤
1 ≤
0 ≤
1 ≤
Input
There are multiple test cases. The first line of input contains an integer T , indicating the number of test cases. For each test case:
The first line contains two integersM and N .
ThenN lines follow, i -th line contains three space separated integers Wi , Ai and Bi .
The first line contains two integers
Then
Output
For each test case, output the maximum candies she can gain.
Sample Input
1100 210 2 120 1 1
Sample Output
21HintCRB's mom buys 10 presents of first kind, and receives 2 × 10 + 1 = 21 candies.
Author
KUT(DPRK)
Source
2015 Multi-University Training Contest 10
Recommend
wange2014
#include <cstdio>#include <cstring>#include <iostream>using namespace std;#define N 1005#define INF 0x3f3f3f3fint n, M, a[N], b[N], w[N];int d[2 * N];int main(){ int T; scanf("%d", &T); while(T--) { scanf("%d%d", &M, &n); for(int i = 1; i <= n; i++) scanf("%d%d%d", &w[i], &a[i], &b[i]); memset(d, 0, sizeof d); int ans = -INF; for(int i = 1; i <= n; i++) for(int j = M; j >= w[i]; j--) d[j] = max(d[j], d[j - w[i]] + a[i] + b[i]); for(int i = 1; i <= n; i++) for(int j = w[i]; j <= M; j++) d[j] = max(d[j], d[j - w[i]] + a[i]); printf("%d\n", d[M]); }}/*1100 210 2 120 1 1*/
1 0
- hdu 5410
- hdu 5410
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- ionic + angularJS $ionicHistory接口文档
- android stuido插件
- poj--2506
- 配置Tomcat
- layoutSubviews 调用
- hdu 5410
- 无需Root也能Hook?——Depoxsed框架演示
- 数据库SQL Server2012笔记(六)——修改表、数据的备份和恢复
- JAVA开发类似冒险岛的游戏Part1
- Android的输入事件分发机制笔记
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 1)(组合数学+容斥)
- “对路APP ”新版首推领投+跟投模式 或领中国合投新潮
- MySQL事务隔离级别
- IOS-6-UI知识总结-1(代码添加控件、视图切换、多种传值方式)