[Offer收割]编程练习赛1 register

Ended

Participants:955

Verdict:Wrong Answer
Score:0 / 100
Submitted:2016-03-06 16:59:55

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
const int MAXN=100050;
long long ans=0;
int n,m,k,t,a[105],b[105];
int bo=1;
int dp[105][10550];
int ma=0;
int DP(){
    memset(dp,0,sizeof(dp));
    for(int i=1;i<=m;i++){
        if(b[i]==0)
            continue;
        for(int j=0;j<=k+ma;j++){
            if(j-b[i]>=0&&dp[i-1][j]!=0){
                dp[i][j]=min(dp[i][j-b[i]]+a[i],dp[i-1][j]);
            }
            else if(j-b[i]>=0&&dp[i-1][j]==0)
                dp[i][j]=dp[i][j-b[i]]+a[i];
            else
                dp[i][j]=dp[i-1][j];
        }
    }
    int A=0x7f;
    for(int j=1;j<=m;j++){
        if(dp[j][k]!=0)
          A=min(dp[j][k],A);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX