bzoj3886[Usaco2015 Jan]Moovie Mooving 状压DP
来源:互联网 发布:焦作知行纳米 编辑:程序博客网 时间:2024/06/05 21:58
其实是很简单的状压..但是我太菜了没有想到。
一开始的DP方程就列错了,直接列了个求最终答案的。。
设f[i]表示状态为i时能看到的最远时间,转移显然,二分一下起始点就好了= =
#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=1e5+5;const int inf=2147483646;struct node{ int sta[1005],p; int len;}a[25];int f[1<<21],ans;int n,m;inline int find(int x,int id){ int l=-1,r=a[id].p-1,mid,ans; while (l<r) { int mid=(l+r+1)>>1; if (a[id].sta[mid]<=x)l=mid; else r=mid-1; } return l;}int main(){ scanf("%d%d",&n,&m); fo(i,0,n-1) { scanf("%d%d",&a[i].len,&a[i].p); fo(j,0,a[i].p-1) { scanf("%d",&a[i].sta[j]); } } ans=inf; int mx=(1<<n); memset(f,-1,sizeof(f)); f[0]=0; fo(i,0,mx-1) { if (f[i]==-1)continue; if (f[i]>=m) { int j=0,k=0; for(j=0,k=i;k;k-=(k&(-k)))j++; ans=min(ans,j); continue; } fo(j,0,n-1) { if (i&(1<<j))continue; int k=find(f[i],j); if (k==-1)continue; f[i|(1<<j)]=max(f[i|(1<<j)],a[j].sta[k]+a[j].len); } } if (ans==inf)printf("-1"); else printf("%d\n",ans);}
阅读全文
0 0
- bzoj3886[Usaco2015 Jan]Moovie Mooving 状压DP
- 【BZOJ3886】【Usaco2015 Jan】Moovie Mooving 状态压缩 动态规划
- bzoj 3886: [Usaco2015 Jan]Moovie Mooving 状压dp
- 【Usaco2015 JAN】Moovie Mooving 题解
- 【Usaco2015 JAN】Moovie Mooving【DP】(发现自己有点不会写二分啊)
- 【BZOJ3890】【Usaco2015 Jan】Meeting Time 拓扑图简单DP
- BZOJ 3890 Usaco2015 Jan Meeting Time 拓扑图DP
- BZOJ3890 [Usaco2015 Jan]Meeting Time K短路 Astar || 拓扑DP
- bzoj3888【Usaco2015 Jan】Stampede
- 【Usaco2015 JAN】Cow Rectangles
- bzoj3889【Usaco2015 Jan】Cow Routing
- bzoj3890【Usaco2015 Jan】Meeting Time
- BZOJ 3888: [Usaco2015 Jan]Stampede
- [BZOJ3889]USACO2015 Jan-Cow|最短路
- bzoj3890 [Usaco2015 Jan]Meeting Time [spfa + A*]
- 【bzoj3889】[Usaco2015 Jan]Cow Routing 最短路
- bzoj 3887: [Usaco2015 Jan]Grass Cownoisseur
- BZOJ 3887 [Usaco2015 Jan]Grass Cownoisseur
- Digit Counting (P57)/ UVA
- hive编程笔记---多表关联使用感想
- vue中watch的使用时机,如何在初始化后再使用?
- java 多态提高篇
- ZOJ3827-水题-I
- bzoj3886[Usaco2015 Jan]Moovie Mooving 状压DP
- HTTPShouldUsePipelining 解释
- c3p0-0.9.1.2.jar与c3p0-0.9.5.2.jar
- centos 6.8 安装nginx
- 2 3 5 7的倍数 【容斥】
- 使用h5+API实现安卓端连按两次返回键退出app
- 什么是机器学习以及什么时候适合使用机器学习?
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- Ubuntu系统下搭建FTP服务器图解