acm_数学
xrivendell7
永不放弃,永不停息
展开
-
CodeForce185A 数学+快速幂取模
A. Plant“` A题必然不会是一道难题。 题目的模型是我们平时最熟悉的划分三角形问题,求的是n次划分后头向上的三角形的个数 枚举找规律猜想,发现向上的三角形的个数为: 1+2+3+到2^n=(1+2^n)*2^(n-1) 根据题目的范围,这是个大数,需要进行快速幂取模运算 AC代码:/*************************************************原创 2016-09-20 01:47:02 · 570 阅读 · 0 评论 -
HDU2256 Problem of Precision 构造递推式+矩阵快速幂
HDU2256 直接去求double会损失精度,肯定不行,所以要构造递推关系去求解 最后注意一下负数取模的处理 AC代码:/************************************************ * By: Xingxing * * Date: 2016-09-26原创 2016-09-26 00:45:56 · 389 阅读 · 0 评论 -
HDU2276 Kiki & Little Kiki 2 矩阵快速幂
HDU2276 题目是一个常见的一路路灯开开关关的问题,要求1代表开灯,0代表关灯,整个路灯围成一个圆,并且当该路灯的左边的路灯是开着的,即1时,状态翻转,其余情况状态不变。 分析状态变化: 得到转台转移矩阵后,矩阵快速幂套路即可 AC代码:/*************************************************************** By: Xingxi原创 2016-09-26 23:43:43 · 376 阅读 · 0 评论 -
HDU 4135 Co-prime 容斥原理
题目链接 统计在大区间[A,B]中与N互质的数的个数,其中A,B都在10的15次方级。暴力肯定不行,正难则反,思考求[A,B]中不与N互质的数的个数,那么该数必然是N的其中一个因子的倍数,所以首先对N的所有因子进行打表,然后根据每一个因子求在[A,B]区间中其倍数的个数。 在不同的因子进行计数的时候可能产生重复,所以进行容斥。 最后,小技巧将区间转化成[1,B]-[1,A-1]求更加方便。原创 2016-10-03 22:51:52 · 357 阅读 · 0 评论 -
HDU 1402 A * B Problem Plus FFT+convert
HDU1402两个大数的乘法 1.首先想到的用java Biginter类可以直接求,确实,比赛的时候肯定用java写这种简单的大数类的题目。 2.如果不用java的大数类,就会想到C++的bignumber模版,但是bignumber在进行乘法运算时也是每一位都要乘,然后再做加法,复杂度依旧大数的位数是50000,那么的算法达到了10^9的复杂度,肯定会TLE 3.想到了FFT,两个整数的乘原创 2016-10-06 11:33:30 · 472 阅读 · 0 评论 -
HDU 5514 Frogs 容斥原理
HDU5514n个青蛙在环形的m个编号为0到m-1的石头上跳,不同的青蛙一次跳过不同数量的石头,问最后这n个青蛙能够跳到的石头的序号之和。 容易得知,每次跳x个石头的青蛙,最终只会落在标号为gcd(x,m)的倍数的石头上,但不同青蛙的情况会有重复,所以需要进行容斥。首先把m的因数打表,求出每一个gcd(x,m),建立vis[i]=1表示需要对第i个因子进行计数,num[i]代表该因数在前i个因子中原创 2016-10-03 22:37:42 · 442 阅读 · 0 评论 -
HDU 5514 Game of Flying Circus
HDU5515 首先这是一道阅读理解题,建议大家一定要好好地读题,不忽略每一个细节。 推荐大家读读这个博客题目翻译 思路比较简单,考虑fighter与speeder相遇在#2到#3的线段和相遇在#3和#4的线段的两种情况,分别卡列方程卡限制条件 一元二次方程最好能够用二分求解,精度好并且能够直接二分解x的范围 下面的解法直接对方程进行求解,过程中注意精度:AC代码,略丑陋:#inclu原创 2016-10-03 22:29:10 · 440 阅读 · 0 评论 -
数学进位制相关模版
快速加模版long long quickplus(long long m,long long n,long long k)//返回m*n%k{ long long b = 0; while (n > 0) { if (n & 1) b = (b+m)%k; n = n >> 1 ; m原创 2016-10-13 01:04:45 · 401 阅读 · 0 评论 -
HDU 4609 3-idiots三个智障 FFT+组合计数
HDU4609 这道三个智障的题目把我做成了智障,先膜拜bin神,他的题解已经很详细 Bin神的HDU4609题解 这里稍作一些解释: num[i]num[i]数组记录的不同长度的strick的个数,num[i]∗num[i]num[i]*num[i]后代表任意可重复地那两根构成的长度的种类数 ,题目要求是不可重复的,所以要进行第一次去重之后考虑num[i]num[i]的前缀和数组sum[原创 2016-10-07 02:00:30 · 1648 阅读 · 0 评论 -
HDU 1757 矩阵快速幂模版
矩阵快速幂模版题,注意k<10的初值即可。#include <iostream>#include <cstdio>#include <cmath>#include <cstring>const int N=10;int k,mod,a[10];using namespace std;struct mat{ int m[N][N]; mat() {} mat un原创 2016-09-19 23:24:47 · 314 阅读 · 0 评论 -
HDU 1575 矩阵快速幂裸题
套矩阵快速幂模版,中间步骤及时mod即可/************************************************************************* > File Name: HDU1575.CPP > Author: Xingxing > Created Time: 2016/9/19 23:30:31 **************原创 2016-09-20 00:01:48 · 312 阅读 · 0 评论 -
HDU 1061 快速幂
HDU1061 求N^N(mod10)的值,最简单就是mod10乘 在这里试了一下快速幂的模版,注意数据开long long 或者__int64才能存下/************************************************************************* > File Name: HDU1061.cpp > Author:Xingxi原创 2016-09-20 00:50:41 · 340 阅读 · 0 评论 -
HDU5879 级数打表
HDU2604Queuing 问题是求,n没有给定范围,应该是无限大,但是题目的精度卡在1e-5是一个世纪难题,但是该问题存在极限PI26\frac{PI^2}{6},这里有它详细的证明,很NB,巴塞尔问题极限证明打表确定n的上限:/************************************************************************* > Fil原创 2016-09-21 13:10:05 · 434 阅读 · 0 评论 -
HDU2604 递推关系+矩阵快速幂
HDU2604Queuing 题目大意求n阶序列,每一位可以填f或者m,求不存在fff或者fmf的字串的个数,根据题目建立递推关系式: 之后用矩阵快速幂套路掉 AC代码:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=4;int l,mod原创 2016-09-21 13:15:38 · 392 阅读 · 0 评论 -
HDU 5895 矩阵快速幂+欧拉降幂公式+指数循环节
题目链接:HDU5895 注意到题目的数据非常之大,并且递归之后求的指数幂非常之大,所以要先知道欧拉降幂公式: ,相当于想成了指数的循环节。 根据递推关系得到: 建立矩阵: 用矩阵快速幂求解出g(n*y),之后再利用快速幂取模求出最后的结果由于数据很大,过程中把数据开大,及时取模。AC代码:#include <cstdio>#include <cstring>#include<原创 2016-09-21 14:42:38 · 1948 阅读 · 1 评论 -
HDU 2842 Chinese Rings 递推+矩阵快速幂
HDOJ2842 Chinese Rings 自己手动推一下前几项,找到递推规律 得到 从而得到状态转移矩阵 利用矩阵快速幂求解即可 AC代码:/************************************************************************* > File Name: hdu2842.cpp > Author: X原创 2016-09-22 02:18:48 · 331 阅读 · 0 评论 -
HDU 5894 hannnnah_j’s Biological Test 组合数取模
HDU5894 问题是求n个不同座位围成一个圆,m个孩子至少间隔k个座位坐,一共有多少种方法。 首先,第一个孩子做,有n种方法。 第一个孩子坐下后,剩下的能够坐的座位有n-1-k*m,将间隔的椅子拿走 剩下的m-1个孩子们一共还有,又因为这是一个圆排列,所以要除以孩子的总数m,最终的结果为中方法。上面仔细思考是用意确定的,接下来是题目的关键,大组合数取模 第一种,利用逆元:因为mod=1e9原创 2016-09-23 01:22:24 · 489 阅读 · 0 评论 -
HDOJ 4549 M斐波那契数列 矩阵快速幂+欧拉降幂公式
HDOJ4549问题递推比较最后的形式为: 其中F(n)为斐波那契数列先用矩阵快速幂求斐波那契数的通项F(n)与F(n-1),由于他们在指数位置上,算出来非常大,所以需要用到欧拉降幂公式,其中(mod)=mod-1,1e9+7是个素数。 最后,用快速幂把F(n)结果算出来即可 AC代码:/***************************************************原创 2016-09-23 20:16:24 · 764 阅读 · 0 评论 -
Hihocoder1388 2016年北京网络赛 FFT
题目链接 题目不难看懂,首先把公式变形: ∑i=0n−1Ai+B(i+k)modn2=∑i=0n−1A2i+∑i=0n−1B2(i+k)modn−2∑i=0n−1Ai∗B(i+k)modn\sum_{i=0}^{n-1} {A_i+B_{(i+k)modn}}^2 =\sum_{i=0}^{n-1}A_i^2+\sum_{i=0}^{n-1}B_{(i+k)modn}^2-2\sum_{i=0原创 2016-10-07 01:27:43 · 866 阅读 · 0 评论