重心

树形dp小结,入门

隐身守侯 提交于 2020-02-05 05:01:57
今天树形dp学习了一下,整个总结,虽然以前就小看过,但差不多忘完了,唯一记得就是:树形dp嘛,就是在树上的dp,这讲得超级形象。 对于状态方程,目前做题碰到了两类: 一维:直接dp[i],维护一个以i为根时的最优状态。 二维:dp[i][j],表示以I为根时,决策是j时的最优状态。 这其中也接触了一点树的性质 一,树的重心:当去掉树中重心这个点后,所剩的所有子树节点的数量中的最大值s,比去掉树中其他点所形成的任何s’都大,“任何”好像有点儿不对,因为树的重心可以有两个并且这两个点相邻。 性质:1.树中所有点到一个点p的距离和的最小值就是当p为这棵树的重心时。 2.把一棵树删除或者添加一个叶子,它的重心最多只移动一条边的距离。就是说树的重心会变; 3.把两棵树通过一条边合并成一棵新树,那么新树的重心在连接原来两棵树的重心的路径上。 树重心的求法:利用树形dp,dp[i]表示以i为根的树中i的所有子树结点的最大值, 同时维护一个size[],size[i]保存以i为跟的树的节点个数,那么 dp[i]=max(dp[i],dp[son],n-sz[i]); n是节点总数。 二:树的直径:树上最远两叶子节点的距离; 性质:树上任意一个点的能到的最远路径的端点一定是这棵树的直径的两个端点中的一个. 树的直径长度一定是某个点的最长距离和次长距离之和,求出每个点的和求个max可以求树的直径。

iOS-规避iOS审核4.3规则的重心

浪子不回头ぞ 提交于 2020-01-22 21:34:26
前言 最近iOS卡审严重,很多小伙伴都被拒了,也有很多小伙伴收到4.3礼包,这里就说说4.3吧! 规避4.3的重心,切断当前马甲包与以往马甲包的所有相似性关联; 相似关联 a. ipa包特征; b. 开发者帐号; c. 打包电脑; d. 上传IP; e. 材料相似; 分项细述 1. ipa包特征: 包括有代码相似性,资源相似性; 代码相似性解决办法: a. 已有代码的混淆(改类名、改函数名、改属性名、垃圾代码、垃圾类等等) b. 添加一些无用的代码; 注:详细代码混淆ZFJObsLib https://zfj1128.blog.csdn.net/article/details/95482006 资源相似性解决办法: a. 资源文件改名; b. 适当添加一些无用的资源; c.修改资源文件的HASH值; 翻新工程: a.修改工程名; b.修改工程目录结构; 2. 开发者帐号: 两个马甲包不要关联到同一个开发者帐号的信息;比如打包时关联。 3. 打包电脑: 有条件的最好用不同的MAC来打包(每台MAC上最好打包马甲包不要超过5个) 4. 上传IP: 上传马甲包时,IP不要跟其他马甲包的IP相同; 5. 材料相似: itu后台材料如宣传图,ICON,版权人不要出现相同; 注:即使是前边没审核过的包,也不要跟他们有关联。尤其是前边被4.3拒绝的包,更不能跟他们有相似性。 混淆相关

机器学习~K-Means

余生颓废 提交于 2020-01-13 05:13:05
文章目录 概述 原理 示例 Sklearn实现 聚类效果的评估 KMeans存在的几个问题 初始重心选择 K值选择 基于密度聚类(DBSCAN) mini batch kmeans 参考 概述 k-means算法是一种聚类算法,所谓聚类,是指在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好。 聚类算法与分类算法不同,聚类算法属于无监督学习,通俗来讲:分类就是向事物分配标签,聚类就是将相似的事物放在一起。 聚类算法通常用来寻找相似的事物,比如:银行寻找优质客户,信用卡诈骗,社交划分社区圈等等。 原理 首先K-means中的K类似与KNN中的参数K,是指将数据聚类成K个类别。 算法原理: 先从没有标签的元素集合A中随机取K个元素,作为K个子集各自的重心。 分别计算剩下的元素到K个子集重心的距离,根据距离将这些元素分别划归到最近的子集。(这里的距离可以使用欧式距离或其他的距离量度) 根据聚类结果,重新计算重心(即子集中所有元素各个维度的算数平均数) 将集合A中全部元素按照新的中心然后再重新聚类 重复第4步,直到聚类结果不再发生变化。 示例 看着算法的步骤有点懵逼,我们来看个简单的例子。 1.假设画布上有四个点,如下: 我们想将其聚类成两类,首先我们先随机选取两个点,比如A,B两点选取两个类别的重心点,然后分别计算所有元素到这两个重心的距离

洛谷 P2664 树上游戏 题解

烈酒焚心 提交于 2020-01-10 04:34:52
题目传送门 题目大意: 求出所有的 s u m i = ∑ j = 1 n s ( i , j ) sum_i=\sum_{j=1}^n s(i,j) s u m i ​ = ∑ j = 1 n ​ s ( i , j ) ,其中 s ( i , j ) s(i,j) s ( i , j ) 表示 i i i 到 j j j 的路径上有多少种不同的颜色。 题解 树上的路径的统计类型的题目肯定是用点分治来搞嘛。对于当前分治到的一颗子树,我们考虑统计所有子树内经过重心的路径所产生的贡献。 为了方便,先定义几个东西: c o l [ i ] col[i] c o l [ i ] 表示节点 i i i 的颜色 v a l [ i ] val[i] v a l [ i ] 表示 i i i 这种颜色给重心带来的贡献 s i z e [ i ] size[i] s i z e [ i ] 表示以 i i i 为根的子树的大小 r o o t root r o o t 表示重心 那么我们在从重心遍历下去的过程中,对于遍历到的一个点 x x x ,假如这个点的颜色在它到重心的路径上是第一次出现,那么我们让 v a l [ c o l [ x ] ] val[col[x]] v a l [ c o l [ x ] ] 加上 s i z e [ x ] size[x] s i z e [ x ]

欧拉线 Euler line

人盡茶涼 提交于 2020-01-09 23:25:50
定理:三角形的垂心(orthocenter)、重心(centroid)、外心(circumcenter)共线,且重心到垂心的距离等于重心到外心的距离的两倍。过三角形的垂心、重心、外心的直线称为 欧拉线(Euler line) 。 可以在 这里 感受一下。 证明: 令 △ A B C \triangle_{ABC} △ A B C ​ 的垂心,重心,外心分别为 O 1 , O 2 , O 3 O_1,O_2,O_3 O 1 ​ , O 2 ​ , O 3 ​ 分别作 A B , B C , C A AB,BC,CA A B , B C , C A 的中点 E , F , D E,F,D E , F , D ,则 E F , E D , F D EF,ED,FD E F , E D , F D 是 △ A B C \triangle_{ABC} △ A B C ​ 的中位线, △ A B C ∼ △ F D E \triangle_{ABC}\sim \triangle_{FDE} △ A B C ​ ∼ △ F D E ​ 且相似比为 2 : 1 2:1 2 : 1 。 由重心的性质得 B D BD B D 过 O 2 O_2 O 2 ​ 且 B O 2 D O 2 = 2 \frac{BO_2}{DO_2} = 2 D O 2 ​ B O 2 ​ ​ = 2 。 由垂心的定义得 O

树上dp的入门知识

瘦欲@ 提交于 2019-12-11 02:11:47
树的最大独立集 定义:对于一颗n个结点的无根树(没有确定根的树),选出尽量多的结点,使得任意二个结点均不相邻(称为 树的最大独立集 )。 思路:我们可以任意选一个点作为根结点,然后建树。 用d(i)表示以i为根结点的子树的最大独立集大小。 对于结点i,只有两种选择,选或者不选,若选,则问题转化为求出i的孙子的d值之,若不选则转化为求i的儿子的d值之和。 状态转移方程:d(i) = max(1 + gs[i], s[i]); 代码: # include <bits/stdc++.h> using namespace std ; const int mx = 1e5 + 10 ; vector < int > v [ maxn ] ; int d [ maxn ] , s [ maxn ] , gs [ maxn ] , n ; int dfs ( int u , int pre ) { for ( int i = 0 ; i < v [ u ] . size ( ) ; i ++ ) { int m = v [ u ] [ i ] ; if ( m != pre ) dfs ( m , u ) ; s [ u ] + = d [ m ] ; if ( pre != - 1 ) gs [ pre ] + = d [ m ] ; } d [ u ] = max ( s [ u ] ,

危险的台阶(运用了重心以及归纳总结的方法)

主宰稳场 提交于 2019-12-10 21:28:51
首先,这道题我之前轻看了,在此,我认错了,但知错能改,善莫大焉,我也花了相当多的来理清思路。 先说一说我一开始的思路吧,因为条件说了质量相等,长度相等,密度均匀,所以想当然的重心位于几何中心,所以应该是L/2处,但是这次真的是吃大亏了。 后来我才知道,其实当是两个的时候,最长伸出距离的确是L/2,但是当是3个,4个…n个的时候就不一样了。 为了让自己能够清楚地认识到错误,并且给那些尚不知情的伙伴们一个答案,就在这里记录下来,以便参考。 首先,当是两块砖的时候,能够延伸的最大长度就是L/2,然后当是3,4,n的时候,就需要使用归纳法来求最大长度了。 首先,明确有n+1块砖,而从顶块到n-1块砖的重心应该是第n块砖的最右边缘,其次是前n块砖的重心是位于第n+1块砖的最右边缘, 如图所示 设n-1块砖的重心为x1,设n块砖的重心为x2,则两者之间的距离则为Z,又第n块砖受到的压力和自身的重力平衡,所以mg(n-1)Z=mg(L/2-Z),解得Z=L/2n. 所以前n块砖的最大距离为1-n∑L/2n。 圣杯,虽然表面上被称作万能愿望机,但已经失去了原本的光华。污秽不堪的黑泥已经染指了圣杯,还是说,这些黑泥出自圣杯本身呢。这些并不应该在面对一个暴乱的圣杯的时候去思考。 「格蕾」 「是,亚德!」格蕾从右手处拉出装着亚德的鸟笼 「直接进入解除封印阶段吧」 「欸」格蕾对我的指令似乎有所迟疑

beta版本发布说明与总结

蹲街弑〆低调 提交于 2019-12-05 17:59:38
1.发布说明: 软件介绍: deta版本的发布最终是一个可安装使用的窗体程序,已经由Alpha版本的应用解决方案完成到一个程序; deta版本解决了Alpha版本遗留的软件技术方面错误问题,以及针对有关问题的优化,和个人体验后的优化; deta版本实现了软件的用户实际可用性的调整,即:软件的数据操作问题,放弃使用数据库,而直接操作Excel文件。 2.软件安装使用说明: 一、软件安装: 点击“setup.exe”文件安装: 可自定义安装位置: 点击下一步,到安装完成。 二、软件使用: 可双击桌面快捷方式“RPdeta2.0.exe”,或者点击“开始”在点击“RPdeta2.0.exe”; 若遇到安全软件阻拦:请选择允许(本软件不会对你的电脑造成任何威胁)确认后即可使用 2.整体综合总结: 2.1开发设计阶段: 没有发挥团队各个队员“各尽所能”的作用: 考虑使用各个队员之间相互独立的开发相应的模块,并安排间隔时间进行交流沟通。 软件设计开发在团队之间没有重心: 由组长协调,分成结对小队,统筹安排整体软件的各个部分的开发设计。 软件设计与实际开发情况有特殊出入: 由于实际软件开发水平,软件目标及时调整为符合水平的基于C#的窗体应用程序开发。 2.2开发编码阶段: 队员直接缺少相应技术和依赖性过强: 结队成员之间的协调性由于技术原因并不合作恰当,采用组长来协调工作之间的权重关系

树的重心

不羁岁月 提交于 2019-12-04 13:42:40
•重心的性质: •性质 1 :树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个重心,到他们的距离和一样。==最大的子树最小 •性质 2 :把两棵树通过某一点相连得到一颗新的树,新的树的重心必然在连接原来两棵树重心的路径上。 •性质 3 :一棵树添加或者删除一个节点,树的重心最多只移动一条边的位置。 #include<bits/stdc++.h> const int N=1000010; const int inf=0x7f7f7f7f; using namespace std; int f[N],size[N],n,head[N],tot; int rt,sum; vector<int> G[N]; void addedge(int u,int v){ G[u].push_back(v); G[v].push_back(u); } inline void getrt(int u,int fa){ size[u]=1;f[u]=0; for(int i=0;i<G[u].size();i++){ int v=G[u][i];if(v==fa)continue; getrt(v,u); size[u]+=size[v]; f[u]=max(f[u],size[v]); } f[u]=max(f[u],sum-size[u]); if(f[u]<f[rt])rt=u; }