第八届山东省acm省赛dp

原创 2018年04月17日 19:45:56

Problem Description

LYD loves codeforces since there are many Russian contests. In an contest lasting for T minutes there are n problems, and for theith problem you can get aiditi points, where ai indicates the initial points, di indicates the points decreased per minute (count from the beginning of the contest), and ti stands for the passed minutes when you solved the problem (count from the begining of the contest).
Now you know LYD can solve the ith problem in ci minutes. He can't perform as a multi-core processor, so he can think of only one problem at a moment. Can you help him get as many points as he can?

Input

The first line contains two integers n,T(0≤n≤2000,0≤T≤5000).
The second line contains n integers a1,a2,..,an(0<ai≤6000).
The third line contains n integers d1,d2,..,dn(0<di≤50).
The forth line contains n integers c1,c2,..,cn(0<ci≤400).

Output

Output an integer in a single line, indicating the maximum points LYD can get.

Example Input

3 10
100 200 250
5 6 7
2 4 10

Example Output

254
借鉴解析https://blog.csdn.net/qq_34374664/article/details/71747308

题意:LYD要打CF,一共n道题,t单位时间,每道题都有初始分数a,每单位时间减的分数d和做出这道题需要多长时间c,求最大的得分;

思路:这题不是跟以前的背包一样,这题后面选的每个东西都跟前面有关的。。前面的那种背包无关顺序,所以这种肯定要排个序,如果是无序的,这个最优过程中选的也不一定按照最优顺序的。。只是这种顺序的最优解,比如   11 1 1 ,11 1 10从前往后分别是11分, 1分钟做完,每秒掉1/10分,这也最优就是10分,第二个都成了0分,如果第一个在前面 就不一样了。。

然后按照怎样的顺序排序呢

假设有两个题, 第一个题 a.c a.d 第二个题 b.c b.d 两种顺序减得分分别是 a.c*a.d+(b.c+a.c)*b.d 〈 b.c*b.d+(b.c+a.c)*a.d 化简就是a.c/a.d < b.c/b.d

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,t;

struct node
{
    int t,d,c;
    double f;

}ff[2005];
bool cmp(node a,node b)
{
    return a.f<b.f;
}
int dp[5000];

int main()
{
    while(cin>>n>>t)
    {memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;++i)
        {
            scanf("%d",&ff[i].t);
        }
          for(int i=1;i<=n;++i)
        {
            scanf("%d",&ff[i].d);
        }
          for(int i=1;i<=n;++i)
        {
            scanf("%d",&ff[i].c);ff[i].f=ff[i].c*1.0/ff[i].d;
        }
        sort(ff+1,ff+n+1,cmp);
        int maxn=0;
        for(int i=1;i<=n;++i)
        {
            for(int v=t;v>=ff[i].c;--v)
            {
                dp[v]=max(dp[v],dp[v-ff[i].c]+ff[i].t-ff[i].d*v);
                maxn=max(dp[v],maxn);
            }
        }
        cout<<maxn<<endl;
    }

    return 0;
}


山东省第八届ACM省赛 K 题 CF (排序01背包)

Problem Description LYD loves codeforces since there are many Russian contests. In an conte...
  • qq_34374664
  • qq_34374664
  • 2017-05-12 17:03:40
  • 788

山东省第八届ACM省赛 J 题(company)

Problem Description There are n kinds of goods in the company, with each of them has a inventory ...
  • qq_36949416
  • qq_36949416
  • 2017-05-10 22:16:30
  • 532

2017年山东省第八届acm省赛总结

作为一个即将退役的大三队员,这届省赛对我来说就是最后一次比赛了,同时也是最重要的一次比赛。在去年的省赛中,我们队发挥的不理想,没拿到奖牌,因此今年就是最后的机会,我们队在这一年中也准备了很多,其中也有...
  • blue_skyrim
  • blue_skyrim
  • 2017-05-09 10:50:34
  • 616

2017 年山东省第八届ACM省赛总结

赛前 五一期间我们三个人配合着做了五六套题,基本都是先每人找水题做,确定自己能过就自己做,不行就多人讨论思路,基本只能过水题,难题一道不会,反正也就这样了。后来让LXG主要研究了下JAVA大数,我和...
  • qq_38569113
  • qq_38569113
  • 2017-05-09 19:34:45
  • 410

山东省第八届ACM省赛感想——来自菜鸟的感叹

比完省赛,突然觉得没什么事干了,也静不下心去刷题,那就找点别的事情做吧。 之前一直想写个博客,看到那些大佬们的博客,也挺羡慕的,但是之前确实没时间。而且也确实没什么东西可写的,现在正好也没什么事...
  • qq_36949416
  • qq_36949416
  • 2017-05-10 20:09:10
  • 514

2017-山东省第八届ACM省赛

从第一次的懵懂,第二次的遗憾,到今年的首银,这已经是第三次省赛之旅了_(:з」∠)_,第一次打星星,第二次错失银牌,这次感觉像是补回了上次银牌的样子?     时间回溯到几天前,第一天热身赛,恩,,...
  • qq978874169
  • qq978874169
  • 2017-05-13 22:43:25
  • 555

山东省第八届ACM省赛 I 题(Parity check)

Problem Description Fascinated with the computer games, Gabriel even forgets to study. Now she need...
  • qq_36949416
  • qq_36949416
  • 2017-05-10 21:38:16
  • 600

2017山东省ACM省赛总结

前言: 这次省赛是在青岛科技大学,5月7号-8号。我们山东建筑大学出了4个正式队参加(随着每届省赛的正式名额的增加,我们学校已经没必要出星花队了,因为我们实验室水平能够参加省赛ACMer光正式队就够了...
  • u013068502
  • u013068502
  • 2017-05-09 22:16:36
  • 2725

山东省第八届ACM省赛 F 题(quadratic equation)

Problem Description With given integers a,b,c, you are asked to judge whether the following state...
  • qq_36949416
  • qq_36949416
  • 2017-05-11 10:57:45
  • 527

山东省第八届ACM省赛 G 题(sum of power)

Problem Description Calculate  mod (1000000000+7) for given n,m. Input Input contains two ...
  • qq_36949416
  • qq_36949416
  • 2017-05-11 10:15:14
  • 644
收藏助手
不良信息举报
您举报文章:第八届山东省acm省赛dp
举报原因:
原因补充:

(最多只允许输入30个字)