摘要: 当模数为素数时可以用费马小定理求逆元。 模数为合数时,费马小定理大部分情况下失效,此时,只有与模数互质的数才有逆元(满足费马小定理的合数叫伪素数,讨论这个问题就需要新开一个博客了)。 (对于一个数n,所有小于它且与它互质的数组成一个模n乘法群) gcd是最大公约数,扩展gcd则是在一对数x,y的gc 阅读全文
posted @ 2019-08-02 22:28 Isakovsky 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 将一些计算几何常用的板整理一波 tips: 点与凸包的关系,计算凸包每条边与点的叉乘,如果出现0,则在凸包边上,出现两个0,则在凸包顶点上,正负性均相同,则在凸包内,否则在凸包外。 线段与凸包的关系,是两个点与凸包的关系的笛卡尔积。 直线与凸包的关系,可求凸包上每点与直线叉乘的正负性。 两线段的关系 阅读全文
posted @ 2019-08-02 20:22 Isakovsky 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 题意: 给你长度最长为1000的字符串,这个字符串中最多有10种字母,每次给你两种字母,输出这两种字母在字符串中的相对位置,问你这个字符串原本是什么样子,如果不存在则输出-1 题解: 把整个字符串看作集合,每一个字符看作一个集合中的元素,字符串的前后关系看作偏序关系,作出这个集合的哈斯图,在哈斯图上 阅读全文
posted @ 2019-08-02 19:54 Isakovsky 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定两个由数字组成的序列s,t,找出s所有数值大于t的子序列。注意不是字典序大。 题解: 首先特判s比t短或一样长的情况。 当s比t长时,直接用组合数计算s不以0开头的,长度大于t的所有子序列数量。 然后再去看s的和t一样长的子序列。 就是在找s和t的公共子序列,并且一旦某一位s比t大了,就 阅读全文
posted @ 2019-08-02 18:43 Isakovsky 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定$x_0,x_1,a,b,n,mod, x_i=a*x_{i-1}+b*x_{i-2}$ ,求$x_n % mod$ n最大有1e6位 题解: 矩阵快速幂。 巨大的n并不是障碍,写一个十进制的矩阵快速幂就行了。 $ \begin{bmatrix}x_n \\ x_{n-1} \end{b 阅读全文
posted @ 2019-08-01 20:44 Isakovsky 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定一个n,输出一个数,要求这个数所有位之和整除n,并且这个数也整除n,并且位数不许多于1e4 题解: 把这个数n输出n遍。 阅读全文
posted @ 2019-08-01 20:31 Isakovsky 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 题意: 给你重量分别为1到n的n个石头,让你分成重量相等,数量也相等的k组,保证k是n的约数。问你能不能分配,如果能,输出具体的分配方案。 题解: 首先,如果1到n之和不能整除k,那么一定不能如题意分配。 否则一定能。 设m=n/k。m是每组分到的石头块数。我们把n块石头排成这样m*k的矩阵,假设1 阅读全文
posted @ 2019-08-01 12:00 Isakovsky 阅读(572) 评论(0) 推荐(1) 编辑
摘要: 题意: 给你一个数字拼图,问你数字拼图能否能复原成原来的样子。 题解: 数字拼图的性质是,逆序数奇偶相同时,可以互相转化,逆序数奇偶不同,不能互相转化。 因此统计逆序对即可。 阅读全文
posted @ 2019-07-31 23:19 Isakovsky 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 题意: 一个完全图,某两点边权为这两点编号之按位与,求最小生成树,输出字典序最小的。 题解: 如果点数不为$2^n-1$,则每一点均可找到一点,两点之间边权为0,只需找到该点二进制下其最左边的0是第几位,与此位为1,其他位都为0的点相连,此边边权为0。 否则,第$2^n-1$点以此法找到的最小点是$ 阅读全文
posted @ 2019-07-31 23:15 Isakovsky 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定一组数,共n个,第i次把第i个数扔进来,要求你删掉前i-1个数中的一些(不许删掉刚加进来这个数),使得前i个数相加的和小于m。问你对于每个i,最少需要删掉几个数字。 题解: 肯定是优先删大数,一开始想的方法类似于尺取,就是维护一个大顶堆作为现有的数,小顶堆作为要删的数,每次大顶堆的元素总 阅读全文
posted @ 2019-07-30 23:10 Isakovsky 阅读(270) 评论(1) 推荐(0) 编辑