hdu5242 上海邀请赛 优先队列+贪心
题意是给你一棵树 n个点 n-1条边 起点是1 每一个点都有权值 每次能从根节点走到叶子节点 经行k次游戏 每次都是从1開始 拿过的点的权值不能拿第二次 问最大权值和。
開始看到题时也没想到什么方法 就依照常规的来 结果超时了 试着优化了好多次 最后过了 百度题讲解是树链剖分 醉了 还没学!
。。
说说我的做法吧 map【i】=a表示i节点的跟节点为a节点 从全部叶子节点開始入队(有点队列里有三个变量 各自是节点编号 权值 深度 优先级看代码 里面有点贪心的意思) 每次走根节点 假设根节点没走过 则走它 并把该店权值变为0 否则直接跳到1这个节点(假设一个个跳可能会超时)再入队 当出队的编号为1时而且拿的个数小于游戏次数 则拿 否则结束 在跑深度的时候有个优化
開始没有超时了 假设该节点深度已知了 则以后的根节点就不用跑了。!
!
详细看代码吧
#include<stdio.h>
#include<string.h>
#include<queue>
#include<iostream>
using namespace std; int map[100010],mark[100010];
int Deep[100010];
__int64 num[100010];
struct node
{
__int64 value;
int ii;
int deep;
bool operator < (const node& x) const
{
return deep<x.deep||(deep==x.deep&&value<x.value);
}
}a;
int main()
{
int T,i,j,n,k,r=1;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%I64d",&num[i]);
}
memset(mark,0,sizeof(mark));
for(i=1;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
mark[x]=1;
map[y]=x;
}
priority_queue<node>Q;
memset(Deep,0,sizeof(Deep));
for(i=1;i<=n;i++)
{
if(mark[i]==0)
{
int x=map[i];
int d=1;
while(x!=1)
{
if(Deep[x]>0) {d+=Deep[x];break;}
x=map[x];
d++;
}
x=i;
while(x!=1)
{
if(Deep[x]>0) break;
Deep[x]=d;
x=map[x];
d--;
}
a.deep=Deep[i];
a.value=num[i];
a.ii=i;
Q.push(a); }
}
//for(i=1;i<=n;i++)
//printf("%d ^^^ %d\n",i,Deep[i]);
__int64 sum=0;
int cont=0;
while(!Q.empty())
{
a=Q.top();
Q.pop();
int x=map[a.ii];
/*while(num[x]==0&&x!=1)
{
x=map[x];
}*/
if(a.ii==1)
{
a.value+=num[1];
num[1]=0;
sum+=a.value;
cont++;
if(cont>=k) break;
}
else
{
if(num[x]==0)
{
a.ii=1;
a.deep=0;
}
else
{
a.ii=x;
a.deep=Deep[x];
a.value+=num[x];
num[x]=0;
}
Q.push(a);
}
}
printf("Case #%d: %I64d\n",r++,sum);
}
return 0;
}
hdu5242 上海邀请赛 优先队列+贪心的更多相关文章
- [POI 2001+2014acm上海邀请赛]Gold Mine/Beam Cannon 线段树+扫描线
Description Byteman, one of the most deserving employee of The Goldmine of Byteland, is about to re ...
- 最高的奖励 - 优先队列&贪心 / 并查集
题目地址:http://www.51cpc.com/web/problem.php?id=1587 Summarize: 优先队列&贪心: 1. 按价值最高排序,价值相同则按完成时间越晚为先: ...
- POJ2431 优先队列+贪心 - biaobiao88
以下代码可对结构体数组中的元素进行排序,也差不多算是一个小小的模板了吧 #include<iostream> #include<algorithm> using namespa ...
- hdu3438 Buy and Resell(优先队列+贪心)
Buy and Resell Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU5090——Game with Pearls(匈牙利算法|贪心)(2014上海邀请赛重现)
Game with Pearls Problem DescriptionTom and Jerry are playing a game with tubes and pearls. The rule ...
- ZOJ-3410Layton's Escape(优先队列+贪心)
Layton's Escape Time Limit: 2 Seconds Memory Limit: 65536 KB Professor Layton is a renowned arc ...
- CodeForces - 853A Planning (优先队列,贪心)
Helen works in Metropolis airport. She is responsible for creating a departure schedule. There are n ...
- poj2431(优先队列+贪心)
题目链接:http://poj.org/problem?id=2431 题目大意:一辆卡车,初始时,距离终点L,油量为P,在起点到终点途中有n个加油站,每个加油站油量有限,而卡车的油箱容量无限,卡车在 ...
- H - Expedition 优先队列 贪心
来源poj2431 A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Being ...
随机推荐
- hihocode 编程练习赛17
1. f1 score 首先了解f1 score的计算方法, 我记得是学信息检索知道的, 然后简单处理就行. 由于我写的比较麻烦, 中间处理过程引入了一些除数为0的情况,导致错了很多次.其实是很简单的 ...
- [转]linux grep命令
转自:http://www.cnblogs.com/end/archive/2012/02/21/2360965.html 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表 ...
- ActiveMQ 5.10.0 安装与配置
先在官网下载activeMQ,我这里是5.10.0. 然后在解压在一个文件夹下即可. 我这里是:D:\apache-activemq-5.10.0-bin 然后进入bin目录:D:\apache-ac ...
- Android HTTP 数据提交
在Android 项目中,使用HTTP协议获取数据或者处理数据,需要使用到多线程和配置相应的APP权限 1.使用线程,使用HTTP 提交数据 private Thread submitThread = ...
- C# winform启动外部exe后,如何完全阻断父界面接收事件,扩展waitforexit
公司的系统搭载了好多奇奇怪怪的exe,以前启动exe后,系统还能接着操作.但是后面又提出额外的需求,说是打开外部exe之后,启动exe的父界面要完全不能进行任何操作.当然按常人所想再加一句waitfo ...
- SQl基本操作——try catch
begin try ... end try begin catch ... end catch
- Java我来了
七天的C#集训,第一天接触Java,觉得很多相似的地方,尝试用eclipse码了几句(有些差别,毕竟没有写C#那么流畅),总体来说觉得还不错,对自己接下来要求是,更加熟练并且牢记Java的命令,更加深 ...
- [ECharts]"echarts/config" is not exists
今天在给Echarts折线图中的数据点增加点击事件的时候总是出现一个 Uncaught Error: [MODULE_MISS]"echarts/config" is not ex ...
- vue里的tab控件
如下图,v-model绑定的值,这个值在js里一旦改变,视图就会切换到相应的tab页,这意味着一定要先给tab页内容数据赋值,再改变这个tabsIndex的值 如下图,先赋值data列表数据,在更改t ...
- 笔记,js对象浅析
学习笔记, 来源:http://www.cnblogs.com/zuiyirenjian/p/3535126.html 作者:醉意人间 此外,关于自运行函数可参考 http://benalman. ...