hdu6127】的更多相关文章

hdu6127 题意 二维平面上存在一些点,每个点都有权值,任意两点组成的线段的权值为这两点权值的乘积,选定一条经过原点的直线,问怎样使得它经过的线段的权值之和最大. 分析 题目等价于用一条直线将平面上的所有点分成两部分,那么答案就是两部分点的权值和的乘积. 比如说一条与 \(y\) 轴重合的直线,它左边有点的权值 \(w_1, w_2, w_3\) ,右边 \(w_4, w_5\) ,那么这种情况下权值之和就是 \((w_1 + w_2 + w_3) * (w_4 + w_5)\) . 计算出…
LINK 题意:给出n个点,每个点有个权值,可以和任意另外一点构成线段,值为权值积.现问过原点的直线中交所有线段的权值和的最大值,注意直线必不经过点. 思路:直线可以将点集分为两侧,此时的权值为两侧点的乘积.而且由于是过原点的直线,所以不用暴力枚举两个点了...直接极角排序,这里我原先的极角排序有点小问题,最后还是找的别人的,以(0,x)为最小极角的. 然后前缀和权值以便分组求积. 枚举点,与原点相连作直线,然后以枚举点的对称点,二分找到最大的在它顺时针侧的点,然后注意要注意枚举点是否包含的两种…
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6127 题目: Hard challenge Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 813    Accepted Submission(s): 329 Problem Description There are n po…
平面上n个点,每个点带权,任意两点间都有连线,连线的权值为两端点权值之积.没有两点连线过原点.让你画一条过原点直线,把平面分成两部分,使得直线穿过的连线的权值和最大. 就把点极角排序后,扫过去,一侧的点会跨过直线与另一侧的所有点形成连线.此时的答案为两侧的权值和之积,尝试用此更新最终答案. #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; struct Point{ ll…
HDU6121 Build a tree 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6121 题目意思:一棵 n 个点的完全 k 叉树,结点标号从 0 到 n - 1,求以每一棵子树的大小的异或和. 思路:一层一层的算,附上我的灵魂画作 我们来模拟计算一下上面这个非完全k叉树所有子树的大小异或之和. 对于第四层对于以该层节点为根的子树的大小为1,我们发现这一层总共有12个这样的子树,所以ans+=0: 对于第三层对于以该层节点为根的子树的大小为…