![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hdu
伪伪的喵喵
就是这样。。喵。。
展开
-
hdu 3415(单调队列)
hdu 3415(单调队列)题目大意:给出循环队列,求区间长度不大于K的区间最大和,并输出下标 解题思路:记录前缀和,单调队列(升序),max(sum[i] - sum[q[head]], Max); (记录下标位置有点坑)#include <iostream>#include <algorithm>#include <cstring>#include <cstdlib>#define N原创 2015-12-11 09:15:28 · 476 阅读 · 0 评论 -
hdu 2082 F(N)
hdu 2802思路:法一:寻找循环节;法二:公式法F(N)−F(N−2)=N3−(N−1)3F(N) - F(N-2) = N^3 - (N-1)^3F(3)−F(1)=33−23F(3) - F(1) = 3^3 - 2^3F(4)−F(2)=43−33F(4) - F(2) = 4^3 - 3^3F(5)−F(3)=53−43F(5) - F(3) = 5^3 - 4^3F(6)−F(4)=原创 2016-03-29 01:38:32 · 307 阅读 · 0 评论 -
HDU 3923(Polya)
hdu 3923题目大意:给定m种颜色,长度为n的项链,要求旋转和翻转不能重复,求方法数 ;模板题 + 逆元;#include <iostream>#include <cstdio>#define LL long long#define MOD 1000000007using namespace std;LL gcd(LL a, LL b){ return b == 0 ? a :原创 2016-03-30 21:12:42 · 309 阅读 · 0 评论 -
HDU 1695(容斥+欧拉函数+素数分解)
hdu 1695题目大意:求 xϵ(1,n)x \epsilon (1, n), yϵ(1,m)y \epsilon (1,m), gcd(x,y)=kgcd(x, y) = k的x,yx, y的对数;思路:令n<mn \lt mxϵ(1,n)x \epsilon (1, n), yϵ(1,n)y \epsilon (1,n), num1gcd(x,y)=φ(nk)num1_{gcd(x, y原创 2016-04-07 00:58:20 · 302 阅读 · 0 评论 -
HDU 4497(素数分解+排列组合)
hdu 4497题目大意:已知gcd(x,y,z)=G,lcm(x,y,z)=Lgcd(x, y, z) = G,lcm(x, y, z) = L;求这样的x, y, z有几种,其中(1,2,3)(3,2,1)(1, 2, 3)(3, 2, 1) 算两种;思路:因式分解G=ap11∗ap22∗...∗apkkG = {{a_1^{p_1}}*a_2^{p_2} *...*a_k^{p_k}};L=a原创 2016-04-08 15:06:14 · 522 阅读 · 0 评论 -
HDU 3501(欧拉函数)
hdu 3501题目大意:求小于等于n的与n互素的正数和,结果取模1e9+71e9+7;自己想得比较chun。。。素数分解n,和减去枚举所有不与n互素的数的和;网上看题解发现自己弱爆了。。。思路: 设 共有mm个与nn互质的数, mm为nn的欧拉函数, m=ψ(n)m = \psi(n); 设 ans=∑m−1i=0aians = {\sum_{i=0}^{m-1}a_i}…(1原创 2016-03-30 00:26:01 · 358 阅读 · 0 评论 -
HDU 4349(Lucas 变形)
hdu 4349 题目大意:求组合数(n0)(n1)...(nn)\begin{pmatrix}n\\0\end{pmatrix}\begin{pmatrix}n\\1\end{pmatrix}...\begin{pmatrix}n\\n\end{pmatrix}中计算结果为偶数的个数; 思路:已知(nm)(n>m)\begin{pmatrix}n\\m\end{pmatrix}(n \gt m原创 2016-04-05 21:40:02 · 262 阅读 · 0 评论 -
HDU 1808(鸽巢原理)
hdu 1808题目大意:已知mm堆糖果的数量,挑选其中一堆或多堆(可全选)的和恰好能被整除nn,如果存在输出任意种组合的序号,否则输出no sweets;思路:记录前缀和的取模nn的值为re[i].remre[i].rem;存在re[j].rem−re[i].rem=0re[j].rem - re[i].rem = 0;即说明ans=⎛⎝∑p=i+1ja[p]⎞⎠%n=0ans = \left(\原创 2016-04-20 20:14:43 · 776 阅读 · 0 评论 -
HDU 5675
hdu 5675 题目大意: 判断nn是否可以表示为n=a2−b2n = a^2 - b^2; a,ba, b为正整数; 思路: n=a2−b2=(a+b)×(a−b)=c×d\begin{align}n & = a^2 - b^2 \\ & = (a + b) \times (a - b) \\ & = c \times d\end{align} ∵c,d\because c,原创 2016-05-16 21:07:39 · 294 阅读 · 0 评论 -
hdu 4704(费马,快速幂)
hdu 4704 题目大意:组成N的方法数 即2^(n-1) % (1e9 + 7),即 (n - 1) % (1e9 + 6), n 位大数,分位计算,在使用快速幂。。。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cstdlib>#include <cmath>原创 2015-11-15 21:15:18 · 387 阅读 · 0 评论 -
hdu 2114(立方和)
hdu 2114证明: (1^2 + 2 ^ 2 + … + n^2) = n(n+1)(n + 2)/6;(排列组合法) (排列组合法) #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cstdlib>#include <cmath>#define LL原创 2015-11-16 19:02:55 · 353 阅读 · 0 评论 -
hdu 1060(取前n位)
hdu 1060题目大意:求n^n次的首位n^n = a * 10^m(科学计数法); n * lg(n) = lg(a) + m; tmp = n * lg(n) = lg(a) + m; lg(a) = tmp - m; a = 10^(tmp - m) = 10^(tmp - floor(tmp));如果为前四位, a * 1000;#include <iostream>#inclu原创 2015-12-09 13:57:24 · 249 阅读 · 0 评论 -
hdu 1163(九余数定理)
hdu 1163九余数定理: ans = a1 * a2 * a3 * … * an; t = ans的各个位数之和的最终值; t = ans % 9 (if (ans == 0) ans = 9);#include <iostream>using namespace std;int quick_pow(int x, int n, int MOD){ int res = 1;原创 2015-12-18 20:13:39 · 415 阅读 · 0 评论 -
hdu 3032(博弈)
题意: 有两种操作可选:1.从一堆中拿任意多个(不为0)2.将其中任意一堆分为两堆。不能再操作者输。 sg[0] = 0; sg[1] = 1; n = 2, 可分为0, 1, (1, 1)sg[2] = 2; 以此类推,打表观察得 n % 4 == 1 || n % 4 == 2, sg[n] = n; n % 4 == 0, sg[n] = n - 1; n % 4 == 3,转载 2015-11-11 20:35:47 · 437 阅读 · 0 评论 -
hdu 4193(单调队列)
hdu 4193(单调队列)题目大意:求长度为n的循环数组中,长度为n不重复连续大于0的数字和的个数。。循环队列:将数组复制一遍开为2*n; 单调队列:此处记录递增序列,q[i] 记录下标;入队操作,从后往前扫,删除比当前元素大的元素,添加当前元素;出队操作,删除该元素位置 - 队首元素位置 > n - 1的元素(即不同框的元素)用a[i](从1开始)记录i的前缀和#include <iostr原创 2015-12-09 22:19:43 · 313 阅读 · 0 评论 -
hdu 1722(gcd)
hdu 1722思路:n刀将蛋糕切成n块,计算最多有几刀重合, 例:4 6 分成4份,切在0°,90°,180°,270°; 分成6份,切在0°,60°,120°,180°,240°,300°; 总的刀数减去重合的刀数(gcd(a, b))#include <iostream>using namespace std;int gcd(int a, int b){ return b原创 2015-12-18 19:20:51 · 318 阅读 · 0 评论 -
hdu 5597(欧拉,找规律)
hdu 5597打表f(x) = x + 1,找规律,欧拉函数#include <iostream> //打表找规律#define LL long long#include <cmath>using namespace std;LL c(int a, int b){ LL t = 1; if (a > b - a) { a = b - a; }原创 2015-12-12 22:57:08 · 296 阅读 · 0 评论 -
hdu 5212(容斥)
hdu 5212(容斥)参考http://blog.csdn.net/lyhvoyage/article/details/45306211题目大意:给出n个数,求gcd(a[i], a[j]) * gcd(a[i], a[j] - 1)的和.两数互素,gcd(a[i], a[j]) * gcd(a[i], a[j] - 1)为0; 求任意一个以x为gcd的数对在数列中有k,则最多有k*k个数对的g原创 2015-11-15 16:15:14 · 273 阅读 · 0 评论 -
hdu 3951(博弈,成环)
hdu 3951(成环删除)题目大意:有n个点成环,每次可删除1~k个,无法操作者输。一次取完先手胜。 一次未取完,出现链,后手一次取完胜,或后手将其分为相等的两份胜。#include <iostream>#include <algorithm>#include <cstring>#include <cstdlib>#include <cmath>#define LL long long原创 2015-11-12 22:11:57 · 376 阅读 · 0 评论 -
hdu 5366(排列组合)
hdu 5366题目大意:一排有N块砖,在砖上放木人桩,每个木人桩之间至少隔两块砖,求共有多少种可能。思路: i = 1, ans = n; for i = 2 to (n+2)3(n+2) \over 3 left = n - (3 * i - 2); ans += c[lef+i][i];#include <iostream>#define N 60#define LL __int6原创 2015-12-22 15:07:02 · 387 阅读 · 0 评论 -
hdu 4045(组合数学,第二类斯特林数)
hdu 4045 题目大意:从n台机器中取r台,要求任意两台的序号差不小于k,再将这r台机器最多分为m组(每不为空),求共有多少种可能;思路: 在选中的r台机器两两间插入k - 1台机器; 例如:r = 3, k = 3 : 1 0 0 1 0 0 1 0 0 1 (1 为选中的) 剩余t = n - ((r - 1) * ( k - 1) + r) = n - ((r - 1) * k原创 2015-12-19 15:06:27 · 585 阅读 · 0 评论 -
HDU 5676(枚举 + 二分)
hdu 5676 题目大意: 已知幸运数的条件为其十进制的每一位都由44和77组成,且44和77的个数相同; 思路: 从小到大枚举每一位幸运数,二分寻找,特判大于77..744..4(9个7,9个4)77..744..4(9个7,9个4)的数字;#include <iostream>#include <cstdio>#include <algorithm>#include <cstri原创 2016-05-17 10:24:25 · 269 阅读 · 0 评论