自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 后缀自动机1003 HDU 4416

题意: 给一个模式串,然后给n个匹配串,问模式串里有多少个子串是n个匹配串里都不存在的 思路: 就是注意一个性质就行了 假设当前节点的len==6,当前节点的pre节点len==2 这个节点接收的状态就是以当前节点为最后一个字符的后缀的长度是3~6里 比如当前节点的最长后缀是abcabb(sam.len==6),pre节点是b(sam.len==2) 那么当前节点的接收子串是a

2016-08-08 09:55:55 319

原创 后缀自动机1002 SPOJ NSUBSTR

题意: 求长度为i的最多的出现次数 思路: 对于Sam上的每个节点保存匹配串的最长匹配长度 然后再传给父亲节点就行了 #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<math.h> #include<queue> #include<stack> #include<stri

2016-08-08 09:55:00 352

原创 SPOJ LCS2 后缀自动机

题意: 求多个串的LCS 思路: 跟上题一样的东西…. 只不过多加一个临时的dp数组来保存所有的状态的最小值 然后求所有子串的最大值就好了#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<math.h> #include<queue> #include<stack> #i

2016-08-08 09:54:16 231

原创 后缀自动机1001 SPOJ LCS

题意: 就是求LCS 思路: topsort后 每个父亲节点加上子节点的状态就行了吧 至于为什么传给父亲节点 这里Sam里的每个节点有个性质 假设当前节点的len==6,当前节点的pre节点len==2 这个节点接收的状态就是以当前节点为最后一个字符的后缀的长度是3~6里 比如当前节点的最长后缀是abcabb(sam.len==6),pre节点是b(sam.len==2) 那么

2016-08-08 09:53:28 279

原创 UVA 11806 容斥原理

题意: 往一个n*m的方格里放k个石块,问有多少种方式 最后一行,最后一列,第一行,第一列必须放至少一个 思路: 简单容斥一下 最后一行不放为事件r1,最后一列c1,第一行r2,第一列c2 全部情况-c1-c2-r1-r2+c1*c2+r1*r2+c1*r1+c1*r2….. 二进制枚举一下,奇加偶减 #include<stdio.h> #include<string.h> #inc

2016-08-08 09:52:21 229

原创 容斥原理1005 POJ 2773

题意: 求第k个与m互质的数 思路: k可能很大,Ans可能>m 我们可以二分1~mid与m互质的数的个数>=k 然后就是比较简单的容斥了 #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<math.h> #include<queue> #include<stack>

2016-08-08 09:51:45 235

原创 容斥原理1004 POJ 1091

题意: Z城市居住着很多只跳蚤。在Z城市周六生活频道有一个娱乐节目。 一只跳蚤将被请上一个高空钢丝的正中央。钢丝很长,可以看作是无限长。 节目主持人会给该跳蚤发一张卡片。卡片上写有N+1个自然数。 其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字。 跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度。 而他最终的任务是跳到距离他左边一个单位长度的地方,

2016-08-08 09:51:06 281

原创 容斥原理1003 HDU 2204

题意: Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别, 他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣。 这些特殊数是这样的:这些数都能表示成M^K,M和K是正整数且K>1。 正当他再度沉迷的时候,他发现不知道什么时候才能知道这样的数字的数量, 因此他又求助于你这位聪明的程序员,请你帮他用程序解决这个问题。 为了简化,问题是这样

2016-08-08 09:50:26 439

原创 容斥原理1002 HDU 1796

题意: 给一个m大小的数的集合,让你求另外一个集合 集合里的数都 < n,集合里的数都是给的集合的某个数的倍数 问你求的这个集合的最多数量 思路: 求小于n的数并且是t的倍数的个数是(n-1)/t 把每个数都看做一个事件,就求出来(n-1)/A[i] 然后减去两个事件相交的数量,-(n-1)/lcm(A[i]*A[j]) 然后加上三个事件相交的数量,+(n-1)/lcm(A[i]*

2016-08-08 09:49:41 280

转载 杭电。刘春英。老师 写给计算机软件专业的大学生

首先说一说进入计算机专业的目的,我个人是因为十分喜欢IT业,很喜欢折腾电脑,所以在填报志愿是毫不犹豫的在报了的所有的学校都填写的计算机专业,梦想着进入计算机专业后能遇见很多高手,能交到几个知己,谁之进来后却大失所望。计算机专业的学生有很多以前对计算机不怎么了解,而且还有部分人进大学前连计算机摸都没摸过,对计算机很熟悉的很少,高手更是凤毛麟角,大多数人是服从了父母之命,显而易见,目前社会最热的行业是I

2016-08-04 12:48:27 1205

原创 容斥原理1001 HDU 2841

题意: 有n*n的格子,问你从(0,0)能看到多少个点 从x点-y点上没有其他点就代表从x能看到y点 思路: 就是求gcd(x,y)==1的对数 遍历x,然后通过寻找与gcd(i,y)!=1的对数来得到答案 gcd(i,y)!=1 y<=n 对i进行素因子分解 i=p1^e1 * p2^e2 * p3^e3 * … pk^ek Ans+=m/p1+m/p2+…m/pk-m/(p1*

2016-08-02 22:56:03 286

原创 莫比乌斯反演1006 HDU 4675 好题 推荐

题意: 给一个长度为n的数组,每个数<=m,从中选出k个数 改变k个数变为数组bi 求gcd(bi)==(1~m)的方案数 思路: 求gcd的对数 Ans=∑f(d) f(d)是gcd(bi)==d的方案数 F(d)是d|gcd(bi)的方案数 p=ai数组里拥有d因子的数的个数 F(d)=C(p,k-(n-p))((m/d)-1)^k-(n-p)(m/d)^(n-p) 因为

2016-08-02 15:47:44 313

原创 莫比乌斯反演1005 HDU 4746 好题 推荐

题意: 求gcd(x,y)的质因子的个数<=p的对数 思路: Ans=∑(1<=i<=n, f(i)) (f(i)是gcd(x,y)==i的个数 =∑(1<=i<=n, ∑(i|d,mu(d/i)*F(d)) ) (F(i)是i|gcd(x,y)的个数 =∑(1<=i<=n, F(i) * ∑(d|i , mu(d)) ) 由于有ok(i)的存在,我们要对预处理多加一个维度

2016-08-02 13:36:21 286

原创 HDU 1695

题意: 对于给出的 n 个询问,每次求有多少个数对 (x,y) , 满足 a ≤ x ≤ b , c ≤ y ≤ d , 且 gcd(x,y) = k , gcd(x,y) 函数为 x 和 y 的最大公约数。 (x,y)和(y,x)算一对 思路: 跟BZOJ 2301差不多 减去重复的对数,就是n和m的区间交的区间 #include<stdio.h> #include<string.

2016-08-02 13:35:26 276

原创 莫比乌斯反演 1004 BZOJ 2301

题意: 对于给出的 n 个询问,每次求有多少个数对 (x,y) , 满足 a ≤ x ≤ b , c ≤ y ≤ d ,且 gcd(x,y) = k , gcd(x,y) 函数为 x 和 y 的最大公约数。 思路: Ans(a~b,c~d)=Ans(b,d)-Ans(a-1,d)-Ans(b,c-1)+Ans(a-1,c-1) 求gcd(x,y)==k&& x<=n&&y<=m ==

2016-08-01 22:30:26 263

原创 BZOJ 2190

题意: 作为体育委员,C君负责这次运动会仪仗队的训练。 仪仗队是由学生组成的N * N的方阵, 为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方, 根据其视线所及的学生人数来判断队伍是否整齐 现在,C君希望你告诉他队伍整齐时能看到的学生人数。 思路: 观察一下图 就是去掉第一行和第一列,然后求gcd=1的对数 #include<stdio.h> #include<strin

2016-08-01 19:59:24 240

原创 莫比乌斯反演1003 SPOJ VLATTICE

题意: 有一个n*n*n的格子,这个格子是(0~n,0~n,0~n)的 从x点能看见y点,代表从x到y连线上没有其他点 问从(0,0,0)能看到多少个点 思路: 之前有个能量收集那道题跟这道题差不多… 考虑gcd(x,y,z)=1 但是这道题要考虑一些特殊情况,有0的存在 假设x,y,z都!=0,Ans1=∑(1<=T<=n,mu(T)(n/T)(n/T)*(n/T)) 假设x,

2016-08-01 19:58:29 217

原创 莫比乌斯反演1002 BZOJ 2005

题意: 栋栋有一块长方形的地,他在地上种了一种能量植物, 这种植物可以采集太阳光的能量。在这些植物采集能量后, 栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起。 栋栋的植物种得非常整齐,一共有n列,每列有m棵,植物的横竖间距都一样, 因此对于每一棵植物,栋栋可以用一个坐标(x, y)来表示,其中x的范围是1至n, 表示是在第x列,y的范围是1至m,表示是在第x列的第y棵。

2016-08-01 19:57:27 419

原创 莫比乌斯反演1001 BZOJ 2818 莫比乌斯反演例题

题意: 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. 思路: 可以欧拉函数解,比较简单,为了练习一下莫比乌斯反演 很多解释都在代码里面了,这道题基本上就是例题… /**/ #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<math.

2016-08-01 19:56:21 945

原创 BZOJ 2705 欧拉函数

题意: Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题。 现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N)。 思路: ∑gcd(i,N) =∑(d|n,phi(n/d)) ->然后枚举每一个n的因子求phi(n/d)就好了,时间复杂度…估计不出来… #include<stdio.h> #include<string.h> #include

2016-08-01 19:51:37 282

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除