题意:给定一棵树顶点标号为连续的1~n,每次在线询问不在a-b路径上标号最小的点
这题想了好久,假设1为首先如果a-b不过根节点1,答案一定是1。否则我们用fa[i]表示i节点的父亲,belong[i]表示i节点祖先是belong[i],且belong[i]是根节点儿子。这样我们可以预处理出ans[i]表示在belong[i]这颗子树中除去i到根节点的路径中最小的值。统计答案即可。
讨论时需注...
分类:
其他好文 时间:
2014-08-06 19:08:52
阅读次数:
248
1.for()语句性能优于for(...in...)语句2.避免重复创建函数,避免使用闭包。推荐使用prototype追加方法3.判断一个js对象是否支持某个属性或方法时使用if(typeof(person.attr)!='undefined') ,考虑到当person.attr=null,0,fa...
分类:
Web程序 时间:
2014-08-06 17:39:21
阅读次数:
270
题目意思和POJ2342一样,只是多加了一个条件,如果最大方案数唯一,输出Yes,不唯一输出No
dp的是时候多加一个变量记录答案是否唯一即可
#include "stdio.h"
#include "string.h"
#include "vector"
using namespace std;
struct node
{
int fa;
vectorchi...
分类:
其他好文 时间:
2014-08-04 18:02:17
阅读次数:
250
HDU 1561The more, The Better题目大意就不说了直接DP[i][j]表示i为跟节点的子树上攻克j个城堡的所能获得的最多宝物的数量DP[fa][j] = MAX{DP[fa][i-k] + DP[child][k]};首先一个问题就是说如果子树u下的任意子节点被选择了,那么u是...
分类:
其他好文 时间:
2014-08-03 15:09:55
阅读次数:
251
# include
# include
# include
using namespace std;
int fa[10010];
struct node
{
int p;
int d;
};
struct node a[10010];
bool cmp(node a1,node a2)//利润从大到小
{
return a1.p>a2.p;
}
int find(int x)
{...
分类:
其他好文 时间:
2014-08-03 10:16:25
阅读次数:
208