![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学
Luowaterbi
Lazy, Stupid Trash
展开
-
HDU6814 杭电多校第5场 Tetrahedron(其实就两个式子,超简单版)
题意:三个面都是直角的三棱锥,三个棱长分别为a,b,ca,b,ca,b,c(在[1,n][1,n][1,n]中任取)。设顶点到底面的距离hhh,求1h2\frac{1}{h^2}h21的期望。解析:我看官方讲解推导实在太麻烦了,于是写一下这篇博客说一下自己的推法。既然三棱锥三个角都是直角,我们直接把顶点当作坐标原点,三条棱当作三个方向的轴,hhh的求解就转换成了点到面的距离。三维直角坐标系中点(x0,y0,z0)(x_0,y_0,z_0)(x0,y0,z0)到面Ax+By+Cz+D=0A原创 2020-08-05 16:16:59 · 249 阅读 · 0 评论 -
2020牛客多校第七场H-Dividing
题意:在1≤n≤N,1≤k≤K1\leq n \leq N,1\le k\le K1≤n≤N,1≤k≤K范围内,有多少对(n,k)(n,k)(n,k)是传奇对。传奇对的条件是:(1,k)(1,k)(1,k)一定是传奇对;若(n,k)(n,k)(n,k)是传奇对,(n+k,k)(n+k,k)(n+k,k)和(nk,k)(nk,k)(nk,k)都是传奇对。题解:从题意可以看出,应该固定kkk,分析nnn。对于任意一个k,我们来看满足条件的nnn。首先,n=1n=1n=1的时候是传递对,那么在乘n原创 2020-08-01 17:28:09 · 469 阅读 · 0 评论 -
HDU 6555 The Fool
题意:计算 ∑i=1n[ni]\sum\limits_{i=1}^n[\frac{n}{i}]i=1∑n[in] ,是奇数输出odd,是偶数输出even。[x][x][x]表示向下取整。解析:数论分块裸题。#include <iostream>using namespace std;int main(){ int t; cin>>t; for(int it=1;it<=t;it++) { int n,ans=0,k原创 2020-05-24 21:30:06 · 323 阅读 · 0 评论 -
CodeForces1345C1. Simple Polygon Embedding
给一个偶数nnn,代表一个正2∗n2*n2∗n边形,求最小外接正方形的边长。当nnn为偶数时,代表2∗n2*n2∗n一定可以被4整除,那么正方形一定可以和正2∗n2*n2∗n边形的4条边完美贴合。这就是最小的正方形。因为一旦进行旋转,正方形的面积就会增大,那么边长也会增大。计算正方形边长:正2∗n2*n2∗n边形内角用公式来算: α=(2∗n−2)∗π2∗n=(n−1)∗πn\alpha=\frac{(2*n-2)*\pi}{2*n}=\frac{(n-1)*\pi}{n}α=2∗n(2∗n−2)∗原创 2020-05-19 18:04:32 · 309 阅读 · 0 评论 -
POJ3233 Matrix Power Series 矩阵构造+矩阵快速幂
构造一个矩阵发现 所以我们只需要用快速幂计算S的k+1次方,然后将右上方的矩阵减去单位矩阵就是结果。#include <cstdio>#include <cstring>#include <iostream>#define ms(a,b) memset(a,b,sizeof(a))#define...原创 2020-06-13 21:49:38 · 209 阅读 · 0 评论 -
POJ1061 青蛙的约会
扩展欧几里得。几个很弱智的错误点。1、exgcd的引用“&”2、当用p,q代替exgcd的x,y时,递归时仍然写的x,y3、递归时忘了交换x,y位置4、解是c/d*p,不要忘了/d。#include <iostream>#include <algorithm>using namespace std;typedef long long...原创 2020-02-13 21:33:13 · 134 阅读 · 0 评论 -
POJ2480 Longge's problem
基础题,这么暴力的做法竟然能过,服了。。。注意在循环里,有i*i<n这种跟别的数字进行比较的,i的类型要和n统一。#include <iostream>#include <vector>#define pb push_backusing namespace std;typedef long long ll; const int N=15;vec...原创 2020-02-13 19:33:50 · 178 阅读 · 0 评论 -
BZOJ2818 Gcd
转换成即可。先算出欧拉函数,再算出互质对的前缀和pre[n]。注意除了a=1&&b=1的情况,其它的a!=b算是两对。(gcd(a,b)与gcd(b,a))gcd(a,b)=d的个数与gcd(n/d,n/d)=1个数是一样的。注意爆int,要用longlong。#include <bits/stdc++.h>#define ms(a,b) me...原创 2020-02-12 23:47:47 · 112 阅读 · 0 评论 -
HDU5015 233 Matrix 矩阵乘法
矩阵乘法。可以观察出来,每一列往下一列和每一行往下一行递推都是固定的,那么肯定不能把行当状态矩阵,而,可以把列当成状态矩阵。一列一列的往前推。对于2333这些的加可以通过,状态矩阵头上加上两个,23和3,即 来解决。可以推出转移矩阵(n=3的时候) ...原创 2020-02-12 22:20:48 · 155 阅读 · 0 评论 -
POJ3111 Dinkelbach算法
假定一个答案,根据这个答案,计算根据排序,此时我们并不是把最大的个相加跟0比较,而是把最大的个的 如果...原创 2020-02-12 16:53:35 · 697 阅读 · 0 评论 -
AcWing217 洛谷P4316 绿豆蛙的归宿
逆向思维,反向建图,拓扑排序。#include <iostream>#include <queue>#include <vector>using namespace std;const int N=1e5+10;struct node{int v,w;};vector<node>tr[N];queue<int>q;...原创 2020-02-08 23:46:23 · 162 阅读 · 0 评论 -
BZOJ1101 Zap 莫比乌斯函数+数论分块
BZOJ卡流输入输出,把cin,cout改成scanf和printf 就过了。#include <cstdio>#include <iostream>using namespace std;const int N=1e6+5;typedef long long ll;int mui[N],pri[N],vis[N];void get_mui(){ ...原创 2020-02-08 20:15:21 · 131 阅读 · 0 评论 -
Codeforce 451 E. Devu and Flowers 多重集组合数
多重集组合数模板题。#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const ll mod=1e9+7;ll inv,a[25],m;int n;void exgcd(ll a,ll b,ll &x,ll &y){ ...原创 2020-02-07 14:44:42 · 144 阅读 · 0 评论 -
为什么n个节点的二叉树是卡特兰数
刚刚接触卡特兰数的时候,对这个结论很蒙,因为左右括号、火车进站很好理解,结果是个2*n的序列,与卡特兰数的证明可以直接对应。但是对于二叉树,我却很难想到怎么构造成2*n个数的数列。可以把二叉树转换成完全二叉树进行理解。对于n个节点的二叉树,我们把这n个都当作父亲节点,一定可以补充(n+1)个叶子节点,使之成为一棵(2n+1)个节点的完全二叉树。我们把原来的二叉树称作父亲树,即全是父亲节点的...原创 2020-02-06 17:51:45 · 956 阅读 · 0 评论 -
AcWing212 计数交换
这个式子就不再推导了,书上写的很明确,但感觉解释的不是很明白,别的博客都是直接抄的原文,于是写一下自己的理解。解释下这个式子1、为什么不同x,y之间可以直接相加。第一步的交换是把大环 i 拆成 x,y 两个小环,不同的 x,y 第一步当然不同。那么无论后面怎么排,第一步不同,相互之间肯定无重复。2、为什么可以直接。同样的x,y,环里的数不同,那么在拆 i 的...原创 2020-02-04 21:31:11 · 184 阅读 · 0 评论 -
POJ2891 扩展中国剩余定理
最后输出写反了调了半天。。。醉了。。。#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int N=1e6+5;typedef long long ll;ll a[N],b[N];ll gcd(ll a,ll b){return...原创 2020-02-03 18:18:12 · 124 阅读 · 0 评论 -
BZOJ2115
DFS+线性基一开始把初始的1~n扔进线性基了,WA了一发。。我是弱智。。。。#include <cstdio>#include <algorithm>#include <vector>#define pb push_back using namespace std;typedef long long ll;vector<ll>...原创 2020-02-02 18:55:43 · 132 阅读 · 0 评论 -
HDU3949
线性基经典题。在进行高斯消元时,异或基注意必须是当前剩下的最大的。而线性基只需要这一位不是0就行。#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;ll a[10005];int main(){ int T; scanf("%...原创 2020-02-02 17:46:51 · 197 阅读 · 0 评论 -
AcWing206 石子游戏 矩阵乘法
矩阵乘法经典例题。做一个映射把网格看成长度为的一维向量,定义一个行列的状态矩阵,将其转换成一维数组。表示网格的位置石子个数,初始化1且始终为1,象征着给别的网格分发石子的“上帝”。操作长度不超过6,1~6的最小公倍数为60,所以每经过60秒,每个网格的操作序列一定处于最开始的字符处。因此可以把1~60的操作矩阵相乘,再快速幂算它的次方,再乘以...原创 2020-01-31 23:28:20 · 327 阅读 · 1 评论 -
POJ3070
求斐波那契数列第n项。矩阵乘法裸题。关于矩阵乘法某个矩阵只有一行或者一列的循环写法,可以先把三重写出来for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int k=0;k<n;k++) c[i][j]+=a[i][k]*b[k][j];如果前面矩阵只有1行,则删去所有...原创 2020-01-31 17:43:35 · 186 阅读 · 0 评论 -
POJ2417
多次TLE后终于过了。。。把if(hash.find(val)!=hash.end())改成if(hash[val])就过了。。。裸的BSGS算法,甚至省去了很多特判的简单题。#include <cstdio>#include <map>#include <cmath>#include <iostream>using names...原创 2020-01-31 14:59:38 · 189 阅读 · 0 评论 -
POJ3696 The Luckiest number
给L,求L符合条件的最小倍数。条件是这个倍数每一位都是8。要用快速乘,直接乘会爆long long。除以gcd(l,8)是为了消去外面的8。#include <iostream>#include <cstring>#include <cmath>#include <algorithm>#define ms(a,b) memset...原创 2019-12-03 18:36:48 · 119 阅读 · 0 评论 -
POJ3090 Visible Lattice Points
欧拉函数裸题。除了(1,1),(0,1),(1,0)这三个点,只有gcd(x,y)=1的点才会被看到。(实际上可以算上(1,1))对于每一个gcd(x,y)=1的点,对称的gcd(y,x)=1,也是一个可见点,就转换成了求比N小,与N互质的数的个数,×2+3即可。#include <cstring>#include <cmath>#include <...原创 2019-12-03 00:55:51 · 89 阅读 · 0 评论 -
AcWing198 反素数
求不大于N的因子最多中的最小的。因子个数肯定是质因数分解。2e9不同质因子个数不超过10个。质子的指数和不超过30。质子的指数应该小于或等于前一个质子的指数。分解的质因数一定是从2开始连续几个的质数。#include <iostream>#include <cstring>#include <cmath>#define ms(a,...原创 2019-12-02 01:26:54 · 200 阅读 · 0 评论 -
AcWing197阶乘分解
N!的最大质因子不超过N。先质数筛出N以内质数,然后算在N!出现了多少次。对于质数p,只有质数p的倍数才含p。至少含有一个p的有个;含有两个p的有个,但是有一个p已经记在里了,所以p的个数只加,之后p的n次方都同理。#include <iostream>#include <cstring>#include <cmath>#define m...原创 2019-12-01 21:41:26 · 170 阅读 · 0 评论 -
POJ2689 Prime Distance
区间质数转换成区间和数的问题,看到区间只有1e6,所以任务是删去这个区间内所有合数。每一个合数n最小质因子不会超过。首先筛出(1e5)的所有质数,用他们去筛L到R的所有合数即可。#include <iostream>#include <iostream>#include <cstring>#include <cmath>#d...原创 2019-12-01 21:12:08 · 92 阅读 · 0 评论 -
卡特兰数
卡特兰数 — 计数的映射方法的伟大胜利卡特兰(Catalan)数来源于卡特兰解决凸n+2边形的剖分时得到的数列Cn,在数学竞赛、信息学竞赛、组合数学、计算机编程等方面都会有其不同侧面的介绍.卡特兰问题的解决过程应用了大量的映射方法,堪称计数的映射方法的典范.为了便于读者理解,我们先介绍一些卡特兰问题的简单变形,再介绍卡特兰问题及其解法.问题一 进出栈栈是一种先进后出(...转载 2019-09-30 12:46:27 · 185 阅读 · 0 评论