<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[leonharetd的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/leonharetd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; leonharetd]]></copyright><item><title><![CDATA[The Settlers of Catan(uva539简单的回溯)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/17000669</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/17000669</guid><author>leonharetd</author><pubDate>Thu, 28 Nov 2013 09:16:51 +0800</pubDate><description><![CDATA[题意：求无向图的最长链，点可以重复，边不可以重复
思路：暴力解决
每个点都有可能变成起始点，所以用每个点都暴力找到每个点的所有能走的路，用visit[i][j]保存走过的边，如果边没走过，就走，否则就不走
邻接矩阵简历表，发现有边可以走，就走过去从该点开始往下遍历
#include
#include
#include
#include
using namespace std;

int m]]></description><category></category></item><item><title><![CDATA[Babelfish(poj2503字符串处理)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/16967411</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/16967411</guid><author>leonharetd</author><pubDate>Tue, 26 Nov 2013 16:57:59 +0800</pubDate><description><![CDATA[题意：给你每个单词对应的意思，再输入一个单词，说出他的意思，如果单词不存在输出eh
思路：hash表保存单词，用另一个单词当做键值，实现快速查找
#include
#include
#include
#include
using namespace std;

struct str
{
    char s[12];
    char s_str[12];
}Node;
vector v[10]]></description><category></category></item><item><title><![CDATA[Birthday Cake (uva10167简单暴力枚举)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/14005709</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/14005709</guid><author>leonharetd</author><pubDate>Fri, 01 Nov 2013 18:49:20 +0800</pubDate><description><![CDATA[题意：有一个半径100，圆形(0,0)的蛋糕，上面有很多樱桃，有一对双胞胎要平分蛋糕，并且平分上面的樱桃，问你切的那刀的直线的Ax+By = 0的A,B是多少范围都在[-500,500]
思路：因为范围在[-500,500]，所以枚举A,B,统计在直线上面的和在直线下面的樱桃，把樱桃的坐标带入，如果>0说明在直线的上方，

#include
#include
#include
#includ]]></description><category></category></item><item><title><![CDATA[计算直线的交点数(hdu1466简单的dp)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13600389</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13600389</guid><author>leonharetd</author><pubDate>Tue, 29 Oct 2013 21:07:03 +0800</pubDate><description><![CDATA[题意：平面上有n条直线，且无三线共点，问这些直线能有多少种不同交点数。比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。
思路：动态规划,想办法记忆化搜索，当前状态和之前状态结合起来
dp[i][j] i是有i条直线 j代表交点个数
假设有n条直线，前n-1条直线的所有交点都知道
假设第n条线段与前n-1条平行 n条平行    交点数   0
假设第n条线段与前n-2条平行]]></description><category></category></item><item><title><![CDATA[Chinese remainder theorem again(hdu1788中国剩余定理)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13168489</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13168489</guid><author>leonharetd</author><pubDate>Sun, 27 Oct 2013 11:34:39 +0800</pubDate><description><![CDATA[题意：一个正整数N除以M1余(M1 - a)，除以M2余(M2-a), 除以M3余(M3-a),总之， 除以MI余(MI-a),其中（a
思路：化简式子
N = M1-a mod M1
N = M2-a mod M2
N = m3-a mod M3
写成 N + k1*M1 = M1 -a --> N+ k1*M1 +a = M1 也就是
N + k1*M1 +a = 0 mod M1]]></description><category></category></item><item><title><![CDATA[Biorhythms(poj1006中国剩余定理)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13168039</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13168039</guid><author>leonharetd</author><pubDate>Sun, 27 Oct 2013 11:07:54 +0800</pubDate><description><![CDATA[题意：三个高峰周期分别为23,28,33，给你一个d这一年过了几天,p,e,i表示前一次三个高峰距d过了多少天，求三个高峰在d之后的第几天出现
思路：中国剩余定理 ：http://blog.youkuaiyun.com/leonharetd/article/details/13167615
根据题意列同与方程
d = p mod 23
d = e mod 28
d = i mod 33
解同余方程]]></description><category></category></item><item><title><![CDATA[中国剩余定理]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13167615</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13167615</guid><author>leonharetd</author><pubDate>Sun, 27 Oct 2013 10:26:29 +0800</pubDate><description><![CDATA[若m1,m2,m3,m4.....mr是两两觳觫的正整数，则同与方程
x = a1 ( mod m1)
x = a2 ( mod m2)

x = a3 ( mod m3)

..............................
x = ar ( mod mr)

有模M = m1*m2*m3*.....mr的位移解，即为中国剩余定理

在《孙子算经》中有这样一个问题]]></description><category></category></item><item><title><![CDATA[Raising Modulo Numbers(poj1995快速模运算)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13167479</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13167479</guid><author>leonharetd</author><pubDate>Sun, 27 Oct 2013 09:14:23 +0800</pubDate><description><![CDATA[题意：(A1B1+A2B2+ ... +AHBH)mod M.
思路：快速幂算出每一个，然后加在一起，这里快速幂最好不要用递归，容易爆，还是二进制思想吧


#include
#include
#include
#include
using namespace std;

typedef long long int64;

int64 quick_mod(int64 a,int64 n,i]]></description><category></category></item><item><title><![CDATA[Matrix Power Series(poj3233快速幂+矩阵二分幂+分治)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13167419</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13167419</guid><author>leonharetd</author><pubDate>Sun, 27 Oct 2013 09:02:45 +0800</pubDate><description><![CDATA[题意：给定一个n*n的矩阵和一个整数k，计算 S = A +A^2 +A^3 + .....+ A^k
思路：不能暴力，会超时的所以我们要想一个办法化简，对于原式可以提取公因式
 S = A +A^2 +A^3 + .....+ A^k/2 + A^k/2 * (A +A^2 +A^3 + .....+ A^k/2)

这样我们就可以只算A到A^k/2,同理这之间也可以用刚才的方法不停地二]]></description><category></category></item><item><title><![CDATA[Mod Tree(hdu2815高次线性同余方程)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13129373</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13129373</guid><author>leonharetd</author><pubDate>Sat, 26 Oct 2013 21:49:40 +0800</pubDate><description><![CDATA[题意：求每个节点有K个儿子，计算最小深度D的节点数对P取模的结果是N，K^D = N( mod P )的最小D值 如果无解输出 Orz,I can’t find D!
思路：baby__giant算法
分两种情况
第一种 : 当A 和C互质的时候
m = sqrt(C);
A^x = A^i*m+j = B (mod C)
A^i*m*A^j = B ( mod C)
两边除以A^i]]></description><category></category></item><item><title><![CDATA[A/B(hdu1576 乘法逆元)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13095191</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13095191</guid><author>leonharetd</author><pubDate>Sat, 26 Oct 2013 17:18:16 +0800</pubDate><description><![CDATA[题意：要求(A/B)%9973，但由于A很大，我们只给出n(n=A%9973)(我们给定的A必能被B整除，且gcd(B,9973) = 1)。


思路：求乘法逆元

满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。当且仅当gcd(k,p) = 1,如果可逆则可定义除法 x/k = x * a mod p

 

为什么要有乘法逆元呢？

当我们要求（a/b） m]]></description><category></category></item><item><title><![CDATA[Hello Kiki(hdu3579线性同与方程)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13093995</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13093995</guid><author>leonharetd</author><pubDate>Sat, 26 Oct 2013 15:13:43 +0800</pubDate><description><![CDATA[题意：X = Ai (mod Mi) 给你Ai和Mi 计算最小正整数x，最小正整数解不能是0，如果为0那么解就是n个Ai的最小公倍数
思路：线性同余方程组
线性同余方程组解法：http://blog.youkuaiyun.com/leonharetd/article/details/13090883

#include
#include
#include
#include
using namespac]]></description><category></category></item><item><title><![CDATA[X问题(hdu1573线性同余方程)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13093839</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13093839</guid><author>leonharetd</author><pubDate>Sat, 26 Oct 2013 14:53:46 +0800</pubDate><description><![CDATA[题意：求在小于等于N的正整数中有多少个X满足：X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0 
思路：解线性同余方程组求出满足上面等式最小的x是多少,因为他们的通解为 x+ lcm(a0,a1,a2,a3...an)，所以求出最小的解，计算M-x之间有多少个 lcm(a0,a1]]></description><category></category></item><item><title><![CDATA[C Looooops(poj2115线性同余方程)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13093691</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13093691</guid><author>leonharetd</author><pubDate>Sat, 26 Oct 2013 14:37:27 +0800</pubDate><description><![CDATA[题意：A + nC = B (mod 1 

思路典型的线性同余方程
不知道怎么解的看这里：线性方程求解 http://blog.youkuaiyun.com/leonharetd/article/details/13090883

#include
#include
#include
#include
using namespace std;

typedef long long int64;

]]></description><category></category></item><item><title><![CDATA[Strange Way to Express Integers(poj2891线性同余方程组)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13092999</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13092999</guid><author>leonharetd</author><pubDate>Sat, 26 Oct 2013 13:17:44 +0800</pubDate><description><![CDATA[题意：n = ai( mod ri) 给你 n 个 ai 和 ri 求最小满足的n，如果没有解则输出-1
思路：典型的解线性同余方程组
x = a1 (mod r1)
x = a2 (mod r2)

n1*r1 + a1 = n2*r2 + a2
n1*r1 - n2*r1 = a2 - a1;
用扩展欧几里德算出方程的解xi，再得出
x等于 xs = xi * r1 + a1 ]]></description><category></category></item><item><title><![CDATA[线性同余方程]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/13090883</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/13090883</guid><author>leonharetd</author><pubDate>Sat, 26 Oct 2013 11:37:52 +0800</pubDate><description><![CDATA[一元线性同余方程
定义：a,b是整数，m是正整数，形如 a*x = b (mod m) 且x是未知整数的同余式称为一元线性同余
定理：a,b,m 是整数且m > 0 (a,m) = d,如果d | b,则方程恰有d个模不同余的解，否则方程无解   如 a/d = b/d (mod m/d) 乘以d--> a = b (mod m/d) b一定要是d的倍数方程才有结
由同余方程的定义可得 a*]]></description><category></category></item><item><title><![CDATA[Reduced ID Numbers(poj2769同余定理)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/12918811</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/12918811</guid><author>leonharetd</author><pubDate>Mon, 21 Oct 2013 21:48:30 +0800</pubDate><description><![CDATA[题意：给你一组n个数，找到最小的正整数m，是的当前组内的所有树对m取模均不同余
思路：对当前组枚举除数
1.想要都不相同，枚举是从n开始枚举不是从1开始，鸽巢原理小于n个必有相同的
2.memset初始化的时候，用多少初始化多少,memset(a,0,sizeof(int)*(n+1)),直接sizeof(a)会超时

#include
#include
#include
#includ]]></description><category></category></item><item><title><![CDATA[同余概述]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/12918659</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/12918659</guid><author>leonharetd</author><pubDate>Mon, 21 Oct 2013 21:42:18 +0800</pubDate><description><![CDATA[数学上，两个整数除以同一个整数，若得相同余数，则二整数同余（英文：Modular
 arithmetic；德文：Kongruenz）。同余理论常被用于数论中。最先引用同余的概念与符号者为德国数学家高斯。



同余

同余理论是初等数论的重要组成部分,是研究整数问题的重要工具之一,利用同余来论证某些整除性的问题是很简便的.同余是数学竞赛的重要组成部分.
两个整数a，b，若它们除以整]]></description><category></category></item><item><title><![CDATA[梅森素数(nefu120)]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/12918443</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/12918443</guid><author>leonharetd</author><pubDate>Mon, 21 Oct 2013 21:31:06 +0800</pubDate><description><![CDATA[题意：给你一个p，判断Mp是否是梅森素数如果是输出也是，如果不是输出no
思路：Miller测试判断素数，先算出2^p-1在判断a^(2^p-1-1) 模 2^p余数是否为1.
这道题乘法平方会溢出，所以必须把乘法变成加法

#include
#include
#include
#include
#include
#include
using namespace std;

typedef]]></description><category></category></item><item><title><![CDATA[梅森素数]]></title><link>https://blog.youkuaiyun.com/leonharetd/article/details/12917965</link><guid>https://blog.youkuaiyun.com/leonharetd/article/details/12917965</guid><author>leonharetd</author><pubDate>Mon, 21 Oct 2013 21:25:31 +0800</pubDate><description><![CDATA[梅森素数是指形如2^p－1的正整数，其中指数p是素数，常记为Mp 。若Mp是素数，则称为梅森素数。p=2，3，5，7时，Mp都是素数，但M11=2047=23×89不是素数 
梅森数可能是素数也可能是合数，因此如何对梅森数进行判断是一个很关键的问题
根据费马定理 如果n是素数，有 a^(n-1) = 1 ( mod n) 1 
一个数可能通过Miller测试，但他可能不是素数，庆幸的是，这样]]></description><category></category></item></channel></rss>