HDU 1176 - 免费馅饼
2011-11-10 12:19
267 查看
知识点:1、数塔;
2、整数(int 型)输入外挂(可大大缩短数据输入的时间,对于数据庞大的题目效果显著)。
#include <cstdio>
#include <memory.h>
//整数输入外挂,减少时间
bool scan_d(int &n)
{
char i;
bool I=0;
i=getchar();
if(i==EOF) return 0;
while(i!='-'&&(i<'0'||i>'9'))
i=getchar();
if(i=='-') I=1,n=0;
else n=i-'0';
while(i=getchar(),i>='0'&&i<='9')
n=n*10+i-'0';
if(I) n=-n;
return 1;
}
//以时间和位置建立二维dp数组,第一维表示时间,第二维表示位置
int dp[100001][11];
int main()
{
int n;
while(scan_d(n),n)
{
memset(dp,0,sizeof(dp));
int x,t,max_t=0;
while(n--)
{
scan_d(x); //整数输入外挂函数调用
scan_d(t);
dp[t][x]++; //用输入数据初始化dp数组
if(max_t<t) max_t=t;
}
//对数塔dp进行处理
for(int i=max_t-1;i>=0;i--)
for(int j=0;j<=10;j++)
{
//状态转移方程:dp[i][j]+=max(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1])
int tmp=dp[i+1][j];
//考虑 j==0 和 j==10 时的特殊情况
if(j&&tmp<dp[i+1][j-1]) tmp=dp[i+1][j-1];
if(j<10&&tmp<dp[i+1][j+1]) tmp=dp[i+1][j+1];
dp[i][j]+=tmp;
}
printf("%d\n",dp[0][5]);
}
return 0;
}
2、整数(int 型)输入外挂(可大大缩短数据输入的时间,对于数据庞大的题目效果显著)。
#include <cstdio>
#include <memory.h>
//整数输入外挂,减少时间
bool scan_d(int &n)
{
char i;
bool I=0;
i=getchar();
if(i==EOF) return 0;
while(i!='-'&&(i<'0'||i>'9'))
i=getchar();
if(i=='-') I=1,n=0;
else n=i-'0';
while(i=getchar(),i>='0'&&i<='9')
n=n*10+i-'0';
if(I) n=-n;
return 1;
}
//以时间和位置建立二维dp数组,第一维表示时间,第二维表示位置
int dp[100001][11];
int main()
{
int n;
while(scan_d(n),n)
{
memset(dp,0,sizeof(dp));
int x,t,max_t=0;
while(n--)
{
scan_d(x); //整数输入外挂函数调用
scan_d(t);
dp[t][x]++; //用输入数据初始化dp数组
if(max_t<t) max_t=t;
}
//对数塔dp进行处理
for(int i=max_t-1;i>=0;i--)
for(int j=0;j<=10;j++)
{
//状态转移方程:dp[i][j]+=max(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1])
int tmp=dp[i+1][j];
//考虑 j==0 和 j==10 时的特殊情况
if(j&&tmp<dp[i+1][j-1]) tmp=dp[i+1][j-1];
if(j<10&&tmp<dp[i+1][j+1]) tmp=dp[i+1][j+1];
dp[i][j]+=tmp;
}
printf("%d\n",dp[0][5]);
}
return 0;
}
相关文章推荐
- HDU - 1176 免费馅饼 (简单DP)
- hdu 1176 免费馅饼(DP)
- 免费馅饼 hdu 1176
- HDU 1176 免费馅饼
- HDU 1176 免费馅饼 (动态规划)
- 文章标题 HDU 1176:免费馅饼 (DP)
- hdu 1176免费馅饼
- hdu 1176 免费馅饼 dp
- Hdu 1176 免费馅饼 (DP)
- HDU 1176 免费馅饼
- HDU 1176 免费馅饼 DP
- hdu 1176 免费馅饼 【dp】
- HDU 1176 免费馅饼
- [ACM_动态规划] hdu 1176 免费馅饼 [变形数塔问题]
- hdu1176 免费馅饼 ----数塔变形
- HDU - 1176 免费馅饼(DP数塔)
- HDU 1176(NYOJ 613) 免费馅饼(dp)
- HDU 1176 免费馅饼
- hdu 1176免费馅饼 //dp
- [HDU - 1176] 免费馅饼(动态规划)