hdu4352(状态压缩+LIS+数位dp)
来源:互联网 发布:java数组最大值最小值 编辑:程序博客网 时间:2024/06/08 07:52
题解:然后求l-r有多个个位数能组成最大上升序列有k
题解:一维表示位数,二维表示0-9上升序列有哪几个,三位表示前缀是不是0四位表示上升长度
然后转移方程如下:
当位数到达第pos为的时候,如果dp[pos][have][pre][k]如果不是这个上限的话就可以根据记忆化搜索记录一下
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;typedef long long int ll;ll dp[21][1<<10][2][11];int bit[30];int a[30];int getnext(int n,int k,int pre){ if(!pre) return 1<<k; int cnt = 0; for(int i = 0; i < 10; i++) if(n&(1<<i)) a[cnt++] = i; int p = lower_bound(a,a+cnt,k)-a; a[p] = k; cnt += p==cnt; int have = 0; for(int i = 0; i < cnt; i++) have += (1<<a[i]); return have;}int getlen(int n){ int len = 0; while(n){ if(n&1) len++; n /= 2; } return len;}ll dfs(int pos,int have,int pre,int k,bool lim){ if(pos<=0) return getlen(have)==k; if(!lim&&dp[pos][have][pre][k]!=-1) return dp[pos][have][pre][k]; int num = lim?bit[pos]:9; ll ans = 0; for(int i = 0; i <= num; i++) ans += dfs(pos-1,getnext(have,i,pre),pre||i!=0,k,lim&&i==num); //cout<<ans<<endl; if(!lim) dp[pos][have][pre][k] = ans; return ans;}ll calc(ll n,int k){ int len = 0; while(n){ bit[++len] = n%10; n/=10; }// cout //cout<<len<<endl; return dfs(len,0,0,k,1);}int main(){ int t; memset(dp,-1,sizeof(dp)); scanf("%d",&t); ll l,r; int k; for(int casei = 1; casei <= t; casei++){ scanf("%I64d%I64d%d",&l,&r,&k); printf("Case #%d: %I64d\n",casei,calc(r,k)-calc(l-1,k)); } return 0;}
阅读全文
0 0
- hdu4352(状态压缩+LIS+数位dp)
- hdu4352 XHXJ's LIS(数位DP + LIS + 状态压缩)
- hdu4352---XHXJ's LIS(状态压缩数位dp)
- hdu4352 XHXJ's LIS 数位DP+状态压缩
- HDU4352 XHXJ's LIS 数位DP+状态压缩
- hdu4352(数位dp+状态压缩)
- HDU4352 lis+状压+数位dp
- hdu4352 XHXJ's LIS(数位dp+状压)
- 【HDU4352/ZCMU1781】XHXJ's LIS(数位DP)
- hdu4352(数位DP)
- XHXJ's LIS HDU4352(数位DP)
- hdu4352 XHXJ's LIS 数位DP
- hdu4352 XHXJ's LIS (数位dp)
- hdu4352 XHXJ's LIS(数位Dp)
- 【HDU4352】XHXJ's LIS 数位DP
- hdu_4352_XHXJ's LIS(数位DP+状态压缩)
- 数位dp+LIS+状态压缩-hdu-4352-XHXJ's LIS
- HDU 4352 XHXJ's LIS(数位DP+LIS+状态压缩)
- 终生学习者,永远劳苦命!
- 适配器模式
- poj1006--Biorhythms (中国剩余定理)
- 获取元素位置信息和所占空间大小(via:js&jquery)
- temp
- hdu4352(状态压缩+LIS+数位dp)
- 如何定义ArcGIS地理数据库方案
- 面试题:|| 和 &&
- 最大子段和系列题目
- 深度遍历(DFS)
- Spring与ActiveMQ整合及用JmsTemplate发送消息
- lugu P1190 接水问题
- poj3667 Hotel(线段树)
- 集成Android免费语音合成功能(在线、离线、离在线融合),有这一篇文章就够了(离线)