[2017纪中11-1]荒诞 欧拉序+状压DP
来源:互联网 发布:java文件读写 编辑:程序博客网 时间:2024/05/21 19:38
题面
题解
太巧妙了。。。图上还能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;}
阅读全文
0 0
- [2017纪中11-1]荒诞 欧拉序+状压DP
- 【JZOJ5442】【NOIP2017提高A组冲刺11.1】荒诞[状压dp]
- JZOJ5442【NOIP2017提高A组冲刺11.1】荒诞 三进制状压+欧拉序
- 为何荒诞?
- [2017纪中11-4][ARC071]F-neutral DP
- [2017纪中11-5]好路线 DP
- 邦德 纪中 1236 状压dp
- 密码盘 纪中 3067 状压dp
- 事情就是这么荒诞
- 落叶归根-荒诞浮世绘
- 真实·荒诞
- 落叶归根-荒诞浮世绘
- 落叶归根-荒诞浮世绘
- 荒诞的价值
- 五月的荒诞
- JZOJ 5442 荒诞
- [2017纪中10-21]Dark DP
- [2017纪中10-22]友谊 DP
- 2017.11.02笔记
- java集合框架
- Android事件分发
- 内置对象
- 记录angular遍历的元素隐藏显示修改
- [2017纪中11-1]荒诞 欧拉序+状压DP
- STL 源码剖析
- Java消息队列--ActiveMq 实战
- synchronized关键字与lock的使用举例。
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
- PHP二维数组根据某个字段排序
- c#文件下载示例的4种方法
- wordpress无法建立目录wp-contents/uploads/***/***没有上级目录的写权限
- MyEclipse10中配置开发Python所需要的PyDev 绝对靠谱