unsigned int Gcd (unsigned int m,unsigned int n){ unsigned int rem; while(n>0){ rem = m % n; m = n; n = rem; } return...
分类:
其他好文 时间:
2014-07-16 23:18:24
阅读次数:
497
KNN最邻近规则,主要应用领域是对未知事物的识别,即推断未知事物属于哪一类,推断思想是,基于欧几里得定理,推断未知事物的特征和哪一类已知事物的的特征最接近;K近期邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比較成熟的方法,也是最简单的机器学习算法之中的一个。该方法的思路是...
分类:
其他好文 时间:
2014-07-07 15:33:04
阅读次数:
182
这题就是个大数减一的题,减一下就能过,n=1时要特殊处理下
#include
#include
char arr[1002];
int main()
{
int t, len, jie;
scanf("%d", &t);
while(t--){
scanf("%s", arr);
len = strlen(arr);
if(len == 1 && arr[0...
分类:
其他好文 时间:
2014-07-06 12:39:34
阅读次数:
191
题目链接:uva 1426 - Discrete Square Roots
题目大意:给出X,N,R,求出所有满足的r,使得r2≡x%N,并且R是一个其中的解。
解题思路:
R2?r2=k?N(R?r)(R+r)=k?N=> aA=(R+r),bB=(R?r),A,B为N的因子
所以枚举A,B,就有r=R?aA=bB?RaA+bB=2?R
拓展欧几里得求解,将所有满足的解放入...
分类:
其他好文 时间:
2014-07-06 00:11:14
阅读次数:
268
题目链接:uva 10951 - Polynomial GCD
题目大意:给出n和两个多项式,求两个多项式在所有操作均模n的情况下最大公约数是多少。
解题思路:欧几里得算法,就是为多项式这个数据类型重载取模运算符,需要注意的是在多项式除多项的过程中,为了保证各项系数为整数,需要将整个多项式的系数整体扩大至一定倍数,碰到先除后模的时候要用逆元。
#include
#include
...
分类:
其他好文 时间:
2014-07-05 11:00:09
阅读次数:
271
题目链接:uva 10090 - Marbles
题目大意:给出n,表示有n个珠子,现在要用若干个盒子来装。有两种盒子,一种价钱c1,可以装t1个珠子,另一种价钱c2,可以装t2个珠子。要求所卖的盒子刚好装n个珠子,并且价钱最小的方案。
解题思路:用拓展欧几里得算法求出xt1+yt2=n的一对解x′和y′,这样就有通解:
x=x′ngcd(t1,t2)+t2gcd(t1,t2)k
...
分类:
其他好文 时间:
2014-07-02 16:26:26
阅读次数:
197
UVA 718 - Skyscraper Floors
题目链接
题意:在一个f层高的楼上,有e个电梯,每个电梯有x,y表示y + k * x层都可以到,现在要问从a层能否到达b层(中间怎么换乘电梯不限制)
思路:对于两个电梯间能不能换乘,只要满足y[i] + xx x[i] == y[j] + yy y[j].然后移项一下,就可以用拓展欧几里得求解,进而求出x,y的通解,然后利...
分类:
其他好文 时间:
2014-06-30 16:26:47
阅读次数:
186
首先求出通项 X=x+b/d*t Y=y-a/d*t (x,y为ax+by=gcd(a,b)的解,d=gcd(a,b))可知我们要求的最小的解是 abs(x+b/d*t)
+ abs(y-a/d*t)
设a>b不是的话,就交换a,b,我们发现上述关于t的方程是 |x+k1*t| + |y-k2*t|,由于a>b所以k2>k1,所以方程一开始右边减小的比左边增加的快
所以当y=k2*t的时候...
分类:
其他好文 时间:
2014-06-30 07:49:37
阅读次数:
244
问题:给定a1a2...an,
和m1,m2...mn,mi之间两两互质,求一个x,使得x/ai=mi
构造方法:
先求出M=∏ni=1mi,
对于每个mi,求出M / mi, 然后和mi利用拓展欧几里得算法求出M/mi?p+mi?q=1时的值,取∑ni=1(p?ai?M/mi)就是答案。
证明:
证明参考了wiki
由于mi之间两两互质,所以gcd(mi,mj)...
分类:
其他好文 时间:
2014-06-26 13:23:15
阅读次数:
279
题目链接:hdu 4828 Grids
题目大意:略。
解题思路:将上一行看成是入栈,下一行看成是出栈,那么执着的方案就是卡特兰数,用递推的方式求解。
#include
#include
typedef long long ll;
const int N = 1000005;
const ll MOD = 1e9+7;
ll dp[N];
ll extendGcd(ll a...
分类:
其他好文 时间:
2014-06-26 06:58:03
阅读次数:
197