dengliugong3918
码龄9年
关注
提问 私信
  • 博客:40,140
    40,140
    总访问量
  • 暂无
    原创
  • 1,325,999
    排名
  • 0
    粉丝
  • 0
    铁粉
  • 加入CSDN时间: 2016-04-02
博客简介:

dengliugong3918的博客

查看详细资料
个人成就
  • 获得2次点赞
  • 内容获得0次评论
  • 获得113次收藏
创作历程
  • 301篇
    2016年
  • 42篇
    2015年
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

357人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

HDU3501 Calculation 2(欧拉函数)

题目求小于n不与n互质的正整数的和。一个结论是小于n与n互质的正整数和=φ(n)*n/2。因为如果a与n互质,那么n-a也与n互质,即若gcd(a,n)=1则gcd(n-a,n)=1,反证法即可证明。也就是说小于n与n互质的数是成对的,且它们的和是n,共有φ(n)/2对。所以小于n与n互质的正整数和=φ(n)*n/2。 1 #include<cstd...
转载
发布博客 2016.02.05 ·
99 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HDU2824 The Euler function(欧拉函数)

题目求φ(a)+φ(a+1)+...+φ(b-1)+φ(b)。用欧拉筛选法O(n)计算出n以内的φ值,存个前缀和即可。φ(p)=p-1(p是质数),小于这个质数且与其互质的个数就是p-1;φ(p*a)=(p-1)*φ(a)(p是质数且p不能整除a),因为欧拉函数是积性函数,φ(p*a)=φ(p)*φ(a);φ(p*a)=p*φ(a)(p是质数且p|a),不知怎么理解。...
转载
发布博客 2016.02.05 ·
102 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

POJ2407 Relatives(欧拉函数)

题目问有多少个小于n的正整数与n互质。这个可以用容斥原理来解HDU4135。事实上这道题就是求欧拉函数$φ(n)$。$$φ(n)=n(1-1/p_1)(1-1/p_2)\dots(1-1/p_m)\tag{p为n的质因子}$$这个通项公式可以通过容斥原理的解法来验证。那么利用这个通项就能在$O(\sqrt[]n)$下计算出φ(n)。 1 #include<cst...
转载
发布博客 2016.02.05 ·
98 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HDU2204 Eddy's爱好(容斥原理)

题目问[1,n]有几个数是$m^k (k>1)$形式。如果这样考虑,m已知k未知,对于每一个m统计其k的数量即$\lfloor log_mn \rfloor$个,再容斥,然而m太多了,完全不可行。而k远远比m还少,应该反过来考虑,m未知k已知,对于每一个k统计其m的数量,即$\lfloor \sqrt[k]n \rfloor$个。由于$n \leqslant 10^{1...
转载
发布博客 2016.02.05 ·
92 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HDU4135 Co-prime(容斥原理)

题目求[A,B]区间内与N互质数的个数。可以通过求出区间内与N互质数的个数的前缀和,即[1,X],来得出[A,B]。那么现在问题是求出[1,X]区间内与N互质数的个数,考虑这个问题的逆问题:[1,X]区间内与N不互质数的个数。于是就可以先处理出N的所有质因数{p0,p1,p2,...,pn}。而[1,X]能被pi整除的数有$\lfloor \frac X{p_i} \...
转载
发布博客 2016.02.04 ·
89 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HDU2841 Visible Trees(容斥原理)

题目。。大概就是有个m*n个点的矩形从(1,1)到(m,n),问从(0,0)出发直线看过去最多能看到几个点。如果(0,0)->(x,y)和(0,0)->(x',y')两个向量平行,那后面的那个点就看不到了。因此给出一个点(x,y),判断它能否被看到,就是是否能找到一个大于1的k,使k|x且k|y。这样,问题就能转变为有几个点的x、y找不到公约数,即有几对x、y,满...
转载
发布博客 2016.02.04 ·
115 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HDU1796 How many integers can you find(容斥原理)

题目给一个数字集合,问有多少个小于n的正整数能被集合里至少一个元素整除。当然是容斥原理来计数了,计算1个元素组合的有几个减去2个元素组合的LCM有几个加上3个元素组合的LCM有几个。注意是LCM。而[1,n]中能被x整除的数字有$ \lfloor \frac nx \rfloor$个,因为设有$t$个,$x \times t \leqslant n$。计算多个数LCM利用...
转载
发布博客 2016.02.04 ·
72 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HDU1576 A/B(乘法逆元)

题目的代数系统可以看作整数模9973乘法群?然后存在乘法逆元。于是题目要求$A \div B \pmod {9973} $其实就相当于求$A \times B^{-1}\pmod {9973} $。只要求出B的逆元就OK了。计算模n下的乘法逆元可以用用扩展欧几里得算法求解,即解下面的线性同余方程:$$ Ax \equiv 1 \pmod {n} $$ 1 #inc...
转载
发布博客 2016.02.04 ·
93 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

POJ2115 C Looooops(线性同余方程)

无符号k位数溢出就相当于mod 2k,然后设循环x次A等于B,就可以列出方程:$$ Cx+A \equiv B \pmod {2^k} $$ $$ Cx \equiv B-A \pmod {2^k} $$最后就用扩展欧几里得算法求出这个线性同余方程的最小非负整数解。 1 #include<cstdio> 2 #include<cstring>...
转载
发布博客 2016.02.03 ·
112 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

POJ1061 青蛙的约会(线性同余方程)

线性同余方程$ ax \equiv b \pmod n$可以用扩展欧几里得算法求解。这一题假设青蛙们跳t次后相遇,则可列方程:$$ Mt+X \equiv Nt+Y \pmod L$$$$ (M-N)t \equiv Y-X \pmod L$$于是就构造出一个线性同余方程,即可对t求解,解出最小非负整数解。 1 #include<cstdio> 2...
转载
发布博客 2016.02.03 ·
130 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

POJ1845 Sumdiv(求所有因数和+矩阵快速幂)

题目问$A^B$的所有因数和。根据唯一分解定理将A进行因式分解可得:A = p1^a1 * p2^a2 * p3^a3 * pn^an.A^B=p1^(a1*B)*p2^(a2*B)*...*pn^(an*B);A^B的所有约数之和sum=[1+p1+p1^2+...+p1^(a1*B)]*[1+p2+p2^2+...+p2^(a2*B)]*[1+pn+pn^2+...+pn^(...
转载
发布博客 2016.02.02 ·
105 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LightOJ1079 Just another Robbery(DP)

题目大概是抢劫银行,每家银行都有一个收益和一个被抓的概率,求在被抓概率小于P的条件下能获得的最大收益。dp[i][j]表示抢劫前i家银行收益为j被抓的最小概率dp[0][0]=0dp[i][j]=min(dp[i-1][j],dp[i-1][j-m[i]]+(1-dp[i-1][j-m[i]])*p[i])最后遍历一遍找答案就是了。 1 #include&...
转载
发布博客 2016.02.01 ·
86 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

LightOJ1005 Rooks(DP/排列组合)

题目是在n*n的棋盘上放k个车使其不互相攻击的方案数。首先可以明确的是n*n最多只能合法地放n个车,即每一行都指派一个列去放车。dp[i][j]表示棋盘前i行总共放了j个车的方案数dp[0][0]=1转移就是从第i-1行转移到第i行,对于第i行要嘛放上一个车要嘛不放,放的话有n-j-1种方法。即dp[i][j]=dp[i-1][j]+dp[i-1][j-1]*(n-j...
转载
发布博客 2016.02.01 ·
127 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

LightOJ1158 Anagram Division(状压DP)

题目问一个数字字符串的不重复全排列有几个能被d整除。dp[S][m]表示用字符集合S构成的%d为m的数字字符串个数dp[0][0]=0我为人人转移,dp[S+{x}][(m*10+str[x]-'0')%d]+=dp[S][m](x∉S)最后的结果再除以各字符出现次数的阶乘就是答案了,即dp[2strlen-1][0]/(t[0]!*t[1]!*t[2]!*t[3...
转载
发布博客 2016.02.01 ·
118 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

POJ1850 Code(组合+康托展开)

题目问一个合法字符串的字典序是第几个,合法的字符串是指里面的字符严格递增。先判断合不合法,然后用类似康托展开的过程去求。大概过程就是用组合数算出某长度某前缀有几个,累加起来。真难一遍写对。。 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 bool isle...
转载
发布博客 2016.02.01 ·
89 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

POJ3252 Round Numbers(不重复全排列)

题目问区间有多少个数字的二进制0的个数大于等于1的个数。用数学方法求出0到n区间的合法个数,然后用类似数位DP的统计思想。我大概是这么求的,确定前缀的0和1,然后后面就是若干个0和若干个1的不重复全排列数。。写得挺痛苦的。。另外A[i][j]表示i个0和j个1的不重复全排列数,即A[i][j]=(i+j)!/i!/j!,这个可以从A[i-1][j]或A[i][j-1]求出来,...
转载
发布博客 2016.02.01 ·
80 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

POJ1625 Censored!(AC自动机+DP)

题目问长度m不包含一些不文明单词的字符串有多少个。依然是水水的AC自动机+DP。。做完后发现居然和POJ2778是一道题,回过头来看都水水的。。。dp[i][j]表示长度i(在自动机转移i步)且后缀状态为自动机第j个结点的合法字符串数dp[0][0]=1转移转移。。。注意要用高精度,因为答案最多5050。还有就是要用unsigned char,题目的输入居...
转载
发布博客 2016.01.31 ·
120 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

HDU3341 Lost's revenge(AC自动机+DP)

题目是给一个DNA重新排列使其包含最多的数论基因。考虑到内存大概就只能这么表示状态:dp[i][A][C][G][T],表示包含各碱基个数为ACGT且当前后缀状态为自动机第i的结点的字符串最多的数论基因数其中ACGT可以hash成一个整数(a*C*G*T+c*G*T+g*T+T),这样用二维数组就行了,而第二维最多也就11*11*11*11个。接下来转移依然是我为人人型,...
转载
发布博客 2016.01.31 ·
95 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

HDU2296 Ring(AC自动机+DP)

题目是给几个带有价值的单词。而一个字符串的价值是 各单词在它里面出现次数*单词价值 的和,问长度不超过n的最大价值的字符串是什么?依然是入门的AC自动机+DP题。。不一样的是这题要输出具体方案,加个字符数组记录每个状态最优情况的字符串即可。另外题目字典序是先考虑长度再考虑每一位单词;特别要注意,有一个非常坑的地方看了Disscus才知道——单词A包含单词B,那么只计算单词A不计算...
转载
发布博客 2016.01.30 ·
101 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

HDU4057 Rescue the Rabbit(AC自动机+状压DP)

题目大概是给几个DNA片段以及它们各自的权值,如果一个DNA包含某个片段那么它的价值就加上这个片段的权值,同时包含多个相同DNA片段也只加一次,问长度l的DNA可能的最大价值。与HDU2825大同小异。dp[i][j][S]表示长度i(自动机转移i步)、后缀状态为自动机第j个结点、包含的DNA片段为集合S 的DNA最大价值dp[0][0][0]=0我为人人转移,从dp...
转载
发布博客 2016.01.30 ·
100 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多