간단한 dp

이 문제는 나의 이전 문장과 기본적으로 똑같다. 단지 돈의 액수를 1로 바꾸었을 뿐이다.나의 사고방식은 바로 뒤에서 앞으로 dp이다. 프로그램pra[j]가 있는데 이 시간에 i가 시작하면 dp[i]와 dp[dp[pra[j]를 비교한다.end]+1]의 크기를 처음 냈을 때 ac가 없었고 그 후에 dp값을 모두 출력한 후에 이 시간에 시작되지 않은 텔레비전 프로그램이 있을 때 시간점은 바로 아래로 줄어들었다. dp[i]=dp[i+1];
(PS:이 문제는 분유가 좀 매달린다고 들었는데 하루시간>24시간이니까 dp수조를 크게 틀어야 돼요. 불쌍한 ACMer들은 급사하지 마세요!
#include
#include
#include
#include
using namespace std;

const int maxn=105;
const int Maxn=1000;

int dp[Maxn];

struct prag
{
    int start,end;
};

prag pra[maxn];

bool compare(prag a,prag b)
{
    if(a.start==b.start)
    {
        return a.end>b.end;
    }
    return a.start0;i--)
        {
            if(pra[top].start-1&&pra[top].start==i)
            {
                top--;
                continue;
            }
            for(;j>top;j--)
            {
                dp[i]=max(max(dp[i],dp[i+1]),dp[pra[j].end]+1);
            }
        }
        //for(int i=lastTime;i>0;i--)
        //printf("dp[%d]:%d
",i,dp[i]); printf("%d
",dp[1]); } return 0; }

좋은 웹페이지 즐겨찾기