csu 1640 机智的刷题方式(完全背包)

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;

const int N=10000+10;
const int inf=0x7FFFFFFF;
int dp[N];

int main()
{
    int a,b,c,_,i,j,h,x,ans1,ans2;
    scanf("%d",&_);
    while(_--)
    {
        scanf("%d%d%d",&a,&b,&c);
        scanf("%d%d",&h,&x);
        for(i=0; i<N; i++) dp[i]=inf;
        dp[0]=0;
        for(i=1; i<=h+8; i++)
        {
            if(dp[i-1]+a<dp[i]) dp[i]=dp[i-1]+a;
        }
        for(i=2; i<=h+8; i++)
        {
            if(dp[i-2]+b<dp[i]) dp[i]=dp[i-2]+b;
        }
        for(i=5; i<=h+8; i++)
        {
            if(dp[i-5]+c<dp[i]) dp[i]=dp[i-5]+c;
        }

        ans1=inf;
        for(i=h; i<=h+8; i++)
        {
            ans1=min(ans1,dp[i]);
        }

        memset(dp,0,sizeof(dp));
        for(i=a; i<=x; i++)
        {
            if(dp[i]<dp[i-a]+1) dp[i]=dp[i-a]+1;
        }
        for(i=b; i<=x; i++)
        {
            if(dp[i]<dp[i-b]+2) dp[i]=dp[i-b]+2;
        }
        for(i=c; i<=x; i++)
        {
            if(dp[i]<dp[i-c]+5) dp[i]=dp[i-c]+5;
        }
        printf("%d\n%d\n",ans1,dp[x]);

    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-10 13:41:05

csu 1640 机智的刷题方式(完全背包)的相关文章

CSU 1640 机智的刷题方式

完全背包 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int maxn = 10000 + 10; int dp[maxn]; const int INF = 0x7FFFFFFF; int main() { int A, B, C, H, X, i, T; scanf("%d", &am

一些算法刷题的网站

1. leetcode http://leetcode.com/ 2. careerup http://www.careercup.com/ http://hawstein.com/posts/ctci-solutions-contents.html 3. glassdoor http://www.glassdoor.com/index.htm 4. topcoder http://www.topcoder.com/ 5. zoj http://acm.zju.edu.cn/onlinejudg

BZOJ 刷题记录 PART 4

[BZOJ1143]CTSC的题目...先用floyed传递闭包,然后直接上匈牙利算法. [BZOJ1452]从未写过的二维树状数组.好像很简单.. struct two_bit { int f[305][305]; inline void add(int x,int z,int A) { for (;x<=n;x+=L(x)) for (int y=z;y<=m;y+=L(y)) f[x][y]+=A; } inline int ask(int x,int z) { int ans=0; f

COGS2642 / Bzoj4590 [Shoi2015]自动刷题机

Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 906  Solved: 321 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序,每秒,自动刷题机的代码生成模 块会有两种可能的结果: A.写了x行代码. B.心情不好,删掉了之前写的y行代码.(如果y大于当前代码长度则相当于全部删除.) 对于每

比较好的刷题网站推荐

1.Leetcode鼎鼎大名的Leetcode,据不完全统计在上面被刷过的题可以围绕地球三圈.(没说赤道哈,就是这么严谨.)总之,很多国内外的码农在上面刷题.难度从easy到hard都有,而且覆盖面极广.现在还增加了数据库和shell,相匹配的论坛也可以多看看.很锻炼和国外码农沟通的能力,对于以后去混Github也有好处. 特点:各种语言支持很广泛,题型覆盖很广,测试数据集较弱. 2.Codility同样一家著名的国外刷题网站.和Leetcode不同,它是专门帮各大软件公司笔试用的,只是副业提供

[转帖] 一些算法刷题的网站

1. leetcode http://leetcode.com/ 2. careerup http://www.careercup.com/ http://hawstein.com/posts/ctci-solutions-contents.html 3. glassdoor http://www.glassdoor.com/index.htm 4. topcoder http://www.topcoder.com/ 5. zoj http://acm.zju.edu.cn/onlinejudg

BZOJ 4590: [Shoi2015]自动刷题机 二分答案

4590: [Shoi2015]自动刷题机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1056  Solved: 380[Submit][Status][Discuss] Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序,每秒,自动刷题机的代码生成模 块会有两种可能的结果: A.写了x行代

国内有哪些好的刷题网站?

http://www.zhihu.com/question/25574458 Luau Lawrence,Data Mining 弱鸡 / [email protected] 温梦强.石一帆.知乎用户 等人赞同 - Welcome To PKU JudgeOnline 北京大学的Online Judge.POJ上面的题目有点老了,但好处是做的人多,经典算法题多,解题报告也多,适合上手.- ZOJ :: Home 浙江大学的Online Judge.ZOJ用的不多,但为数不多的几次体验好像都还可以

BZOJ4590 自动刷题机

SHOI2015 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序,每秒,自动刷题机的代码生成模 块会有两种可能的结果: A.写了x行代码. B.心情不好,删掉了之前写的y行代码.(如果y大于当前代码长度则相当于全部删除.) 对于每个OJ所有题目,存在某个固定的长度n>0.一旦自动刷题机在某秒结束时积累了大于等于n行的代码,它就会 自动提交并