math
bllsll
巴拉拉,起飞。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
GCD HDU - 1695 莫比乌斯反演
第一道莫比乌斯反演的题目http://blog.youkuaiyun.com/lixuepeng_001/article/details/50577932 题意:求gcd(x,y)=k,(1<=x<=b,1<=y<=d) 的x,y的对数。 首先就是求gcd(x/k,y/k)=1 的对数,也就是在(1<=x<=b/k,1<=y<=d/k)中x和y互质的对数。 设 F[n]表示gcd(x,y)=n 的倍数的原创 2017-07-08 00:35:11 · 325 阅读 · 0 评论 -
欧几里得算法及其拓展
欧几里得算法,就是辗转相除法,来求最大公约数求线段上格点的个数 参考 https://zhidao.baidu.com/question/626799132816882324.html 题目描述 给定平面上的两个格点P1=(x1,y1)和P2=(x2,y2),线段P1P2上,除P1和P2以外一共有几个格点并打印出格点坐标? 限制条件: -1000000000<=x1,y1,x2,y2<=原创 2017-05-25 19:10:22 · 316 阅读 · 0 评论 -
SG函数
http://blog.youkuaiyun.com/luomingjun12315/article/details/45555495 (后面的sg函数及其实例取石子问题来源)这篇博客讲的蛮好的。 组合游戏的和,假设有k个游戏,每次在当前回合,游戏者可以选择其中的一个游戏进行操作,然后保证其他游戏的局面不变,也就是说一次只能玩一个,不能同时玩。最后不能操作的人输。其中nim游戏就是这种组合游戏特殊的一种,每一原创 2017-07-12 16:07:24 · 393 阅读 · 0 评论 -
玲珑杯 1160 - 康娜与玲珑杯
题意,在n本书中要拿k本书的倍数的方案,每本书都不同,一本都不拿也算一种方案 1≤k≤3e4或者1≤k≤3e5并且为2的次幂。1≤n≤10181≤k≤3e4或者1≤k≤3e5并且为2的次幂。 1≤n≤10^18 开始以为是求C(n,0)+C(n,k)+C(n,2k)…求不出来 orz看了题解+问了yql大佬之后先是可以得到一个递推式 F[i][j]:表示前i本书,拿j本的方案 F[i][原创 2017-09-15 18:50:30 · 605 阅读 · 2 评论 -
Infoplane in Tina Town HDU - 5392(置换群入门)
题意真是迷,才清楚。。mod yql题意:Town将一个序列1….n,打乱成序列A,给你序列A,问你经过多少次置换才能 回到A。也就是说,宏这个操作并不是直接两个数直接交换,而是进行置换的乘法。解释下样例1 3 2 的操作应该为 1 3 2->1 2 3->1 3 2 2 1 4 5 3 的操作 应该为 2 1 4 5 3->1 2 5 3 4->2 1 ?忽然迷住了,这个之后怎么变不成I了然原创 2017-09-19 00:25:04 · 585 阅读 · 0 评论 -
C - CARDS POJ - 1721(置换)
这个小哥哥的代码写的真好看(最近好像没看懂过题意了。。题意:给一个置换,然后进行自己乘自己的操作。给你s次这种操作后的置换,问你一开始的置换是啥自己乘自己,就是说,设p为一开始的置换,T=p*p,T是第一次操作后得到的置换,T1=T*T;,T1是第二次操作之后得到的置换,以此类推有循环节len然后答案就是P置换,操作len-s%len#include <iostream>#include <cst原创 2017-09-19 17:32:19 · 341 阅读 · 0 评论 -
SB树
1.farey 序列(法里序列) POJ - 2478 题意:F2 = {1/2} F3 = {1/3, 1/2, 2/3} F4 = {1/4, 1/3, 1/2, 2/3, 3/4} F5 = {1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5}问Fn有多少项 解法,可以看出来,Fn的解就是从2到n的欧拉函数的和 打个表求欧拉函数就行了,然后可原创 2017-09-21 19:28:07 · 1738 阅读 · 0 评论 -
玲珑杯 1138 - 震惊,99%+的中国人都会算错的问题(容斥原理)
**题意**众所周知zhu是一个大厨,zhu一直有自己独特的咸鱼制作技巧.tang是一个咸鱼供应商,他告诉zhu在他那里面有N条咸鱼(标号从1到N)可以被用来制作.每条咸鱼都有一个咸鱼值Ki,初始时所有Ki都是0.zhu是一个特别的人,他有M个咸数(咸鱼数字),对于每个咸数x,他都会让所有满足标号是x倍数的咸鱼的咸鱼值异或上1.zhu现在想知道经过了这M个咸数的筛选之后,最终有多少条的咸鱼的咸鱼原创 2017-10-14 12:58:48 · 477 阅读 · 0 评论 -
自适应辛普森法求积分
Bridge UVALive - 3485 要计算∫baf(x)dx\int_{a}^{b}f(x)dx 将之放到二维坐标系中,就相当于求面积。 三点辛普森公式:f(a)+4f(min(a,b))+f(b)6\frac{f(a)+4f(min(a,b))+f(b)}{6}#include <iostream>#include <cstdio>#include <cstring>#inclu原创 2017-10-24 13:47:42 · 843 阅读 · 0 评论 -
高斯消元 EXTENDED LIGHTS OUT POJ - 1222
板子题,快记下来~题意:一个5*6的网格,然后每个格子里有一个按钮,如果点击这个按钮,那么这个按钮四周包括自己就会翻转,给一个初始状态(01表示按钮的状态),问如果要翻转成全是0的方法分析:之前做过暴力版的,就是枚举第一行,然后之后的状态都确定下来了~ 高斯也可以来一波 大概意思就是,将每个格子的翻转情况设为xi,然后列方程,解方程,就可以得到答案了。 然后这里还有一个小技巧,用的异或操作,因原创 2017-11-02 01:05:30 · 269 阅读 · 0 评论 -
poj 1830 高斯消元
题意:有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关,如果为关就变为开。你的目标是经过若干次开关操作后使得最后N个开关达到一个特定的状态。对于任意一个开关,最多只能进行一次开关操作。你的任务是,计算有多少种可以达到指定状态的方法。(不计开关操作的顺序)Input输入第一行有一原创 2017-11-02 09:34:20 · 271 阅读 · 0 评论 -
Widget Factory POJ - 2947//gauss模板//用gauss解同余方程组
用gauss解同余方程组,注意一定呀及时取模呀,不然会wa的~ 然后这个模板主要来自KBdalao ~~#include <iostream>#include <cmath>#include <cstdio>#include <algorithm>#include <cstring>#include <vector>using namespace std;#define LL long原创 2017-11-03 19:17:17 · 299 阅读 · 0 评论 -
DP? HDU - 3944 Lucas定理+费马小定理
肯定是尽量走1,因为最左边的1和最右边的1相同,所以我们考虑一边就行了,就考虑(m < k/2) 最后我们推出来的公式为: C(n+1,m)+(n-m)因为C(n+1,m)很大。要用到Lucas定理 什么是Lusac(卢卡斯)定理? Lucas定理是用来求 c(n,m) mod p,p为素数的值。 对于C(n, m) mod p。这里的n,m,p(p为素数)都很大的情况。就不能再用C(n原创 2017-07-09 10:43:56 · 343 阅读 · 0 评论 -
Bell HDU - 4767 Bell 数+CRT+矩阵快速幂
先了解一下Bell 数 Bell数:第n个bell数表示集合{1,2….,n}的划分方案数其实就是第二类stirling数的和;然后提供一个预处理:void Bell(int k,int MOD){ memset(T,0,sizeof(T)); B[0]=1,B[1]=1;T[0]=1; for(int i=2;i<=50;i++) { T[i-1原创 2017-07-24 15:52:15 · 279 阅读 · 0 评论 -
HDU 2050 折线分割平面
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。 Input 输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个正整数n n<= 10000 ,表 示折线的数量。 Output 对于每个测试实例,请输出平面的最大分原创 2017-05-08 19:29:30 · 386 阅读 · 0 评论 -
BZOJ 2440: [中山市选2011]完全平方数 莫比乌斯反演 +容斥原理
题意:输出第k个非平方数及其的倍数的数。我们先二分答案,然后用容斥原理计算那个区间内的符合要求的数。num=总共的数-(2^2的倍数+3^3的倍数+…)+(2^2*3^3的倍数+…)-… 我们发现这里的系数和莫比乌斯反演的函数相同。。然后就用到了#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>原创 2017-07-08 00:33:53 · 449 阅读 · 0 评论 -
2301: [HAOI2011]Problem b 莫比乌斯反演+前缀+容斥原理
Description对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。 Input 第一行一个整数n,接下来n行每行五个整数,分别表示a、b、c、d、k Output共n行,每行一个整数表示满足要求的数对(x,y)的个数 Sample Input 2 2 5 1 5 1 1 5 1 5原创 2017-07-08 00:45:52 · 420 阅读 · 0 评论 -
筛法
问n以内有多少个素数(n<=1e6)埃氏筛法 时间复杂度O(n*loglogn) 内容:从2开始往后扫,表中留下来的最小数字是m,此时m是质数,将m的倍数全筛去。int sieve(int n){ int tot=0; for(int i=0;i<=n;i++) vis[i]=0; for(int i=2;i<=n;i++) { if(!vis原创 2017-08-15 17:49:20 · 938 阅读 · 1 评论 -
Counting Divisors HDU - 6069 筛法+约数定理
题意:given l,rl,r and kk, your task is to calculate the following thing (i from l to r (d(i^k) ))mod998244353 其中d(x) 表示x的因子,比如d(4)=3,因为4的因子有1,2,4分析:打了一个表,然后推出了式子。 x=a^p1*b^p2*…(a,b,…都为质数)原创 2017-08-14 20:13:36 · 308 阅读 · 0 评论 -
Add More Zero HDU - 6033
题意:给你一个m,然后问2^m-1 用十进制表示的位数。分析:开始以为就是大数暴力一下。。根本没动脑子想是数学题。。求x用十进制表示的位数,直接(int)log10(x),因为2^m没有等于10^z,所以减一就可以忽略了。#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <cst原创 2017-07-28 19:10:41 · 334 阅读 · 0 评论 -
Count the Buildings HDU - 4372 第一类striling 数
这个题和我们之前用dp递推的那道题一摸一样,但是数据范围变大了,如果还用之前的方法dp[i][f][p] 就会超空间,然后超时,因为有三层循环。。知识点是:第一类斯特林数(striling 数) s(p)(k)计数的是把p个对象排成k个非空循环排列的方法数。这里相当与我们把n-1个长方体分为(f+p-2)组,然后左边f-1组,右边选p-1种。每组种都是最长的放在左边,过着把最长的放在右边。就是相当原创 2017-07-08 11:06:23 · 318 阅读 · 0 评论 -
Machine scheduling HDU - 4045 第二类striling 数
题意有点难懂,其实就是让你选r个数的间隔不小于k,然后她们的放在m个不区分的盒子里的数量。 第一步,有多少数可以选,我们先选(r-1)个间隔为k的,之后的可以任意选了, 所以为n-(r-1)*k+r-1,然后在这些数中选r个。第二步,是第二类striling数,将p元素划分到k个不可区分的盒子,让k从1到m,求和即可#include <iostream>#include <cstring>#原创 2017-07-09 10:51:33 · 507 阅读 · 0 评论 -
青蛙的约会 POJ - 1061 拓展欧几里得
这个主要是按照公式来,然后数很接近int 的边界了,随手long long~ A 青蛙 (x+m*t)%l B 青蛙 (y+n*t)%l (x+m*t)%l = (y+n*t)%l —-> (m-n)*t+kl=y-x; 然后用通项求出最小解#include <iostream>#include <cstring>#include <algorithm>#include <cs原创 2017-07-22 10:06:09 · 282 阅读 · 0 评论 -
Chessboard HDU - 5100
这个数学题蛮有意思的,在《组合数学》中讲过类似的方法http://www.cnblogs.com/fish7/p/4084218.html 这个讲的蛮清楚的#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <vector>using nam原创 2017-07-07 09:22:30 · 291 阅读 · 0 评论 -
Math Problem HDU - 5105 暴力求解/公式
因为这里l和R 给我们的范围不大,然后考虑暴力的方法。。真的可以#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <cstdio>#include <vector>#include <set>#include <map>#include <queue>using name原创 2017-07-07 00:50:20 · 375 阅读 · 0 评论 -
HDU 2049 神、上帝以及老天爷 错排
题意就是:有n个人,然后每个人不能拿到和自己编号相同的字条 错排:对于第一个位子,有n-1种方法,我们假设放了k,然后对于k的位子,我们如果放了1的话,之后就是对于n-2的错排。如果1不放到k,就可以把k的位置看成“第1个位置”,然后就是n-1的错排 f(n)=(n-1)*(f(n-1)+f(n-2)) 参考http://blog.youkuaiyun.com/cambridgeacm/articl原创 2017-05-08 19:15:09 · 431 阅读 · 0 评论 -
Painter's Problem POJ - 1681 高斯消元+枚举自由元
题意:和开关问题一模一样,就是多了一个求最少操作数的。当解唯一的时候,操作数是一定的。只有有自由元的时候,存在最小解,这个时候枚举自由元就行了。然后因为要枚举自由元,这里freex中放的是自由元#include <iostream>#include <cmath>#include <cstdio>#include <algorithm>#include <cstring>#include原创 2017-11-03 20:35:17 · 372 阅读 · 0 评论
分享