UVALive 4764 dp

时间:2023-03-09 18:43:10
UVALive 4764 dp

DES: 这是一个新的游戏。给你一套牌、编号从1到100000.正常来说。你手中的牌和这次翻的牌是一样的,就会加一分。但是。如果是999的话。加三分。所以问你最大的分是多少。

貌似是简单的DP吧。(DP菜鸟...再简单我也不会...T_T...)于是...我看懂了...但是不可言传....~~~~(>_<)~~~~好难的好吗...

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
#define N 100000+10 int vis[N];
int num[N];
int dp[N]; int main()
{
int n;
while(cin >> n)
{
if (n == ) break;
memset(vis, , sizeof(vis));
memset(num, , sizeof(num));
memset(dp, , sizeof(dp)); for (int i=; i<n; ++i)
{
cin >> num[i];
}
int pre = num[];
int nnext;
vis[pre] = ; int ans = ; for (int i=; i<n; ++i)
{
nnext = num[i];
if (!vis[nnext])
{
vis[nnext] = ;
dp[nnext] = dp[pre];
} else
{
if (nnext == )
{
dp[nnext] = max(dp[pre], dp[nnext]+);
}
else
{
dp[nnext] = max(dp[pre], dp[nnext]+);
}
}
pre = nnext;
if (ans < dp[nnext])
ans = dp[nnext];
}
cout << ans << endl;
}
return ;
}

LOoK