摘要: 进入正题前,先介绍一个计算排列的超好用的工具: next_permutation()和prev_permutation() 这两个函数定义在algorithm库中 参数和sort类似,传入三个参数,数组首位,数组末位的后一个,以及比较函数,当比较函数省略时,默认为less 功能是生成当前这个数组里的 阅读全文
posted @ 2019-08-03 11:55 Isakovsky 阅读(599) 评论(0) 推荐(0)
摘要: 题意: 给定一个多边形,这个多边形的点都在格点上,问你这个多边形里面包含了几个格点。 题解: 对于格点多边形有一个非常有趣的定理: 多边形的面积S,内部的格点数a和边界上的格点数b,满足如下结论: 2S=2a+b-2 证明不难,对于格点长方形显然成立,对于高度为1的直角三角形也显然成立,那么我们想象 阅读全文
posted @ 2019-08-02 23:05 Isakovsky 阅读(447) 评论(0) 推荐(0)
摘要: 当模数为素数时可以用费马小定理求逆元。 模数为合数时,费马小定理大部分情况下失效,此时,只有与模数互质的数才有逆元(满足费马小定理的合数叫伪素数,讨论这个问题就需要新开一个博客了)。 (对于一个数n,所有小于它且与它互质的数组成一个模n乘法群) gcd是最大公约数,扩展gcd则是在一对数x,y的gc 阅读全文
posted @ 2019-08-02 22:28 Isakovsky 阅读(426) 评论(0) 推荐(0)
摘要: 将一些计算几何常用的板整理一波 tips: 点与凸包的关系,计算凸包每条边与点的叉乘,如果出现0,则在凸包边上,出现两个0,则在凸包顶点上,正负性均相同,则在凸包内,否则在凸包外。 线段与凸包的关系,是两个点与凸包的关系的笛卡尔积。 直线与凸包的关系,可求凸包上每点与直线叉乘的正负性。 两线段的关系 阅读全文
posted @ 2019-08-02 20:22 Isakovsky 阅读(210) 评论(0) 推荐(0)
摘要: 题意: 给你长度最长为1000的字符串,这个字符串中最多有10种字母,每次给你两种字母,输出这两种字母在字符串中的相对位置,问你这个字符串原本是什么样子,如果不存在则输出-1 题解: 把整个字符串看作集合,每一个字符看作一个集合中的元素,字符串的前后关系看作偏序关系,作出这个集合的哈斯图,在哈斯图上 阅读全文
posted @ 2019-08-02 19:54 Isakovsky 阅读(226) 评论(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 阅读(189) 评论(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 阅读(149) 评论(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 阅读(307) 评论(0) 推荐(0)