摘要:
题解写了N多方法,我用的是最水的那种。。 起始区间只有(0 <= Fi <= 500),500秒之后排名必然不会变化了。。所以,暴力500秒,然后排个序就行了。 1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #define MAXN 50010 5 struct stt{ 6 int s,t,v,id; 7 bool operator <(const stt& st)const{ 8 return t>st.t||(t==st.t& 阅读全文
posted @ 2012-09-23 11:45
Burn_E
阅读(149)
评论(0)
推荐(0)
摘要:
求比N小的因数最多的数,因数相同时取较小的的。(N<=10^80) 没想法的题目,没想到是搜索。。 首先因子数目 f[i] = ∏(p[i]+1) ,p[i]是所有质因数的个数,这个应该都知道。如果要使因子最多并且数最小,不会用到太大的质数,这个我也不知道怎么证明。。原题解也没有证明。。。 用一个四元组[K,F,N,A[]]表示数K有F个因数,包含N个质因数,每个质因数P[i]分别有A[i]个。然后搜索就可以了,添加一个已有质数A[i],四元组转化为[K*P[i],F/(A[i]+1)*(A[i]+2),N,A[i]+1],添加一个新的质数A[i],四元组转化为,[K*P[i],F*.. 阅读全文
posted @ 2012-09-23 11:33
Burn_E
阅读(380)
评论(0)
推荐(0)
摘要:
给出一个区间以及两种区间操作,[1 l,r,c]把l~r的点染成c色,[2,l,r,c]查询l~r内颜色为c的点的数目。 因为c的数目太大,用线段树是存不下的,所以只能另辟蹊径了。虽然网上有线段树的方法,但那个Max-Min剪枝完全是没有作用的,随便出一组数据,把所有点间隔染成3,5,然后查4,这样用线段树不知道要跑多久。。。 题解说这题是裸的分块HASH。。还没写过,学习了。其实就是将原区间划分乘sqrt(n)个区间,每次暴力查询和跟新两边的区间,中间的区间直接用hash存每种颜色的节点的数量。这里用到了类似线段树的lazy思想,区间成段修改直接打个标记,等到要划分这个区间的时候先把... 阅读全文
posted @ 2012-09-23 11:11
Burn_E
阅读(460)
评论(0)
推荐(0)
摘要:
求把一个数拆成N个非1的数相乘的方案数有多少种(顺序不一样的算不一样的)。 如果不考虑是否为1的方案数,对原数所有的质因数直接用插板法然后乘起来就可以了,麻烦的是有一个所有数都不能为1的问题,这里可以用容斥原理组成。用f(i)表示有i~N个1的方案数,用x[i]表示确切有i个0的方案数。我们可以得到如下方程组:f(0)=1x[0]+1x[1]+1x[2]+1x[3]+....;f(1)= 1x[1]+2x[2]+3x[3]+....;f(2)= 1x[1]+3x[3]+...;f(3)= 1x[3]+...; 比如在算f(1)的时候,假设有3位数,我们枚举每一位为1,会产生重复的情况... 阅读全文
posted @ 2012-09-23 10:57
Burn_E
阅读(323)
评论(0)
推荐(0)
浙公网安备 33010602011771号