poj1694
/*给出一棵树的描述
第一行输入t,代表案例的个数
第二行一个n代表这棵树有n个节点
接下来n行第一个数是节点的编号,根节点编号为1,然后第二个数是节点的个数,如果为0那就没子节点,否则输入节点的
编号
方法:递归+排序
先求出根节点的r个子节点需要的最小石头数,然后按大到小排序r1,r2,r3..rr,另结果result初值为最大的那个
r1,然后剩下为remain=result-1,然后将remain从r2遍历到rr,如果都比remainxiao说明剩下的可以满足,否则结果
result+=ri-remain,remain=ri-1;,遍历r个数以后就可以得出结果
上面过程可以用递归实现
*/ #include <stdio.h>
#include <iostream>
#include <string.h>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
#define MAX 250
struct point
{
int num;//该节点的标号
vector<int> chind;//存储孩子的标号
int allchild;//存储孩子的个数
};
int cacl(int root,point *T)
{
int i;
vector<int> v;
if(T[root].allchild==) return ;
else
{
for(i=;i<T[root].allchild;i++)
v.push_back(cacl(T[root].chind[i]-,T) );//T[root].chind[i]-1比表示孩子的在这个容器中的编号
sort(v.begin(),v.end());
int result=v.back();
int remain=result-;//该节点要放一个
for(i=T[root].allchild-;i>=;i--)
{
if(remain>=v[i]) remain--;
else
{
result=result+v[i]-remain;
remain=v[i]-;
}
}
return result;
}
}
int main()
{
int i,j,n,k;
int t;
scanf("%d",&t); while(t--)
{
point *T=new point[MAX];//定义一个结构体指针,指向结构体数组
scanf("%d",&n);
k=;
while(n--)
{
scanf("%d",&T[k].num);
scanf("%d",&T[k].allchild);
for(i=;i<T[k].allchild;i++)
{
scanf("%d",&j);
T[k].chind.push_back(j);
}
k++;
}
int sum=cacl(,T);
printf("%d\n",sum);
delete T;
}
return ;
}
18:07:2418:07:2518:07:26
poj1694的更多相关文章
- 【poj1694】 An Old Stone Game
http://poj.org/problem?id=1694 (题目链接) 题意 一棵树,现在往上面放石子.对于一个节点x,只有当它的直接儿子都放满石子时,才能将它直接儿子中的一个石子放置x上,并回收 ...
- hdu&&poj搜索题题号
搜索 hdu1067 哈希 hdu1401 双向搜索 hdu1430 哈希 hdu1667 跌搜+启发式函数 hdu1685 启发式搜索 hdu1813 启发式搜索 hdu1885 状态压缩搜索 hd ...
- ACM学习大纲
1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以b ...
- ACM训练大纲
1. 算法总结及推荐题目 1.1 C++ STL • STL容器: set, map, vector, priority_queue, queue, stack, deque, bitset• STL ...
- ACM学习大纲(转)
1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以b ...
随机推荐
- 动画间隔AnimationInterval 场景切换、图层叠加
从这一个月的学习进度上来看算比较慢的了,从开始学习C++到初试cocos,这也是我做过的比较大的决定,从工作中里挤出时间来玩玩自己喜欢的游戏开发也是一件非常幸福的事情,虽然现在对cocos的了解还只是 ...
- 解决jsp上传文件,重启tomcat后文件和文件夹自动删除
吼吼,我遇到的问题是这样的......我写了一个图片上传的方法,上传时,判断没有这个目录就自动建立一个.然后开始上传图片,能成功,能在服务器找到文件夹和相应的文件. 但是,重启项目,或者清理缓存之后, ...
- 相似性分析之Jaccard相似系数
Jaccard, 又称为Jaccard相似系数(Jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性.Jaccard系数值越大,样本相似度越高 公式: ...
- sql---如何把sql查询出来的结果当做另一个sql的条件查询,1、语句2、with as
'; -- table2 的 name 作为 table1的条件 select * from table1 where name in (select name from table2) --如果有多 ...
- cocopods
一.什么是CocoaPods 1.为什么需要CocoaPods 在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson.AFNetworking.Reachability等等.使用这些库 ...
- pug.compile() will compile the Pug source code into a JavaScript function that takes a data object (called “locals”) as an argument.
Getting Started – Pug https://pugjs.org/api/getting-started.html GitHub - Tencent/wepy: 小程序组件化开发框架 h ...
- python迭代器、生成器、yield和xrange
https://blog.csdn.net/u010138758/article/details/56291013
- docker,构建nginx反向代理tomcat
Nginx实现负载均衡是通过配置nginx.conf来实现的,nginx.conf的全部内容如下: user nginx; worker_processes 1; error_log /var/log ...
- 借鉴+总结!! mysql 客户端命令行下 查询数据并生成文件导出
方式1:在mysql命令行环境下执行: sql语句+INTO OUTFILE +文件路径/文件名 +编码方式(可选) 例如: select * from user INTO OUTFILE '/ ...
- Making the Grade---poj3666(类似离散化+dp)
题目链接:http://poj.org/problem?id=3666 题意是给出一组数,每个数代表当前位置的地面高度,问把路径修成非递增或者非递减,需要花费的最小代价? ///用dp[i][j]表示 ...