HDU 4511 小明系列故事——女友的考验
来源:互联网 发布:共享表格数据能删除吗 编辑:程序博客网 时间:2024/04/29 14:05
其实就是求1到n的最短路,且不包含特定子串,可以利用ac自动机构建不可到达的状态我们可以设dp【i】【j】来表示到达i节点时候位于自动机j节点的花费
ACcode:
#include <bits/stdc++.h>const double inf=1e20;using namespace std;typedef pair<double,double> D;D data[55];double dp[55][505];int in[15],N,m;struct Aho{ struct state{ int next[55]; int fail,cnt; }s[505]; int size; queue<int>q; void init(){ while(q.size())q.pop(); for(int i=0;i<505;++i){ memset(s[i].next,-1,sizeof(s[i].next)); s[i].cnt=s[i].fail=0; } size=1; } void insert(int n){ int now=0; for(int i=0;i<n;++i){ if(s[now].next[in[i]]==-1) s[now].next[in[i]]=size++; now=s[now].next[in[i]]; } s[now].cnt=1; } double dis(D& a,D& b){ return sqrt((a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second)); } void build(){ s[0].fail=0; for(int i=0;i<55;++i) if(s[0].next[i]==-1) s[0].next[i]=0; else { s[s[0].next[i]].fail=0; q.push(s[0].next[i]); } while(q.size()){ int u=q.front(); q.pop(); for(int i=0;i<55;++i) if(s[u].next[i]==-1) s[u].next[i]=s[s[u].fail].next[i]; else { s[s[u].next[i]].fail=s[s[u].fail].next[i]; s[u].cnt|=s[s[u].fail].cnt; q.push(s[u].next[i]); } } fill(&dp[0][0],&dp[54][54-1],inf);; dp[0][s[0].next[0]]=0; for(int i=0;i<N-1;++i) for(int j=0;j<size;++j){ if(dp[i][j]==inf)continue; for(int k=i+1;k<N;++k){ if(s[s[j].next[k]].cnt)continue; dp[k][s[j].next[k]]=min(dp[k][s[j].next[k]],dp[i][j]+dis(data[i],data[k])); } } double ans=inf; for(int i=0;i<size;++i)ans=min(ans,dp[N-1][i]); if(ans==inf)printf("Can not be reached!\n"); else printf("%.2f\n",ans); }}aho;int main(){ while(cin>>N>>m){ if(N==0&&m==0)break; aho.init(); for(int i=0;i<N;++i)scanf("%lf%lf",&data[i].first,&data[i].second); for(int i=0;i<m;++i){ int k; scanf("%d",&k); for(int j=0;j<k;++j){ scanf("%d",&in[j]); in[j]--; } aho.insert(k); } aho.build(); } return 0;}/*6 21 32 45 74 32 87 831 3 425 6*/
0 0
- HDU 4511 小明系列故事——女友的考验(AC自动机 + DP)
- 【HDU】4511 小明系列故事——女友的考验 (AC自动机+DP)
- HDU 4511 小明系列故事——女友的考验(自动机+DP)
- HDU ACM 4511 小明系列故事——女友的考验->AC自动机+DP
- hdu - 4511 小明系列故事——女友的考验(AC自动机+DP)
- HDU 4511 小明系列故事——女友的考验 (AC自动机+DP)
- HDU 4511 小明系列故事——女友的考验
- HDU 4511 小明系列故事——女友的考验 (AC自动机 + dp)
- hdu 4511 小明系列故事——女友的考验
- 小明系列故事——女友的考验
- HDU - 4511 小明系列故事――女友的考验(AC自动机+DP)
- AC自动机 + 二维最短路 HDU 4511小明系列故事――女友的考验
- hdu4511---小明系列故事——女友的考验(AC自动机+dp)
- hdu4511 小明系列故事——女友的考验(AC自动机+dp)
- HDU4511-小明系列故事――女友的考验
- 女友的考验
- HDU 4506 小明系列故事——师兄帮帮忙
- hdu 4501 小明系列故事——买年货
- JavaScript
- 【数据结构】算法6.16 N皇后问题
- Qt Creator 与 VS+Qt 一些值得注意的小差别
- linux 摄像头
- Ajax
- HDU 4511 小明系列故事——女友的考验
- Hadoop Streaming 常见错误(不断更新ing)
- hrbust 1231/hdu 3118 Arbiter【二进制枚举】好题
- HDU 1350 & HDU 1960 & POJ 2060 Taxi Cab Scheme【二分图之最小路径覆盖,经典】
- Jquery
- Eclipse 插件开发
- 进程状态
- 八大排序算法
- CSS3快速上手之14:过渡属性(transition)