机器人树上寻宝
来源:互联网 发布:光大淘宝信用卡 编辑:程序博客网 时间:2024/05/18 01:38
给出一棵树,树上的每个节点都有权值。可以从树上任选一点,放出k个机器人,每个机器人最多走过m-1条边。要求停留的点权值和最大。
动态规划算法。归并思想,归并的同时排好序。
枚举步数从1到k.访问每个点的相邻节点。
这里的f[i][j]代表从j点出发最多走i步的最大值。
这里要注意的是归并过程中两个点相同只取一个,防止重复;若权值相同,选标号小的,这和点的遍历顺序有关,防止在标号大的点进行归并的时候若归并的最后一个点的权值与前面那个相同,无法选择。
#include<cstdio>#include<cstring>#include<string.h>#include<algorithm>#include<iostream>#include<math.h>#include<vector>#include<stack>using namespace std;const int maxm=25;const int maxn=50010;const int maxk=6;struct Ans{int best[maxk];int cnt;}f[maxm][maxn];int n,m,K;int value[maxn];vector<int>edge[maxn];void merge(struct Ans &a,const struct Ans &b){int best[maxk];int i=0,k=0,j=0;while(i<K&&j<a.cnt&&k<b.cnt){if(a.best[j]==b.best[k]){best[i++]=a.best[j];j++;k++;}else if(value[a.best[j]]>value[b.best[k]]||(value[a.best[j]]==value[b.best[k]]&&a.best[j]<b.best[k])){best[i++]=a.best[j++];}else{best[i++]=b.best[k++];}}while(i<K&&j<a.cnt){best[i++]=a.best[j++];}while(i<K&&k<b.cnt){best[i++]=b.best[k++];}a.cnt=i;for(i=0;i<a.cnt;i++)a.best[i]=best[i];}int main(){while(scanf("%d%d%d",&n,&m,&K)!=EOF){for(int i=1;i<=n;i++){scanf("%d",&value[i]);edge[i].clear();f[0][i].cnt=1;f[0][i].best[0]=i;}for(int i=0;i<n-1;i++){int u,v;scanf("%d%d",&u,&v);edge[u].push_back(v);edge[v].push_back(u);}for(int i=1;i<=m;i++){for(int u=1;u<=n;u++){f[i][u]=f[i-1][u];for(int j=0;j<edge[u].size();j++){int v=edge[u][j];merge(f[i][u],f[i-1][v]);}}}long long best=0;for(int i=1;i<=n;i++){long long totval=0;for(int j=0;j<f[m][i].cnt;j++){totval+=value[f[m][i].best[j]];}best=max(best,totval);}printf("%lld\n",best);}return 0;}from sysuoj.
阅读全文
0 0
- 机器人树上寻宝
- 寻宝.....!
- 寻宝
- 地宫寻宝
- 寻宝问题
- MZY寻宝
- MZY寻宝
- [GDKOI2016]寻宝
- 地图寻宝
- 棋盘寻宝
- zzulioj1918:寻宝
- 地宫寻宝
- 寻宝之后
- 寻宝---kruskal
- 【GDKOI2016】寻宝
- 机器人
- 机器人
- 机器人
- 【linux 软件安装】linux 安装tomcat
- iOS 点击事件传递及响应
- mysql连接HTML的一些问题
- Android不完全退出主Activity的方法
- Bzoj 2752: [HAOI2012]高速公路(road)
- 机器人树上寻宝
- ubuntu16.04 64bit编译android5.1错误
- C语言的各种版本
- 十个由浅入深的Angular.js问题
- 分布式系统互斥算法
- Hibernate4.3.11遇到的问题
- 看我如何进入全球网络摄像头及其防护
- 线索树(数据结构)
- 解决爬虫登陆电信密码加密问题