BZOJ3836 : [Poi2014]Tourism
对于一个连通块,取一个点进行dfs,得到一棵dfs搜索树,则这棵树的深度不超过10,且所有额外边都是前向边。
对于每个点x,设S为三进制状态,S第i位表示根到x路径上深度为i的点的状态:
0:选了
1:没选,且没满足
2:没选,且已满足
设f[i][j]表示考虑根到x路径上深度为i的点时这些点的状态为j时的最小费用,然后按DFS序进行DP即可。
时间复杂度$O((n+m)3^{10})$,空间复杂度$O(10\times3^{10})$。
#include<cstdio>
const int N=20010,M=50010,K=11,inf=2000000000;
int n,m,i,x,y,a[N],g[N],v[M],nxt[M],ed,vis[N],d[N],q[K],pow[K],f[K][59050],ans;
inline void add(int x,int y){v[++ed]=y;nxt[ed]=g[x];g[x]=ed;}
inline int bit(int x,int y){return x/pow[y]%3;}
inline void up(int&x,int y){if(x>y)x=y;}
inline int min(int x,int y){return x<y?x:y;}
void dfs(int x,int y){vis[x]=1,d[x]=y;if(!y)f[0][0]=a[x],f[0][1]=0,f[0][2]=inf;else{int cnt=0;for(int i=g[x];i;i=nxt[i]){int u=v[i];if(vis[u]&&d[u]<y)q[cnt++]=d[u];}for(int S=pow[y+1]-1;~S;S--)f[y][S]=inf;for(int S=pow[y]-1;~S;S--){int U=1,V=S;for(int i=0;i<cnt;i++)if(bit(S,q[i])==0)U=2;else if(bit(S,q[i])==1)V+=pow[q[i]];up(f[y][S+U*pow[y]],f[y-1][S]);up(f[y][V],f[y-1][S]+a[x]);}}for(int i=g[x];i;i=nxt[i]){int u=v[i];if(!vis[u]){dfs(u,y+1);for(int S=0;S<pow[y+1];S++)f[y][S]=min(f[y+1][S],f[y+1][S+2*pow[y+1]]);}}
}
int main(){for(pow[0]=i=1;i<K;i++)pow[i]=pow[i-1]*3;scanf("%d%d",&n,&m);for(i=1;i<=n;i++)scanf("%d",&a[i]);while(m--)scanf("%d%d",&x,&y),add(x,y),add(y,x);for(i=1;i<=n;i++)if(!vis[i])dfs(i,0),ans+=min(f[0][0],f[0][2]);return printf("%d",ans),0;
}
BZOJ3836 : [Poi2014]Tourism相关推荐
- 洛谷P3572 [POI2014]PTA-Little Bird
P3572 [POI2014]PTA-Little Bird 题目描述 In the Byteotian Line Forest there are nn trees in a row. On top ...
- P3572 [POI2014]PTA-Little Bird
P3572 [POI2014]PTA-Little Bird 一只鸟从1跳到n.从1开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制k,求每次最少耗费多少体力 很简短的题目哼. ...
- [BZOJ3832][Poi2014]Rally
[BZOJ3832][Poi2014]Rally 试题描述 An annual bicycle rally will soon begin in Byteburg. The bikers of Byt ...
- BZOJ4543 POI2014 Hotel加强版 【长链剖分】【DP】*
BZOJ4543 POI2014 Hotel加强版 Description 同OJ3522 数据范围:n<=100000 Sample Input 7 1 2 5 7 2 5 2 3 5 6 4 ...
- hdu 4049 Tourism Planning [ 状压dp ]
传送门 Tourism Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- P3564 [POI2014]BAR-Salad Bar(ST表 + 二分)
P3564 [POI2014]BAR-Salad Bar 给定一个长度为nnn的数组,里面元素只有111跟−1-1−1,问选出一个长度为lenlenlen的区间使得,这个区间的前缀和时刻大于零,后缀和 ...
- bzoj4543. [POI2014]Hotel加强版
bzoj4543. [POI2014]Hotel加强版 题面描述 Solution 先看n≤5e3n \leq 5e3n≤5e3怎么做. 考虑树形dpdpdp. 设f[i][j]f[i][j]f[i] ...
- P3567 [POI2014]KUR-Couriers
P3567 [POI2014]KUR-Couriers 题意: 给一个长度为 n 的正整数序列 a.共有 m 组询问,每次询问一个区间 [l,r] ,是否存在一个数在 [l,r]中出现的次数严格大于一 ...
- [骗分技巧——随机化Ⅱ] [Poi2014]Couriers,CodeChef - TKCONVEX
文章目录 [Poi2014]Couriers problem solution code CodeChef - TKCONVEX problem solution code 随机算法的典型套路:枚举太 ...
最新文章
- 计算机在人力资源管理中的应用论文,计算机人事管理论文
- uniapp与帝国cms7.5开发实战之动态爆料订阅号app开发实战记录
- Qt Creator指定动态属性
- FFmpeg命令的几种应用
- ubuntu14下搭建ssdb主从环境
- 内核调试神器SystemTap — 探测点与语法(二)
- mysql 开启用户远程登录
- 3D建模软件有哪些?
- 复仇者联盟3:无限战争 | 细节-台词-镜头 详细分析复3预测复4结局
- python导入数据画直方图加正态曲线_用python制作正态分布图
- 二级MS Office高级应用--Excel常用函数
- ConcurrentHashMap源码解读
- GitLab之something went wrong during merge pre-receive hook问题
- 大龄Android程序员刚迈过了 35 岁这个“坎儿”,和大家说点儿心里话
- ROS IOError: [Errno 13] Permission denied 报错
- 什么是人工智能(深度学习)
- 高校图书馆管理系统 php 漏洞,某通用图书馆管理系统SQL注入_MySQL
- JIRA Core、JIRA Software、JIRA Service Desk的区别
- 江西理工大学南昌校区排名赛 E: 单身狗的种树游戏
- 树莓派 4b 可执行文件 无法双击运行_云拆机,一起来看看树莓派的新品——Raspberry Pi 400...
热门文章
- 以太坊智能合约开发第七篇:智能合约与网页交互
- gulp复制整个文件夹或文件到指定目录(包括拷贝单个文件)
- centos6.7x86_64安装nginx (good)
- LeanCloud学习笔记(1)
- Django在Win7下安装与创建项目hello word示例
- HDOJ 1082 模拟 水
- springcloud(一)-初识
- bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
- 【日记】一次程序调优发现的同步IO写的问题,切记
- 27、Label 自适应文本 xib