usaco-3.1-inflate-pass

呵呵,这个是背包问题:

/*
ID: qq104801
LANG: C++
TASK: inflate
*/

#include <iostream>
#include <fstream>
#include <cstring>
#include <vector>
#include <list>
#include <set>
#include <queue>
#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

#define NMAX 11111
int m,n;
int minutes[NMAX];
int points[NMAX];
int dp[NMAX];

void debug_dummy()
{
    return;
}

void test()
{
    freopen("inflate.in","r",stdin);
    freopen("inflate.out","w",stdout);
    cin>>m>>n;
    for(int i=1;i<=n;i++)
        cin>>points[i]>>minutes[i];

    memset(dp,0,sizeof(dp));
    for(int i=1;i<=n;i++)
        for(int j=minutes[i];j<=m;j++)
        {
            dp[j]=max(dp[j],dp[j-minutes[i]]+points[i]);
            if (dp[j]>0)debug_dummy();
        }
    cout<<dp[m]<<endl;
}

int main ()
{
    test();
    return 0;
}

test data:

USACO Training
Grader Results
12 users online
61.10.110.236/1 CHN/3 DEU/2 IND/2 ROM/1 USA/2 YUG/1

USER: cn tom [qq104801]
TASK: inflate
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.003 secs, 3500 KB]
   Test 2: TEST OK [0.005 secs, 3500 KB]
   Test 3: TEST OK [0.008 secs, 3500 KB]
   Test 4: TEST OK [0.008 secs, 3500 KB]
   Test 5: TEST OK [0.005 secs, 3500 KB]
   Test 6: TEST OK [0.014 secs, 3500 KB]
   Test 7: TEST OK [0.051 secs, 3500 KB]
   Test 8: TEST OK [0.111 secs, 3500 KB]
   Test 9: TEST OK [0.200 secs, 3500 KB]
   Test 10: TEST OK [0.211 secs, 3500 KB]
   Test 11: TEST OK [0.003 secs, 3500 KB]
   Test 12: TEST OK [0.003 secs, 3500 KB]

All tests OK.

YOUR PROGRAM (‘inflate‘) WORKED FIRST TIME! That‘s fantastic -- and a rare thing. Please accept these special automated congratulations.

Here are the test data inputs:

------- test 1 ----
300    4
100 60
250 120
120 100
35 20
------- test 2 ----
10000 1
10000 1
------- test 3 ----
1000 20
40 11
333 336
2172 356
1958 537
9499 701
4443 275
6983 109
416 565
8155 166
7644 686
9596 828
4268 220
8396 953
8109 924
6048 452
5998 662
7201 550
4062 114
6713 122
4911 475
------- test 4 ----
4000 50
40 43
333 1341
2172 1423
1958 2148
9499 2802
4443 1100
6983 436
416 2258
8155 661
7644 2743
9596 3311
4268 878
8396 3811
8109 3693
6048 1805
5998 2647
7201 2197
4062 456
6713 486
4911 1900
3445 2257
2645 3475
4231 720
1637 2780
6455 2154
31 2494
2690 3149
3866 1845
5812 1508
2799 2414
8052 683
.............
时间: 2024-10-16 01:03:05

usaco-3.1-inflate-pass的相关文章

USACO inflate

完全背包,转化为0/1背包 dp[i, j] = max(dp[i-1, j], dp[i, j - minutes[i]] + points[i]) /* ID:kevin_s1 PROG:inflate LANG:C++ */ #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <vector> #include <map

【USACO 3.1】Score Inflation(完全背包)

完全背包. http://train.usaco.org/usacoprob2?a=3Srffjlf4QI&S=inflate /* TASK:inflate LANG:C++ URL: */ #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #define ll long long #define N 10005 int m,n,w[N],p[

Usaco Open09 Gold

Problem 1: Ski Lessons [Brian Jacokes, 2002] Farmer John wants to take Bessie skiing in Colorado. Sadly, Bessie is not really a very good skier. Bessie has learned that the ski resort is offering S (0 <= S <= 100) ski classes throughout the day. Les

COGS 696. [IOI1996][USACO 2.3] 最长前缀

★   输入文件:prefix.in   输出文件:prefix.out   简单对比时间限制:1 s   内存限制:128 MB 描述 USACO 2.3.1 IOI96 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的.生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣. 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+” 运算符)组成一个序列 S ,那么我们认为序列 S 可以分解为 P 中的元素.元素不一定要全部出现(如下例中B

USACO prefix TrieTree + DP

/* ID:kevin_s1 PROG:prefix LANG:C++ */ #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <vector> #include <map> #include <set> #include <algorithm> #include <cstdlib>

【USACO 1.3.4】牛式

[題目描述 ] 下面是一个乘法竖式,如果用我们给定的那n个数字来取代*,可以使式子成立的话,我们就叫这个式子牛式. * * * x * * ---------- * * * * * * ---------- * * * * 数字只能取代*,当然第一位不能为0,况且给定的数字里不包括0. 注意一下在美国的学校中教的"部分乘积",第一部分乘积是第二个数的个位和第一个数的积,第二部分乘积是第二个数的十位和第一个数的乘积. 写一个程序找出所有的牛式. [格式] INPUT FORMAT: (f

三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别

版权声明:本文为sang原创文章,转载请注明出处. 目录(?)[+] 关于inflate参数问题,我想很多人多多少少都了解一点,网上也有很多关于这方面介绍的文章,但是枯燥的理论或者翻译让很多小伙伴看完之后还是一脸懵逼,so,我今天想通过三个案例来让小伙伴彻底的搞清楚这个东东.本篇博客我们不讲源码,只看使用.源码的解读会在下一篇博文中带来. inflate方法从大范围来看,分两种,三个参数的构造方法和两个参数的构造方法.在这两类中又有细分,OK,那我们就把各种情况都来演示一遍. 1.三个参数的in

USACO Chapter 1 Section 1.1

USACO的题解和翻译已经很多了... 我只是把自己刷的代码保存一下. 1.PROB Your Ride Is Here 1 /* 2 ID:xiekeyi1 3 PROG:ride 4 LANG:C++ 5 */ 6 7 #include<bits/stdc++.h> 8 using namespace std ; 9 10 int main() 11 { 12 freopen("ride.in","r",stdin); 13 freopen(&quo

pass语句

Python pass是空语句,是为了保持程序结构的完整性.  pass 不做任何事情,一般用做占位语句. #!/usr/bin/python # -*- coding: UTF-8 -*- # 输出 Python 的每个字母 for letter in 'Python': if letter == 'h': pass print '这是 pass 块' print '当前字母 :', letter print "Good bye!" 执行结果: 当前字母 : P 当前字母 : y 当

LayoutInflater inflate LayoutParams 简介

LayoutInflater简介 LayoutInflater就是布局填充器,作用是将xml布局文件转化为View对象. 可以通过以下两种方式获取LayoutInflater,其实他们是完全一样的 LayoutInflater layoutInflater = LayoutInflater.from(context); LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER