随笔分类 - ACM-HDU
            
    HDU 4609 FFT
    
            
            
        
摘要:题目大意给定n条边的边值,求任意取三条边能组成三角形的概率这里概率 P = valid/tottot = (n-2)*(n-1)*n/6是没问题的valid表示合法的方式先考虑,任意两条边组合形成方法的总数因为边值在100000的范围内,这里组合用fft计算得到最后形成和为 i 的两条边的方法数为 ...
        阅读全文
            
        
            
    HDU 1402 fft 模板题
    
            
            
        
摘要:题目就是求一个大数的乘法这里数字的位数有50000的长度,按平时的乘法方式计算,每一位相乘是要n^2的复杂度的,这肯定不行我们可以将每一位分解后作为系数,如153 = 1*x^2 + 5*x^1 + 3*x^0 (在这里x可以理解成10)那么两个数字相乘就相当于系数相乘后得到新的系数组合如153 *...
        阅读全文
            
        
            
    HDU 4746 莫比乌斯反演+离线查询+树状数组
    
            
            
        
摘要:题目大意:一个数字组成一堆素因子的乘积,如果一个数字的素因子个数(同样的素因子也要多次计数)小于等于P,那么就称这个数是P的幸运数多次询问1 2 #include 3 #include 4 #include 5 #include 6 #include 7 using names...
        阅读全文
            
        
            
    HDU5478 原根求解
    
            
            
        
摘要:看别人做的很简单我也不知道是怎么写出来的自己拿到这道题的想法就是模为素数,那必然有原根r ,将a看做r^a , b看做r^b那么只要求出幂a,b就能得到所求值a,b自己慢慢化简就会发现可以抵消n然后扩展欧几里得解决,一个个枚举所有模的情况。。。。中间利用了欧拉准则可以知道 对所有奇素数而言: a^(...
        阅读全文
            
        
            
    HDU 5451 广义斐波那契数列
    
            
            
        
摘要:这道题目可以先转化:令f(1) = 5+2√6f(2) = f(1)*(5+2√6)...f(n) = f(n-1)*(5+2√6)f(n) = f(n-1)*(10-(5-2√6)) = 10*f(n-1)-(5-2√6)f(n-1) = 10*f(n-1) - 10/(5+2√6) f(n-1)...
        阅读全文
            
        
            
    HDU 4085 斯坦纳树
    
            
            
        
摘要:题目大意:给定无向图,让前k个点都能到达后k个点(保护地)中的一个,而且前k个点每个需要占据后k个中的一个,相互不冲突找到实现这个条件达到的选择边的最小总权值这里很容易看出,最后选到的边不保证整个图是联通的我们只要计算出每一个连通的最小情况,最后跑一遍dfs就能计算出答案了那么用dp[i][j]表示...
        阅读全文
            
        
            
    HDU 5439 Aggregated Counting
    
            
            
        
摘要:题目大意:由1开始不断往数组中添加数就是按照当前所在位置所在的数表示的个数添加这个数目的数1 2 2 3 3 后面因为要填4,而4号位置为3,说明之后要填3个4问题就是给定一个n,找到n出现的最后位置p,再找p出现的最后位置即可这里可以考虑先找到g[i]表示 i 连续出现了多少次这里想一下的话,因为...
        阅读全文
            
        
            
    HDU 5442 后缀自动机+kmp
    
            
            
        
摘要:题目大意:给定一个字符串,可理解成环,然后选定一位置,逆时针或顺时针走一遍,希望得到字典序最大,如果同样大,希望找到起始位置最小的,如果还相同,就默认顺时针比赛一直因为处理最小位置出错,一结束就想明白了。。。真是作孽这里正向后缀自动机跑一遍最大的,这样得到的位置肯定是最小的而逆时针最大就反向重建后缀...
        阅读全文
            
        
            
    HDU 5382 莫比乌斯反演
    
            
            
        
摘要:题目大意:求S(n)的值 n 2 3 using namespace std; 4 #define N 1000000 5 #define ll long long 6 const int MOD=258280327; 7 8 ll g[N+5] , t[N+5] , f[N+5]; 9 ll ...
        阅读全文
            
        
            
    HDU 1098 Ignatius's puzzle 费马小定理+扩展欧几里德算法
    
            
            
        
摘要:题目大意:给定k,找到一个满足的a使任意的x都满足f(x)=5*x^13+13*x^5+k*a*x 被65整除推证:f(x) = (5*x^12 + 13 * x^4 + ak) * x因为x可以任意取 那么不能总是满足 65|x那么必须是 65 |(5*x^12 + 13 * x^4 + ak)那...
        阅读全文
            
        
            
    lucas 定理学习
    
            
            
        
摘要:大致意思就是求组合数C(n , m) % p的值, p为一个偶数可以将组合数的n 和 m都理解为 p 进制的表示n = ak*p^k + a(k-1)*p^(k-1) + ... + a1*p + a0m =bk*p^k + b(k-1)*p^(k-1) + ... + b1*p + b0然后C(n...
        阅读全文
            
        
            
    HDU 3966 基础树链剖分
    
            
            
        
摘要:题意:给一棵树,并给定各个点权的值,然后有3种操作:I C1 C2 K: 把C1与C2的路径上的所有点权值加上KD C1 C2 K:把C1与C2的路径上的所有点权值减去KQ C:查询节点编号为C的权值 1 #pragma comment(linker, "/STACK:1024000000,102...
        阅读全文
            
        
            
    HDU 3333 树状数组离线查询
    
            
            
        
摘要:题目大意:询问区间内不同种类的数的数值之和这里逐个添加最后在线查询,会因为相同的数在区间内导致冲突我们总是希望之后添加的数不会影响前面,那么我们就在添加到第i个数的时候,把所有在1~i 的区间的询问全部处理完成即可对于之前的冲突,我们可以不断记录上一次冲突的位置,给当前的前缀和添加一个当前的val对...
        阅读全文
            
        
            
    HDU 3341 状态压缩DP+AC自动机
    
            
            
        
摘要:题目大意:调整基因的顺序,希望使得最后得到的基因包含有最多的匹配串基因,使得所能达到的智商最高这里很明显要用状态压缩当前AC自动机上点使用了基因的情况所能达到的最优状态我最开始对于状态的保存是,针对基因的个数转化为最小的二进制个数保存,但是浪费了很多二进制位,比如8 -> 1000,那么之后的100...
        阅读全文
            
        
            
    HDU 5313 bitset优化背包
    
            
            
        
摘要:题目大意:添加尽可能少的边,最后使图形成二分图一开始将图区分成一个个联通分量,根据二分图染色,计算出每个联通分量的黑色点和白色点的个数希望添加的边最少,那么合并的时候,希望黑白块尽可能平均,这无疑背包dp做,但超时了。。。T T跟着题解说的bitset,学了一下,果然总共10000个点不到,那么只要...
        阅读全文
            
        
            
    HDU 5381 The sum of gcd
    
            
            
        
摘要:题目大意:f(l,r)=∑ri=l∑rj=igcd(ai,ai+1....aj)求解多个区间 l , r 对应的f(l,r)值这里首先要知道一个数的因子个数不超过log2(n)个,所以作为一个int整数来说,对应求得的最多只有31种gcd值那么线段树上就可以维护这样的31种gcd值,并记录他们对应的...
        阅读全文
            
        
            
    HDU 3377 插头dp
    
            
            
        
摘要:题目大意:从左上角走到右下角,每个点之多经过一次,取到所有路径上经过点的权值,求最大的权值之和,这里走到右下角就算停止了这里有个思路是转化成熟悉的回路问题在上方和右方最外围定义一圈权值为0 , 那么我们相当于从定义以后的左上角开始经过所有外围点形成的回路,那么去掉最外围的0,剩下的就是(1,1)-》...
        阅读全文
            
        
            
    HDU 1693 二进制表示的简单插头dp
    
            
            
        
摘要:题目大意:找到多条回路覆盖所有非障碍格子,问这样回路的种数这里的插头与URAL1519 不一样的是 只要管它是否存在即可,只需要1个二进制位表示状态 1 #include 2 #include 3 #include 4 #include 5 6 using namespace ...
        阅读全文
            
        
            
    HDU 5353
    
            
            
        
摘要:题目大意:相邻的朋友可以给出自己手上最多一颗糖,n个朋友形成一个环,问给的方式能否最后使所有朋友都糖的数量相同这里我用的是网络流来做的,这里n=100000,用sap的模板可以跑过 1 #include 2 #include 3 #include 4 #include 5 usin...
        阅读全文
            
        
            
    HDU 2586 LCA
    
            
    
摘要:题目大意:多点形成一棵树,树上边有权值,给出一堆询问,求出每个询问中两个点的距离这里求两个点的距离可以直接理解为求出两个点到根节点的权值之和,再减去2倍的最近公共祖先到根节点的距离这是自己第一道lca题目学习了两种方法第一种在ST算法,利用RMQ思想预处理 1 /*在线ST算法*/ 2 #pragm...
        阅读全文
            
        
 
                    
                     
                    
                 
                    
                 
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号