CF 79D. Password
2012-10-02 20:32
134 查看
题目链接:D. Password
我是在这篇博客 看到的,这道题目一开始拿到一点想法都没有,感觉就根本不可以搞……
看了解题报告才明白,Orz
具体看上面的解题报告吧! 感觉上面解题报告的代码写的不好,容易让人看不明白
经过瘦身的代码如下:
我是在这篇博客 看到的,这道题目一开始拿到一点想法都没有,感觉就根本不可以搞……
看了解题报告才明白,Orz
具体看上面的解题报告吧! 感觉上面解题报告的代码写的不好,容易让人看不明白
经过瘦身的代码如下:
#include<cstdio> #include<cstring> #include<set> #include<map> #include<iostream> #include<queue> #include<algorithm> using namespace std; const int maxn=10010; const int inf=0x3fffffff; int d[maxn],x[20],a[100],dp[1<<20],w[20][20]; bool vis[maxn]; int main() { int n,k,l; while(scanf("%d%d%d",&n,&k,&l)==3) { memset(vis,0,sizeof(vis)); for(int i=0;i<k;i++) scanf("%d",&x[i]),vis[x[i]]=1; for(int i=0;i<l;i++) scanf("%d",&a[i]); sort(a,a+l); l=unique(a,a+l)-a; k=0; for(int i=0;i<=n;i++) if(vis[i]!=vis[i+1]) x[k++]=i; /*for(int i=0;i<k;i++) cout<<x[i]<<" "; cout<<endl;*/ for(int i=0;i<k;i++) { priority_queue<pair<int,int> > q; fill(d,d+n+1,inf); d[x[i]]=0; for(q.push(make_pair(0,x[i]));!q.empty();) { int u=q.top().second; int dis=-q.top().first; q.pop(); if(d[u]!=dis) continue; for(int j=0;j<l;j++) { if(u-a[j]>=0&&d[u-a[j]]>dis+1) d[u-a[j]]=dis+1,q.push(make_pair(-dis-1,u-a[j])); if(u+a[j]<=n&&d[u+a[j]]>dis+1) d[u+a[j]]=dis+1,q.push(make_pair(-dis-1,u+a[j])); } } for(int j=0;j<k;j++) w[i][j]=d[x[j]]; } fill(dp,dp+(1<<k),inf); dp[0]=0; for (int mask = 0 ; mask < (1<<k); mask++) { int u; for(u=0;u<k;u++) if((mask&(1<<u))==0) break; if (u >= k ) continue; for(int v = u+1; v < k; v++ ) if ( (mask&(1<<v)) == 0) { int _mask = mask ^ (1<<u) ^ (1<<v); dp[_mask] = min(dp[_mask], dp[mask] + w[u][v]); } } printf("%d\n", dp[(1<<k)-1] == inf ? -1 : dp[(1<<k)-1]); } return 0; }
相关文章推荐
- cf 126B-Password(KMP)
- CF 288DIV2 D - Tanya and Password (弗罗莱算法求欧拉通路)
- CF D. Tanya and Password
- CF 508D(Tanya and Password-欧拉路径,弗罗莱算法)
- 【CF 508D】 Tanya and Password (判欧拉路+输出欧拉路径)
- [KMP][字符串Hash] #93 div1 cf 126B Password
- android 用代码设置EditText的passWord属性
- 被拒--悲剧之ORA-01017: invalid username/password; logon denied 错误
- Change Default User and Password for Cognos Content Database
- 正式生产环境下hadoop集群的DNS+NFS+ssh免password登陆配置
- ORA-28001: the password has expired解决方法
- WPF的TextBox以及PasswordBox显示水印文字
- CF:41A. Translation
- 权限问题:[Access denied for user 'root'@'localhost' (using password: YES)]
- CF 13E Holes(分块处理)
- Github no password log in
- CF 304A(Pythagorean Theorem II-n内勾股数)
- CF 427D 后缀数组
- CF_2A_Winner
- Access denied for user: 'root@localhost' (Using password: YES)