摘要: 题 题意 给出原点(不是(0,0)那个原点)的坐标和一个多边形的顶点坐标,求多边形绕原点转一圈扫过的面积(每个顶点到原点距离保持不变)。 分析 多边形到原点的最小距离和最大距离构成的两个圆之间的圆环就是所求面积。 判断最大距离一定在顶点上,最小距离可能在点上也可能在边上。 如果原点到一个顶点的连线和 阅读全文
posted @ 2016-02-17 15:43 水郁 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 题 题意 给你一个区间,求里面有多少个数是k的次方。 分析 暴力,但是要注意这题范围会爆long long,当k=1e8; l=1;r=1e18时 k²=1e16,判断了是≤r,然后输出,再乘k就是1e24 , ULL 都存不下,就爆了。 所以当 t > r / k 时跳出循环 代码 AC代码 WA 阅读全文
posted @ 2016-02-17 14:27 水郁 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 题 题意 h行w列的矩形格子,“." 代表空的,"#" 代表满的,多米诺是 1*2 的长方体,现在放进格子,给你子矩形的左上角和右上角,问在子矩形里共有多少种放一块多米诺的方法。 分析 如果是空的,我们存为a[i][j]=1;满的为0。 我们可以储存 b[i][j] 表示前 i 行 j 列有多少种放 阅读全文
posted @ 2016-02-17 13:37 水郁 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 题 题意 需要在o(n)时间内,求最大连续的子序列的和,及其起点和终点。 分析 一种方法是一边读,一边维护最小的前缀和 s[i] ,然后不断更新 ans = max(ans,s[j] - s[i]),以及起始位置。 另一种方法是尺取(算是吧),l 和 r 代表起点和终点,一开始l=0,r=1,如果s 阅读全文
posted @ 2016-02-17 12:37 水郁 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 题 题意 n个问题,解决的顺序影响正确的概率,无论之前解决的问题是否答对,当前问题 j 答对概率为max{a[i][j]} (i为解决过的问题)。求答对题目的最大期望和对应的答题顺序。T组测试,T (0 < T ≤ 100), n (0 < n ≤ 10)。 分析 n那么小,就想到状态压缩DP(我不 阅读全文
posted @ 2016-02-17 02:28 水郁 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 题 题意 告诉我们每天要穿第几号衣服,规定可以套好多衣服,所以每天可以套上一件新的该号衣服,也可以脱掉一直到该号衣服在最外面。求最少需要几件衣服。 分析 DP,dp[i][j]表示第i天到第j天不脱第i天之前的衣服最少需要的衣服数量,那就可以由和第j天穿一样的衣服的第k天转移过来,或者再套一件第j天 阅读全文
posted @ 2016-02-16 20:51 水郁 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题 题意 求a关于m的乘法逆元 分析 a x ≡ 1 (mod m) 等价于 ax+my=1 求x的最小正数(不能是0,我就WA在这里了)。 gcd(a,m)!=1 时x不存在。 所以用扩展gcd就可以求了。 代码 阅读全文
posted @ 2016-02-16 20:22 水郁 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 满足 a * k ≡ 1 (mod p) 的k 叫做 a关于p的乘法逆元。另一种表达方法是 k ≡ a-1 (mod p) 逆元在密码学中有广泛应用,AES密码体系的字节替代就是运用了逆元。(不知道说的smg) 应用: 我们知道(a+b)%p=(a%p+b%p)%p (a*b)%p=(a%p)*(b 阅读全文
posted @ 2016-02-16 19:39 水郁 阅读(1729) 评论(0) 推荐(1) 编辑
摘要: 上次排队那题,让我发现减少取余的次数可以减少很多时间。 然后查到一篇文章 高频率调用的函数一定要保证最优化,慎用除法和余数 原po显示404,所以只有别人转载的。 就是说:除法、取余的指令 CPU周期 可以达到加减法的80倍(周期越多越耗时),因此高频率使用的函数里,以及循环次数很大的循环里,可以通 阅读全文
posted @ 2016-02-16 18:48 水郁 阅读(2546) 评论(1) 推荐(0) 编辑
摘要: 取模运算和取余运算是两个不同又相近的运算。 运算规则 都是c=a/b(整除),然后r=a-a*c,r就是a对b取模或者取余的结果。 取余运算的c向0 方向舍入(fix()函数);而取模运算向负无穷方向舍入(floor()函数)。 例子 -7 Mod 4 取余运算c=-1,结果为-3, 取模运算c=- 阅读全文
posted @ 2016-02-16 17:57 水郁 阅读(2066) 评论(0) 推荐(0) 编辑
摘要: 题 题意 有两个队的骑士1到n和n+1到2n,每个骑士只能互相攻击对手队的一个骑士。kernel的意思是在这个kernel里的骑士不会互相攻击,在kernel外的骑士被kernel里的骑士攻击。 现在告诉你所有骑士攻击的骑士,求一个kernel。 分析 没人攻击的骑士一定在kernel里,把没人攻击 阅读全文
posted @ 2016-02-16 16:38 水郁 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 题 题意 f和m两种字母组成字符串,fmf 和 fff 这种为不安全的字符串,现在有2*L个字母,问你有多少安全的字符串。答案mod M。 分析 递推,这题本意是要用矩阵快速幂。不过我发现这题好神奇,只要适当的减少取模的次数,就可以水过去(呵呵呵)。 当时做这题的时候用的是比较奇怪的递推式,然后超时 阅读全文
posted @ 2016-02-15 14:06 水郁 阅读(929) 评论(0) 推荐(0) 编辑
摘要: 题 题意 给你n(1 ≤ n ≤ 106)个数a1..an(0 ≤ ai ≤ 109),再给你m( 2 ≤ m ≤ 103)如果n个数的子集的和可以被m整除,则输出YES,否则NO。 分析 分两种情况: 当n>m时,s[i]表示a[i]前缀和,s[i]%m的取值为0到m-1,由抽屉原理/鸽巢原理可知 阅读全文
posted @ 2016-02-15 01:38 水郁 阅读(752) 评论(0) 推荐(0) 编辑
摘要: 题 题意 有n个点,代号分别为0到n-1,然后第i个点有di个相连点,与i 相连的点的XOR sum 为si,求所有的边。 分析 知识:a^b^a=b,a^b^b=a. 把相连点为1的i存进队列,i的唯一相连点就是S。 然后得到一条边i到s,对i的相连点S,d--,s^=i,就相当于去掉i这个点。 阅读全文
posted @ 2016-02-14 23:28 水郁 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 题 题意 给你一个字符串s1,字符串s2,s1循环移位,使s2包含在s1中,则s2 是s1的亲和串 分析 把s1自身复制一遍接在后面。 方法一: 用strstr函数。 方法二: KMP算法。 方法三: 用C++的string的find函数。 代码 方法一: 方法二: 方法三 阅读全文
posted @ 2016-02-14 17:11 水郁 阅读(366) 评论(0) 推荐(0) 编辑
……