[2017纪中11-1]荒诞 欧拉序+状压DP
2017-11-02 15:33
357 查看
题面
题解
太巧妙了。。。图上还能DP。。。
代码:
题解
太巧妙了。。。图上还能DP。。。
代码:
#include<iostream> #include<cstdio> #include<cstring> #define chkmin(a,b) a=min(a,b) using namespace std; const int maxn=100010; int n,m,c[maxn],d[maxn],f[12][60000],ans=0,mi[12]; struct edge { int t; edge *next; }*con[maxn]; int T(int s,int w) { return s/mi[w]%3; } int mx(int a,int b,int d) { for(int i=0;i<=d;i++) { int ta=T(a,i),tb=T(b,i); if(tb>ta) a+=(tb-ta)*mi[i]; } return a; } bool lk(int a,int b,int d) { for(int i=0;i<=d;i++) if(T(a,i)==1&&T(b,i)==2) return 1; return 0; } void ins(int x,int y) { edge *p=new edge; p->t=y; p->next=con[x]; con[x]=p; } void dfs(int v) { int fff=0,dv=d[v]; memset(f[dv],0x3f,sizeof(int)*mi[dv+1]); for(edge *p=con[v];p;p=p->next) if(d[p->t]!=-1) fff+=mi[d[p->t]]; for(int s=0;s<=mi[dv]-1;s++) { int fas=((dv==0)?0:f[dv-1][s]); if(fas<0x3f3f3f3f) { if(lk(fff,s,dv-1)) f[dv][s+mi[dv]]=fas; else f[dv][s]=fas; chkmin(f[dv][mx(fff,s,dv-1)+(mi[dv]<<1)],fas+c[v]); } } for(edge *p=con[v];p;p=p->next) if(d[p->t]==-1) d[p->t]=dv+1,dfs(p->t); if(dv!=0) for(int s=0;s<=(mi[dv]-1);s++) f[dv-1][s]=min(f[dv][s+mi[dv]],f[dv][s+(mi[dv]<<1)]); } int main() { mi[0]=1; for(int i=1;i<=10;i++) mi[i]=mi[i-1]*3; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&c[i]); for(int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); ins(x,y); ins(y,x); } memset(d,-1,sizeof(d)); for(int i=1;i<=n;i++) if(d[i]==-1) { d[i]=0; dfs(i); ans+=min(f[0][1],f[0][2]); } printf("%d",ans); return 0; }
相关文章推荐
- 11-1 noip模拟 第二题 SPFA+状压dp
- [2017纪中11-5]好路线 DP
- 【BZOJ4676】Xor-Mul棋盘 拆位+状压DP
- HDU-2825 Wireless Password(AC自动机+状压DP)
- HDU ACM 11 2079 选课时间 母函数或者DP
- UVA 11600 Masud Rana 并查集+状压概率dp
- [2017纪中11-6]奇怪的队列 树状数组+二分/线段树
- HDU 3768 Shopping 最短路+状压dp
- 【bzoj4903/uoj300】[CTSC2017]吉夫特 数论+状压dp
- cf 11D A Simple Task(状压DP)
- poj3229(图论+状压dp)
- bzoj 4479: [Jsoi2013]吃货jyy 欧拉回路+状压dp
- POJ 3311-Hie with the Pie(最短路+状压DP)
- bzoj 4006 [JLOI2015]管道连接(斯坦纳树+状压DP)
- [2017纪中11-2]失格 最小生成树+数论
- P3761送外卖(最短路+状压dp)
- hdu 3681(bfs+二分+状压dp判断)
- 1097: [POI2007]旅游景点atr dijkstra+状压dp
- hdu 3768 Shopping【SPFA+状压DP】
- bzoj2669[cqoi2012]局部极小值 容斥+状压dp