
数学 容斥
文章平均质量分 84
Fsss_7
这个作者很懒,什么都没留下…
展开
-
hdu5514Frogs
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5514题意:给定n,m,有n只青蛙,m块编号0~m-1的围成环石头。初始时所有青蛙都在第0块石头上,然后给定n个整数表示n只青蛙每次跳的固定长度,青蛙一直绕环跳,求最后被跳过的石头的编号之和,同一块石头不多次计算。分析:一看到这个题的时候就想到容斥,以为很容易看到会有多只青蛙跳到同一块石头上。首先我原创 2016-01-16 02:18:29 · 805 阅读 · 0 评论 -
bzoj2669: [cqoi2012]局部极小值
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2669题意:中文题。分析:首先观察到这个题的数据小很容易就想到状压,但是怎么状压呢?我们一步一步来处理问题。首先我们要处理的是题目处理的是'X'的位置一定是极小值,'.'的位置只能是非极小值。但是如果有个3*3的矩阵中全是'.',那么我们怎么才能确定中间那个不会是处理成极小值呢?这里选择原创 2016-09-02 21:52:03 · 560 阅读 · 0 评论 -
hdu5731Solid Dominoes Tilings
链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5731题意:给定n*m的矩阵,求用骨牌覆盖且稳定的方案数。稳定的定义是没有一行或一列的缝隙是直接分割整个矩阵的。分析:预处理出所有矩阵为i*j的覆盖方案,然后按列容斥按行递推。预处理可以看骨牌覆盖,然后按列容斥很简单,按行递推就是代码里的b[j]-=b[k]*a[j-k]啦。详见代码。原创 2016-09-09 17:29:06 · 433 阅读 · 0 评论 -
51nod1678 lyk与gcd
链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1678题意:中文题。分析:比较基础的容斥题,我们预处理出每个i的所有素因子的组合,比如6={2,3,6},那么我们对于a[6]将它加入到sum[2],sum[3],sum[6]中,统计答案时用容斥思想加加减减就行了。O(nlogn)代码:#includ原创 2016-07-08 11:47:09 · 762 阅读 · 0 评论 -
Codeforces Round #356 (Div. 2)E. Bear and Square Grid
链接:http://codeforces.com/contest/680/problem/E题意:给定一个n*n的地图和一个k,地图上有空地和障碍物两种。你能进行之多一次操作,操作:将一块k*k的区域内的所有障碍物清除。问操作完之后最大的一块空地的连通块能有多大。分析:因为n只有500,我们枚举操作打掉的那一个k*k的右下角(i,j)。那么我们只需要用4*k的复杂度去将它周围能连通的块都统原创 2016-06-18 17:49:35 · 839 阅读 · 2 评论 -
计蒜客 遗失的支付宝密码(中等)
链接:https://nanti.jisuanke.com/t/11160题意:中文题。分析:对于中等难度的n=40的情况,我们可以直接枚举所有是square位置的情况2^(n/2)种,然后容斥m^n-至少有1个位置是square+至少有2个位置是square.....就行了。我们可以发现40*40的所有情况我们可以直接本地打表处理出来。详见代码。打表代码:#include#in原创 2016-07-10 13:39:09 · 682 阅读 · 0 评论 -
gdutProblem F: 我是好人4
链接:http://gdutcode.sinaapp.com/problem.php?cid=1039&pid=5题意:中文题。分析:水容斥,因为才10^9所以最多能选9个数。直接dfs所以情况,加个剪枝mul>10^9即可。#include#include#include#include#include#include#include#include#include原创 2016-04-10 18:24:25 · 479 阅读 · 0 评论 -
hdu5297Y sequence
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5297题意:给定多组n,r。有整数1,2,3...INF。除去其中的a^b的数字,2分析:首先我们可以知道我们只要对b是质数的情况进行处理就好了。但是在除去b==2和b==3的时候将b==6的情况减去了2次,这里要容斥。同时我们可以知道最大的b应该小于64。那么我们只要先预处理出代码:#in原创 2016-03-14 21:57:05 · 379 阅读 · 0 评论 -
bzoj1042: [HAOI2008]硬币购物
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1042题意:中文题。。。分析:首先因为4种硬币的面额是不变的而且s最大100000,所以我们先预处理出没有di限制的所有方案数,然后我们去容斥有超出的情况,超出奇数个减偶数个加。O(4*s)代码:#include#include#include#include#inclu原创 2016-02-26 02:19:40 · 344 阅读 · 0 评论 -
Codeforces Round #258 (Div. 2)E. Devu and Flowers
链接:http://codeforces.com/contest/451/problem/E题意:给定n,s,n分析:首先我们考虑忽略pi这个限制,那么我们就只要求C(s+n-1,n-1)即可。但是现在有pi这个限制怎么办呢?容斥即可,我们先考虑一部分花超过了pi的限制,那么我们就减去,但是我们在单独减去a类花超出和b类化超出的时候,对于a,b类花同时超出就减了一次,那么加一次回来,这就是原创 2016-02-26 01:17:58 · 379 阅读 · 0 评论 -
bzoj2393: Cirno的完美算数教室
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2393题意:中文题。。。分析:在10^10以内baka数大概只有几百个设为k个,预处理出来,然后将能互相被整除的两个中去掉大的那个,然后只要容斥就好了,奇数个减偶数个加,因为数字增长得比较快所以其实不会达到2^k,因为当当前这个要处理的lcm>n时我们直接return掉即可,其实在最大的原创 2016-02-25 20:52:18 · 624 阅读 · 0 评论 -
UVA 12075Counting Triangles
题意:给定多组n,m,求一个边长为n*m的网格表中的网格顶点能组成多少个三角形。分析:网格点组成三角形,直接点求就是C((n+1)*(m+1),3)的总的取三个顶点的情况数减去三点共线的情况,我们能直接减去在平行于x轴和y轴的直线上的情况(n+1)*C(m+1,3)+(m+1)*C(n+1,3),还有就是斜线上的三点共线,我们只算斜率为正的直线上的情况,最后*2即可。我们设dp[i][j]表示原创 2016-03-03 17:41:09 · 354 阅读 · 0 评论 -
UVA 1393 Highways
题意:给定多组n,m,求在一个n*m的点矩阵中有多少条至少过两个点的直线。分析:我们设dp[i][j]表示在一个边长为i*j的矩形中,有多少条过点(i,j)的满足条件的直线,那么就有dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+(gcd(i,j)==1),然后我们设在矩形i*j中有多少题目要求的直线为ans[i][j],那么有ans[i][j]=ans原创 2016-03-03 16:17:22 · 319 阅读 · 0 评论 -
uva11806 - Cheerleaders
题意:给多组n,m,k,求在一个n*m的矩阵中选k个格子放入石子的方案,一个格子最多放一个石子,并且要求在第一行和最后一行,第一列和最后一列中至少要有一个石子。分析:如果直接分类讨论的话比较麻烦,我们反向枚举方案,枚举第一行没有石子的情况,最后一行没有石子的情况等等等。。这样是有16种总情况,然后容斥一下就好了。代码:#include#include#include#includ原创 2016-03-02 21:34:29 · 542 阅读 · 0 评论 -
zoj3868GCD Expectation
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3868题意:每次给定一组n,k,接下来有n个整数,求这n个整数形成的任意集合的gcd的k次方之和。分析:n是10^5,集合个数是2^n-1个,这样太暴力了。但是我们观察到a[i]代码:#include#include#include#include原创 2016-01-22 17:59:03 · 520 阅读 · 0 评论 -
bzoj2440: [中山市选2011]完全平方数
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2440题意:中文题。。。分析:莫比乌斯反演的练习题。利用莫比乌斯函数直接容斥即可。。(如果不是全素数呢?而是给定的一些数的平方呢?离散处理在映射到素数表和每一个合数就可以了。然后就一样了。代码:#include#include#include#include#includ原创 2016-01-20 21:49:17 · 602 阅读 · 0 评论 -
hdu1695GCD
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695题意:每组数据给出5个整数a,b,c,d,k,并且保证a=c=1。。。然后求有多少对数对(x,y)&&gcd(x,y)=k&&a分析:首先我们将b/=k,d/=k。然后求1~b和1~d中有多少组数对互质即可。直接遍历1~b中每个数然后在1~d中查询有多少个互质的数即可,设有get(i,j)表示原创 2016-01-16 21:07:07 · 466 阅读 · 0 评论 -
hdu5892Resident Evil
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5892题意:给定n和m表示有一个n*n的矩阵和m个操作,操作1:给出左上角的位置[x1,y1]和右下角的位置[x2,y2],然后给定k表示有k对[a,b]接下来在这个给定的矩阵中每个格子中都添加b个a类物品;操作2:给定左上角位置[x1,y1]和右下角位置[x2,y2],求所有物品在这个矩阵中的奇偶情况原创 2016-09-22 17:17:23 · 831 阅读 · 0 评论