第十四届华中科技大学程序设计竞赛决赛同步赛 Beautiful Land

It’s universally acknowledged that there’re innumerable trees in the campus of HUST.
Now HUST got a big land whose capacity is C to plant trees. We have n trees which could be plant in it. Each of the trees makes HUST beautiful which determined by the value of the tree. Also each of the trees have an area cost, it means we need to cost ci area of land to plant.
We know the cost and the value of all the trees. Now HUSTers want to maximize the value of trees which are planted in the land. Can you help them?

输入描述:

There are multiple cases.The first line is an integer T(T≤10), which is the number of test cases.For each test case, the first line is two number n(1≤n≤100) and C(1≤C≤108), the number of seeds and the capacity of the land. Then next n lines, each line contains two integer ci(1≤ci≤106) and vi(1≤vi≤100), the space cost and the value of the i-th tree.

输出描述:

For each case, output one integer which means the max value of the trees that can be plant in the land.

示例1

输入

复制

1
3 10
5 10
5 10
4 12

输出

复制

22
 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <vector>
 5 #include <cmath>
 6 #include <algorithm>
 7 using namespace std;
 8 #define N  105
 9 #define mod 530600414
10 #define mem(a,b) memset(a,b,sizeof(a))
11 #define ll  long long
12 #define inf 0x3f3f3f3f
13 int t,n,C;
14 int c[N],v[N];
15 int dp[10010];
16 int main()
17 {
18     scanf("%d",&t);
19     while(t--)
20     {   scanf("%d%d",&n,&C);
21         mem(dp,inf);
22         dp[0]=0;
23         //dp[i] 要达到价值i,需要的最小空间。
24         for(int i=0;i<n;i++)  scanf("%d%d",&c[i],&v[i]);
25         for(int i=0;i<n;i++)
26         {
27             for(int  j=10000;j-v[i]>=0;j--){
28                 dp[j]=min(dp[j],dp[j-v[i]]+c[i]);
29             }
30             /*
31             for(int  j=0;j+v[i]<=10000;j++){
32                 dp[j+v[i]]=min(dp[j+v[i]],dp[j]+c[i]);
33                 1
34                 3 10
35                 5 10
36                 5 10
37                 4 12
38                 dp[24]=8,因此要逆序
39             }
40             */
41         }
42         for(int i=10000;i>=0;i--){
43             if(dp[i]<=C) {
44                 printf("%d\n",i);
45                 break;
46             }
47         }
48     }
49     return  0;
50 }

原文地址:https://www.cnblogs.com/tingtin/p/9426808.html

时间: 2024-10-09 17:42:21

第十四届华中科技大学程序设计竞赛决赛同步赛 Beautiful Land的相关文章

第十四届华中科技大学程序设计竞赛决赛同步赛

第十四届华中科技大学程序设计竞赛决赛同步赛 A Beauty of Trees 思维,带权并查集 题意: 长度为 n 的序列,没告诉你具体数是多少.只给出 m 个查询,表示区间 [l,r] 的异或和为 k .但是第 i 个查询如果和前面的查询有矛盾,那就是错误的.输出所有的错误查询. tags: 对于一个查询,我们知道 sum[r] ^ sum[l-1] = k . 建成图就是 r -> (l-1) ,但要快速地求出异或值,就要用带权并查集处理.如有 sum[r]^sum[l-1]=k,即 r

第十四届华中科技大学程序设计竞赛 J Various Tree【数值型一维BFS/最小步数】

链接:https://www.nowcoder.com/acm/contest/106/J 来源:牛客网 题目描述 It's universally acknowledged that there're innumerable trees in the campus of HUST. And there are many different types of trees in HUST, each of which has a number represent its type. The doc

第十四届华中科技大学程序设计竞赛 K Walking in the Forest【二分答案/最小化最大值】

链接:https://www.nowcoder.com/acm/contest/106/K 来源:牛客网 题目描述 It's universally acknowledged that there're innumerable trees in the campus of HUST. Now you're going to walk through a large forest. There is a path consisting of N stones winding its way to

第十四届华中科技大学程序设计竞赛--J Various Tree

链接:https://www.nowcoder.com/acm/contest/106/J来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 It’s universally acknowledged that there’re innumerable trees in the campus of HUST. And there are many different types o

2018年湖南省第十四届大学生计算机程序设计竞赛

目录 题目链接 题目 A题 思路 代码 B题 思路 代码 C题 思路 代码 E题 思路 代码 H题 思路 代码 J题 思路 代码 K题 思路 代码 题目链接 传送门 题目 A题 思路 签到. 代码 #include <set> #include <map> #include <deque> #include <queue> #include <stack> #include <cmath> #include <ctime>

北京师范大学第十六届程序设计竞赛决赛-重现赛 ACFGI

A 塞特斯玛斯塔 题目描述 quailty是一名狂热的ACM音游选手,沉迷各种音乐游戏,比如Lunatic Rave 2,osu!之类的. 今天,quailty玩的是国内游戏厂商雷亚(并不是赞助商)出品的一款音乐游戏Cytus. 游戏中,玩家需要随着游戏界面中上下移动的扫描线来适时演奏对应音符. 当上下移动的黑色线(扫描线)与圆形的物体(音符)的圆心重合时点击音符. 普通音符(图中第一种)只需点击即可. 锁链音符(图中第二种)将带箭头的音符(滑块)按下后不要松开,并将滑块沿着斜线和圆点组成的路径

第十五届北京师范大学程序设计竞赛现场决赛题解

C. Captcha Cracker题目大意:给一个字符串,识别出0,2,4,6,9以及英文单词并按照出现顺序输出.通过人数/提交人数:60/62题目解法:直接模拟. F. Find Quailty题目大意:给一个凸多边形,求出从不在多边形内一点??出发走不超过??距离且不进入多边形内部所能到的区域面积.通过人数/提交人数:0/3题目解法:圆面积减去圆和凸多边形交的面积是显然不对的. 如果??不在边界上,过??作两条凸包的切线,那么区域被分为两部分,其中一部分如下图所示,只需要计算圆和简单多边形

西安电子科技大学第16届程序设计竞赛网络同步赛 G-小国的复仇

sb找规律. 分解因数. 1 #include<bits/stdc++.h> 2 #define LL long long 3 #define fi first 4 #define se second 5 #define mk make_pair 6 using namespace std; 7 8 const int N=1e6+7; 9 const int M=100+7; 10 const int inf=0x3f3f3f3f; 11 const LL INF=0x3f3f3f3f3f3

陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】

链接:https://www.nowcoder.com/acm/contest/121/J来源:牛客网 题目描述 大家知道,黑猫有很多的迷弟迷妹,当然也有相亲相爱的基友,这其中就有一些二五仔是黑猫的小老弟.小老弟是如何产生的呢?聪明的iko告诉黑猫,其实是有规律的(她怎么知道???)! 一开始,有两个原始二五仔,代号0/1和1/1, 从原始二五仔到第n代小老弟,每代相邻两个小老弟a/b和c/d,产生一个新的小老弟(a+c)/(b+d),成为下一代新成员.将每一代的小老弟代号约分(包括0/1,1/