动态规划(Memory and Scores,cf 712D)
2016-09-12 11:38
513 查看
http://blog.csdn.net/jasonvictoryan/article/details/52502382
数组开的不够大也是会导致超时的,
宏定义max只比调用max快一点。快10%不到。
滚动数组以及用O(1)更新的方法挺不错,学到了。
#include<bits/stdc++.h>
//#define Max(a,b) (((a)>(b))?a:b)
//#define Min(a,b) (((a)<(b))?a:b)
using namespace std;
const int mod=1000000007;
const int os=201000;
const int MAX=(os<<1);
int dp[2][MAX];
int main()
{
int a,b,k,t;
scanf("%d %d %d %d",&a,&b,&k,&t);
int now=0;
dp[now][a-b+os]=1;
dp[now][a-b+os+1]=mod-1;
for(int i=1;i<=2*t;i++)
{
int ad=0;
for(int j=0;j<MAX;j++)
{
ad=(ad+dp[now][j])%mod;
dp[now][j]=0;
int posl=max(j-k,0);
int posr=min(j+k+1,MAX-1);
dp[now^1][posl]=(dp[now^1][posl]+ad)%mod;
dp[now^1][posr]=(dp[now^1][posr]-ad+mod)%mod;
}
now^=1;
}
int ans=0;
int ad=0;
for(int i=0;i<MAX;i++)
{
ad=(ad+dp[now][i])%mod;
if(i>os)
ans=(ans+ad)%mod;
}
printf("%d\n",ans);
return 0;
}
数组开的不够大也是会导致超时的,
宏定义max只比调用max快一点。快10%不到。
滚动数组以及用O(1)更新的方法挺不错,学到了。
#include<bits/stdc++.h>
//#define Max(a,b) (((a)>(b))?a:b)
//#define Min(a,b) (((a)<(b))?a:b)
using namespace std;
const int mod=1000000007;
const int os=201000;
const int MAX=(os<<1);
int dp[2][MAX];
int main()
{
int a,b,k,t;
scanf("%d %d %d %d",&a,&b,&k,&t);
int now=0;
dp[now][a-b+os]=1;
dp[now][a-b+os+1]=mod-1;
for(int i=1;i<=2*t;i++)
{
int ad=0;
for(int j=0;j<MAX;j++)
{
ad=(ad+dp[now][j])%mod;
dp[now][j]=0;
int posl=max(j-k,0);
int posr=min(j+k+1,MAX-1);
dp[now^1][posl]=(dp[now^1][posl]+ad)%mod;
dp[now^1][posr]=(dp[now^1][posr]-ad+mod)%mod;
}
now^=1;
}
int ans=0;
int ad=0;
for(int i=0;i<MAX;i++)
{
ad=(ad+dp[now][i])%mod;
if(i>os)
ans=(ans+ad)%mod;
}
printf("%d\n",ans);
return 0;
}
相关文章推荐
- [CF 712D] Memory and Scores
- Codeforces Round #370 (Div. 2) D. Memory and Scores 动态规划
- Codeforces Round #370 (Div. 2) D. Memory and Scores 动态规划
- Codeforces 712D: Memory and Scores
- 【26.87%】【codeforces 712D】Memory and Scores
- 【DP or 生成函数】[CodeForces - 712D]Memory and Scores
- Codeforces Round #370 (Div. 2) D. Memory and Scores
- Codeforces Round 370 (Div 2) D.Memory and Scores 【前缀和 DP】双人随机数值增减K A比B多的方案数
- 【Codeforces Round 370 (Div 2) D】【前缀和打标记】Memory and Scores 双人随机数值增减K A比B多的方案数
- Codeforces 712 D. Memory and Scores (DP+滚动数组+前缀和优化)
- Codeforces Round #370 (Div. 2) D. Memory and Scores —— DP
- Memory and Scores
- Codeforces Round #370 (Div. 2) D. Memory and Scores DP
- Codeforces Round #370 (Div. 2) D. Memory and Scores(DP)
- CF370 D Memory and Scores
- [CF712D]Memory and Scores
- CodeForces 712 D.Memory and Scores(dp)
- 【CF712D】Memory and Scores(概率,DP,前缀和)
- CF370 D Memory and Scores
- [CF 712C] Memory and De-Evolution