hdu(HDU5945)单调队列优化DP
2017-09-27 16:27
323 查看
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 1000000+10; int dp[maxn]; int q[maxn]; int main() { int cases,x,k,t; scanf("%d",&cases); while(cases--) { memset(dp,0x3f3f3f3f,sizeof(dp)); scanf("%d%d%d",&x,&k,&t); if(k==0) { if((x-1)%t) printf("%d\n",(x-1)/t+1); else printf("%d\n",(x-1)/t); continue; } if(t==0) { int ans = 0; while(x>1) x/=k,ans++; printf("%d\n",ans); continue; } dp[1] = 0; int l = 1,r = 1; q[1] = 1; for(int i=2;i<=x;i++) { while(l<=r&&q[l]+t<i) l++; if(l<=r) dp[i] = min(dp[i],1+dp[q[l]]); if(i%k==0) dp[i] = min(dp[i],1+dp[i/k]); while(l<=r&&dp[q[r]]>=dp[i]) r--; q[++r] = i; } printf("%d\n",dp[x]); } return 0; }
相关文章推荐
- HDU 4374 单调队列优化 DP
- hdu 4374 我的第一道单调队列优化的DP
- hdu 3401 单调队列优化DP
- 【HDU 3401 Trade】 单调队列优化dp
- hdu 3401 Trade(DP+单调队列优化)
- hdu 4362 Dragon Ball 单调队列优化 dp
- HDU - 3401 单调队列优化DP
- HDU 5945 Fxx and game (DP+单调队列优化)
- hdu 4374 单调队列优化dp
- HDU 4374 One hundred layer DP的单调队列优化
- hdu 5495 Fxx and game(dp+单调队列优化)
- HDU 3401 Trade (单调队列优化DP)
- hdu 3401 Trade 单调队列优化dp
- hdu 3530 Subsequence(DP+单调队列优化)
- hdu3530——Subsequence(单调队列优化DP)
- HDU 3401 Trade(单调队列优化DP)【模板】
- hdu 1171 Dividing 单调队列优化dp
- hdu 3401 单调队列优化DP
- HDU 4374 One hundred layer [单调队列优化DP]
- HDU 1003 Max Sum + 单调队列优化dp解法