07 2018 档案
摘要:理解hash过程 首先可知,先放进去肯定是h[i]%n==i的位置,这些个位置放进set按照字典序顺序来,然后每安排一个这样点,对于它后一位的值,如果还没被放入set,则如果它%对应的位置已经放入set了则它放入set ~ ac代码:
阅读全文
摘要:多动手写思路才能让思维更加清晰吖~~~ 例2 2 3 3 4 首先用map记录每个数出现次数mp[2]=mp[3]=2 , mp[4]=1; 然后t【】记录每个次数的个数; 然后从大到小扫描频率,记录如果答案是某频率,至少去掉多少点(这里要去掉的最少点<=m没关系,如果m>min的话,去掉除该值的其
阅读全文
摘要:每次只需计算小于等于当前x值得个数有多少即可。 ac代码: treap #include<bits/stdc++.h> using namespace std; #define per(i,a,b) for(int i=a;i <= b;i++) #define Max(a,b) a=max(a,b
阅读全文
摘要:注意判断指针空就用NULL,不要用!p ~~~ ac代码:
阅读全文
摘要:注意记录路径时path要五维,不能滚动数组,因为没有第几个物品来标明顺序的话,就可能在某个物品的dp中导致path 的两个状态对应同一个物品,导致wa或者超时! 还有dp数组可以用short int存储 ac代码:
阅读全文
摘要:src:http://acm.hdu.edu.cn/showproblem.php?pid=5726 解答: http://www.cnblogs.com/WABoss/p/5686994.html 代码:
阅读全文
摘要:src:http://acm.hdu.edu.cn/showproblem.php?pid=4585 用stl解法: treap解法:
阅读全文
摘要:题意:你知道有一个1~n的排列,但具体排列你不知道。现在给出1~n每个前缀的逆序数对数,让你还原这个排列。 思路:从最后一个值开始考虑,rev[i]-rev[i-1]表示前面比它大的数的个数,我们就可以得出当前位置的数字在1-n中的次序,然后进行权值线段树的操作~~~ ac代码
阅读全文
摘要:离散化后维护 离散化,一种是给定的数据已经各不相同了,就直接记录(如普通的线段树题hdu1255),,,另一种是可能会相同就用unique() 去重~~~ ac代码:
阅读全文
摘要:矩形面积交。线段树的好题,第三次做了~~~ 注意:如果题目是连续型线段,二分线段判断条件是l+1==r 那么这里不能是mid+1,因为这里是连续型的mid和mid+1之间也是线段 其他题目中点是离散的123... 左边就是[1,mid],右边是[mid+1,r],中间划分线就是mid和mid+1中间
阅读全文
摘要:src:http://acm.hdu.edu.cn/showproblem.php?pid=4044 dp[u][i]为u不选的时候花i元的最优解,这题考虑dp[ u ][ i ]时对于子树根u选不选分开讨论,一种方法是定义状态为dp[ u ][ i ][ 0/1 ]分别表示选/不选,但是这样转移方
阅读全文
摘要:src : http://poj.org/problem?id=3140 题意:选择一条树边断开,使得分成的两部分的总点权差最小,输出最小值 就直接预处理每一个点及其子树的总点权 枚举一个点和其父亲断开,取个最优值就好了 注意long long
阅读全文
摘要:src:http://acm.hdu.edu.cn/showproblem.php?pid=3586 题意:给一个限制m,切断的路径权值和不超过m,单个边权值也不超过k,求最小的k使得所有叶子和根不相连 二分一个k 对于一个确定的k,dp[u]表示u的叶子全部和u分离需要的最小花费 考虑叶子节点:d
阅读全文

浙公网安备 33010602011771号