
-----------数学概念与方法-----------
leoxry
天道酬勤,拼搏一个最好的自己送给未来的自己,每天开开心心敲代码就是一种幸福,不计得失,回归刚开始学习时内心的单纯
展开
-
Choose and divide UVA - 10375——埃式筛法+组合数阶乘运算
Think: 1埃式筛法+组合数阶乘运算 2唯一分解定理(算术基本定理)vjudge题目链接以下为Accepted代码/*Eratosthenes筛法+组合数阶乘运算*/#include <cstdio>#include <cstring>#include <cmath>using namespace std;int tp, primes[10004], a[10004], e[100原创 2017-05-25 16:32:52 · 457 阅读 · 0 评论 -
Sum of Different Primes——素数表+dp
Think: 1题意:输入n(n <= 1120), k(k <= 14),询问由k个不同素数相加得到n的方案数,{2, 4},{4, 2}属于一种方案,输入0, 0表示结束,不作处理 2思路:素数表+dp 3反思: 1>dp状态转移方程不理解,需要进行专题练习或知识复习 2>注意状态转移方程中重复元素情况的处理vjudge题目链接 建议参考博客以下为Accepted代码#include原创 2017-06-09 22:05:45 · 468 阅读 · 0 评论 -
Sum of Consecutive Prime Numbers UVA - 1210——素数表+初级dp思想
Think: 1题意:输入正整数n(2 <= n <= 10000),求连续素数之和等于n的方案数 2思路: 1>筛法建立素数表+初级dp思想(从后往前规划得到当前素数可连续组合得到的数值) 2>参考博客:“素数表+区间滑动”,“素数表+区间枚举”vjudge题目链接以下为Accepted代码#include <bits/stdc++.h>using namespace std;int tp原创 2017-06-10 10:22:57 · 356 阅读 · 0 评论 -
Almost Prime Numbers UVA - 10539——打表+lower_bound()查找
Think: 1题意:输入两个正整数l, r(0 < l <= r < 1e12),统计区间【l, r】中有多少个数满足本身不是素数,但有且仅有一个素因子 2反思: 1>int i; 如果(i * i > int 存储范围) 那么 得用 long long 存储 i 2>lower_bound()理解使用: lower_bound()如果link数组中查找不到键值返回的是tp位置,注意原创 2017-06-10 11:59:38 · 349 阅读 · 0 评论 -
CodeForces - 214B——数的倍数的性质
Think: 1题意:输入位数组成元素,求组合后最大的同时是2,3,5的倍数的数 2知识点: 1>同时满足2的倍数和5的倍数的数末位为0 2>满足3的倍数的数各数位累加和是3的倍数 3反思: 1>通过枚举寻找规律的能力需要加强 2>知识点知识面需要扩展 3>代码反思:编程过程中逻辑混淆需要改正,代码实现过程应保持思路的清晰明了;要尝试不断明确思路,提高理解度,进而简化代码长度,简明扼原创 2017-06-22 14:34:54 · 727 阅读 · 0 评论 -
Satisfactory Pairs HackerRank - pairs-again——预处理+不定长数组应用
Think: 1题意:输入n, 求(a, b)满足a < b 且存在x, y使得x*a + y*b = n的二元组个数,要求n, a, b, x, y皆为正整数 2方法:先预处理小于n的数的约数,然后暴力试探+剪枝,试探符合题意的二元组个数,时间复杂度 1/x 从1到n积分,为nln(n)vjudge题目链接 建议参考博客1 建议参考博客2以下为Accepted代码#include <bits原创 2017-06-25 21:22:47 · 423 阅读 · 0 评论 -
821B - Okabe and Banana Trees——数学公式
Think: 1题意:沿着一条线段,在这条线段下点可在线段上,找一个矩形,矩形的边分别与x轴,y轴平行,使得这个矩形的所有整数点的sum_x + sum_y,矩形可退化为一条线段或一个点 2方法:线段数学式子转化+等差数列前n项和(内在规律) 3反思: 1>数据输出结果保证不会超过10e18,自己一开始用int型,Wrong Answer,之后比赛快结束了,匆忙改为long long uns原创 2017-06-26 19:29:25 · 462 阅读 · 0 评论 -
L - 01 Gym - 101078L——数学+double精度
Think: 1知识点:数学+double精度 2题意:给定1个长度不超过4000的01字符串,通过交换两个字符的位置,使得最终状态第一部分全部为0第二部分全部为1,每交换两个字符的位置,损失sqrt(j-i),i,j为交换的字符所在位置的下标,询问到达最终状态最少损失和 3方法:由数学a + b >= 2sqrt(a*b)可推测得到当a, b接近时取得的值逐渐增大,因此最小损失和即使得所加的原创 2017-08-01 19:48:51 · 283 阅读 · 0 评论 -
D - Collatz Gym - 101078D——数学
Think: 1知识点:数学 2题意:输入n, 给定1~n的结点,偶数结点m与m/2结点有绳子连接,奇数结点m与结点3*m+1有绳子连接,询问要剪断n+1之后的绳子与1~n绳子的连接需要剪断多少根绳子 3方法:通过数学关系推导数学公式vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>u原创 2017-08-01 20:14:07 · 309 阅读 · 0 评论 -
【欧拉函数】
1.1欧拉函数定义 首先,需要理解一下什么是欧拉函数,欧拉函数phi(n)的定义为小于等于n且与n互素的整数个数。那么什么是互素呢?互素是指对于两个数a和b,a和b的最大公约数为1(即gcd(a, b) = 1);原创 2017-09-09 21:10:42 · 794 阅读 · 0 评论 -
Prime Gap UVA - 1644——筛法建素数表
Think: 1题意:输入一个整数n,输出后一个素数和前一个素数的差值,输入是素数时输出0,n不超过1299709(第100000个素数),输入0时结束不进行操作 2方法:输入数据范围为【0,1299709】发现可用下标表示,直接用筛法建立素数表然后进行查询即可vjudge题目链接以下为Accepted代码#include <bits/stdc++.h>using namespace std;i原创 2017-06-09 20:57:28 · 468 阅读 · 0 评论 -
Probability|Given UVA - 11181 ——全概率公式
Think: 1>全概率公式:对任一事件A有 P(A)=P(A|B1)*P(B1)+P(A|B2)*P(B2)+…+P(A|Bn)*P(Bn).(或者:p(A)=P(AB1)+P(AB2)+…+P(ABn)).(其中A与Bn的关系为交)——参考自互动百科 全概率公式互动百科链接 理解:将样本空间有二进制字符串表示,1代表元素事件发生的概率,0代表元素事件不发生的概率,例如,n = 4, r =原创 2017-06-03 20:13:45 · 539 阅读 · 0 评论 -
Minimum Sum LCM UVA - 10791——唯一分解定理
Think: 1知识:唯一分解定理++ 2题意分析: 1>n == 1的情况和n 是素数的情况 2>n是单质因子的情况 3>当n = 2147483647时是一个素数,结果应该输出2147483648,超过int范围,应该思考用long long 来存储 4>时间复杂度优化问题,如果单纯遍历n,会超时唯一分解定理(算术基本定理)百度链接 vjudge题目链接 建议参考博客链接以下为A原创 2017-05-25 18:10:19 · 385 阅读 · 0 评论 -
GCD XOR UVA - 12716 ——筛法建立约数表+xor运算+数学规律
Think: 1埃式筛法思想建立约数表 2初始打表寻找运算的数学规律 3xor运算(不带进位的二进制加法) 运算法则1. a ⊕ a = 02. a ⊕ b = b ⊕ a3. a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;4. d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.((a^b) == c <=> a(a^c) == b)5.原创 2017-05-26 12:01:39 · 509 阅读 · 0 评论 -
Irrelevant Elements UVA - 1635
Think: 1埃式筛法筛取素数 2唯一分解定理 3组合数公式(C(k, n) = ((n-k+1)/k)*C(k-1, n))vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <cmath>using namespace std;int is_primes[104000], pr, primes[1040原创 2017-05-27 22:32:13 · 406 阅读 · 0 评论 -
Send a Table UVA - 10820——欧拉函数初级应用
Think: 1分析+欧拉函数 2紫书分析:输入一个n值,判断有多少个二元组(x, y)满足1 <= x, y <= n, 且x, y互素, 可以发现,除了(1, 1)之外,其他的x, y都不相等,设满足x < y 的二元组有f(n)个,则ans = 2*f(n) + 1;由欧拉函数的定义可以得到f(n) = phi[2] + phi[3] + … + phi[n]; 3欧拉函数: phi[原创 2017-05-29 16:23:36 · 442 阅读 · 0 评论 -
Password UVA - 1262——DFS
Think: 1方法: 1>数学规律+DFS or 数学规律+递推 2>暴力枚举 2反思:题意没有理解好,结果一直Wrong Answer(符合对应列都出现的元素没有去重)vjudge题目链接以下为Accepted代码#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int k, an原创 2017-05-30 17:00:27 · 400 阅读 · 0 评论 -
Headshot UVA - 1636——初级概率题目
Think: 1>题意分析:输入一个字符串,代表子弹序列,需要注意子弹序列为圆形可环绕,你的朋友先开了一枪,轮空,现在你来决定直接开枪还是转一下再开枪存活概率高,直接开枪存活概率为P(00)/(P(00)+P(01)),转一下存活概率为P(0)/(P(0)+P(1)),P(00) + P(01) = P(0);以下为Accepted代码#include <cstdio>#include <cst原创 2017-06-01 20:22:22 · 402 阅读 · 0 评论 -
Cows and Cars UVA - 10491——初级概率题目
Think:1>题意理解:假若有三个门,你如果一开始选了牛,然后可以换的时候直接换,那么最后得到车的概率就是最初选了牛的概率:现在题目扩展,有n头牛,m辆车,打开c个门,这时候问按照换门方法得到车的概率,这时候多了情况变化,那就是你一开始选了车,后面换门的时候还是有可能选到车,还有就是如果你一开始选了牛,不一定后面会选到车,因此实际上三门选车问题就成为了一个特殊条件,展开两种情况,第一种情况选牛再原创 2017-06-01 21:32:13 · 354 阅读 · 0 评论 -
B. The Golden Age——math
Think: 1宏定义+set容器+unique()去重函数+筛法 2题意理解:输入x,y,l,r寻找在区间[l, r]中不满足n = x^a + y^b的连续最长长度 3错误反思: 1>数组越界 2>存储的数据大小超出存储变量的存储范围 3>两端临界情况 4>l == r时的情况Codeforces题目链接B. The Golden Age time limit per test原创 2017-06-06 19:15:24 · 830 阅读 · 0 评论 -
Colossal Fibonacci Numbers! UVA - 11582
Think: 1知识点:快速乘+数学规律+取模知识+64位无符号整数与64位有符号整数范围 (有符号型64位整数,值域为:-9223372036854775808 .. 9223372036854775807; 无符号型64位整数,值域为:0 .. 18446744073709551615) 2题目分析: 1>输入两个非负整数a, b和正整数n(0 <= a, b <= 2^64, 1 <原创 2017-05-22 21:58:07 · 465 阅读 · 0 评论 -
【概率&数学期望】A Dangerous Maze LightOJ - 1027
Think: 1知识点:概率&数学期望 2题意: (1):T组测试数据 (2):每组测试数据,n扇门,每扇门对应一个xi,等概率进入任意一扇门,若进入门的xi为正,则xi秒之后离开迷宫,若进入们的xi为负,则xi秒之后返回初始点 (3):询问离开迷宫的数学期望 (4):输出格式:测试数据 期望值最简分子/期望值最简分母 3解题思路: (1)xi > 0: d1 = (1/n) * (原创 2017-11-08 11:35:19 · 393 阅读 · 0 评论