<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[WeRIndex]]></title><description><![CDATA[为了萌神，今天也有在好好编程吗~~]]></description><link>https://blog.youkuaiyun.com/Lbbbbpro029</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lbbbbpro029]]></copyright><item><title><![CDATA[20161005 弱校联萌10.5 H Hash Collision(二分+FFT+dp)]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/52740263</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/52740263</guid><author>Lbbbbpro029</author><pubDate>Wed, 05 Oct 2016 20:34:54 +0800</pubDate><description><![CDATA[本来不咋爱写博客的，但是这题实在让我受益匪浅，所以记录一下。 = =




题目大意是求所有长度为n的只含大写字母的字符串按所给函数进行hash，hash值有多少对相同，结果mod1e6+3。


思路：
刚开始想到用所给的hash函数进行dp，，即记录到第i个字符hash值为j的个数用26个字母递推到第i+1个字符对应的hash值，加上dp（i，j）,是但是考虑了下复杂度是O]]></description><category></category></item><item><title><![CDATA[20160331 UVA11806 Cheerleaders（组合数公式+容斥原理）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029438</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029438</guid><author>Lbbbbpro029</author><pubDate>Thu, 31 Mar 2016 19:34:58 +0800</pubDate><description><![CDATA[题意：
给一个n*m的方针，求把k个石子放在阵中并且保证4条边上都有石子有多少种情况。
思路：
用容斥原理将上下左右四条边没有的情况求出拿总数减掉即可。
#include 

using namespace std;

const int mod=1000007;
int C[510][510];

void solve()
{
    for(int i=0;i<510;i++)
   ]]></description><category></category></item><item><title><![CDATA[20160330 HDU5651 xiaoxin juju needs help（组合数公式）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029397</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029397</guid><author>Lbbbbpro029</author><pubDate>Thu, 31 Mar 2016 19:28:09 +0800</pubDate><description><![CDATA[题意：
随意变换所给字符串顺序，能产生多少回文串。
思路：
只有有一个或没有奇数个相同的字母的串才能产生回文串。
然后回文串的一半进行分析，多个堆进行一个长度为l/2的排列，用组合数公式求解。
#include 
#include 
using namespace std;


long long C[501][501];
const int mod=1e9+7;
void solve(]]></description><category></category></item><item><title><![CDATA[20160330 HDU1695 GCD（欧拉函数+容斥原理）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029339</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029339</guid><author>Lbbbbpro029</author><pubDate>Thu, 31 Mar 2016 19:23:05 +0800</pubDate><description><![CDATA[题意：
求1-b与1-d之间有多少组gcd=k的一对数。
思路：
令b=b/k，d=d/k，原题就变为了求1-b与1-d之间有多少互质的一对数。
假设b
对于[b+1,d]中，将每个数进行素因子分解，用容斥定理（酷炫的二进制）可以求出所有不互质的对数，再用总数减掉。
两部分的和即为所求。
#include 
#include 
using namespace std;

long l]]></description><category></category></item><item><title><![CDATA[20160329 HDU2082 找单词（生成函数）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029298</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029298</guid><author>Lbbbbpro029</author><pubDate>Thu, 31 Mar 2016 19:07:47 +0800</pubDate><description><![CDATA[运用生成函数求对于有权值的多个堆，每个对应的权值有多少种组合方法。
#include 
#include 
using namespace std;

int main()
{
    int T;
    int inp[100];
    long long c1[100],c2[100];
    cin>>T;
    while(T--)
    {
        for(int i]]></description><category></category></item><item><title><![CDATA[20160329 HDU1521 排列组合（指数型生成函数）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029262</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029262</guid><author>Lbbbbpro029</author><pubDate>Thu, 31 Mar 2016 19:02:16 +0800</pubDate><description><![CDATA[指数型生成函数用于解决从n个堆中取东西进行排列的问题。
用double进行处理然后取整。
#include 
#include 
#include 
using namespace std;


double jc(int n)
{
    double ans=1.0;
    for(int i=1;i<=n;i++)
        ans*=i;
    return ans;
}
i]]></description><category></category></item><item><title><![CDATA[20160329 HDU1023 Train Problem II（卡塔兰数）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029229</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/51029229</guid><author>Lbbbbpro029</author><pubDate>Thu, 31 Mar 2016 18:58:34 +0800</pubDate><description><![CDATA[基本的卡塔兰数应用：出栈次序，括号化，凸多边形的三角划分，二叉树的构造等等。
利用递推公式h(n)=h(n-1)*(4n-2)/(n+1)求解
#include 
#include 
using namespace std;

char a[101][10000]={"null","1","2","5","14","42","132","429","1430","4862","16796","]]></description><category></category></item><item><title><![CDATA[20160321 HDU1452 Happy 2004（快速幂）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958564</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958564</guid><author>Lbbbbpro029</author><pubDate>Tue, 22 Mar 2016 21:27:22 +0800</pubDate><description><![CDATA[题意：
求2004的x次方的所有因子的和，结果对29取余。
思路：


还是这个公式，2004=2^2*3*167
因此sigam(n)=(2^(2*x+1)-1)*(3^(x-1)-1)/2*(167^(x+1)-1)/166
因为167%29=22，可以结果可简化为：
ans=((2^(2*x+1)-1)*(3^(x-1)-1)/2*(22^(x+1)-1)/21)%29
]]></description><category></category></item><item><title><![CDATA[20160322 HDU5317 RGCDQ（筛数+树状数组）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958480</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958480</guid><author>Lbbbbpro029</author><pubDate>Tue, 22 Mar 2016 21:14:50 +0800</pubDate><description><![CDATA[题意：
F(n)是n的不同素因子的个数，求在[ L，R ]，区间内最大的gcd(F(i),F(j))。
思路：
可以注意得到数据范围小于1E6，意味着F(n)的取值范围很小（不会超过7）。
很容易想到记每个位置的F(n)，在查询区间时返回区间内各个F(n)的个数，然后判断gcd值的方法。
用素数表将范围内所有的F(n)筛选出来，通过树状数组来求区间和。
#include 
#inclu]]></description><category></category></item><item><title><![CDATA[20160322 HDU4704 Sum（费马小定理+快速幂）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958409</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958409</guid><author>Lbbbbpro029</author><pubDate>Tue, 22 Mar 2016 21:06:23 +0800</pubDate><description><![CDATA[题意：
s(k)为所有元素为正整数并且和为N的k阶向量的个数，求s(1)+s(2)+...s(N)的值。
大意：
可以明显的发现规律为2^(n-1)。对于大数我们可以通过费马小定理化为小于1E9+6的数，之后用快速幂求值。
这个代码乱写的，其实可以优化得更好，本来还准备用java的modpow来A结果卡了java的时间= =。
#include 
#include 
using name]]></description><category></category></item><item><title><![CDATA[20160321 HDU2588 GCD（欧拉函数+枚举）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958317</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958317</guid><author>Lbbbbpro029</author><pubDate>Tue, 22 Mar 2016 20:57:43 +0800</pubDate><description><![CDATA[题意：
求1-n内有多少x满足gcd(x,n)>=m。
思路：
枚举n的因子x，当gcd(x,n)>=m时求n/x的欧拉函数。
因为要使gcd(x*i,n)=gcd(x,n)，i必须与n/x互质，这种情况有phi(n/x)种。
最后求和，即为所求结果。
#include 
#include 

using namespace std;


int phi(int n)
{
    in]]></description><category></category></item><item><title><![CDATA[20160321 CodeForces 7C Line（拓展欧几里得）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958256</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958256</guid><author>Lbbbbpro029</author><pubDate>Tue, 22 Mar 2016 20:44:59 +0800</pubDate><description><![CDATA[题意：
给你a,b,c，求在ax+by+c=0线段上的坐标为整数的点，没有输出-1.
思路：
ax+by=-c符合拓展欧几里得的形式，模板走你，注意a或b为零的处理。
#include 
#include 
using namespace std;

long long exgcd(long long a,long long b,long long &x,long long &y)
{
 ]]></description><category></category></item><item><title><![CDATA[20160321 POJ1006 Biorhythms （中国剩余定理）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958191</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958191</guid><author>Lbbbbpro029</author><pubDate>Tue, 22 Mar 2016 20:40:02 +0800</pubDate><description><![CDATA[题意:
人生来就有三个生理周期，分别为体力、感情和智力周期，它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天，人会在相应的方面表现出色。例如，智力周期的高峰，人会思维敏捷，精力容易高度集中。因为三个周期的周长不同，所以通常三个周期的高峰不会落在同一天。对于每个人，我们想知道何时三个高峰落在同一天。对于每个周期，我们会给出从当前年份的第一天开始，到出现高峰的天数（不一定]]></description><category></category></item><item><title><![CDATA[20160321 POJ2478 Farey Sequence（欧拉函数）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958137</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50958137</guid><author>Lbbbbpro029</author><pubDate>Tue, 22 Mar 2016 20:30:46 +0800</pubDate><description><![CDATA[题意：
求分母小于等于n的所有无法约分的分数的个数。
思路：
显然有F(2)=phi(2)，F(n)=F(n-1)+phi(n)。
即求2-n欧拉函数的和，模板走你。
#include 
#include 
using namespace std;

long long powmod(long long a,long long i,long long n)
{
    if(i==0)]]></description><category></category></item><item><title><![CDATA[20160314 数论专项]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50932379</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50932379</guid><author>Lbbbbpro029</author><pubDate>Sat, 19 Mar 2016 19:16:48 +0800</pubDate><description><![CDATA[A.Prime Independence(素数筛法+最大独立集)
算法还没研究明白，贴个链接。
http://www.2cto.com/kf/201506/404426.html



B.Pairs Forming LCM（素因子分解）
http://blog.youkuaiyun.com/lbbbbpro029/article/details/50897669



C.Sigma ]]></description><category></category></item><item><title><![CDATA[20160317 Uva11395 Sigma Function（素因子分解+各种公式+筛数）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50912804</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50912804</guid><author>Lbbbbpro029</author><pubDate>Thu, 17 Mar 2016 13:29:20 +0800</pubDate><description><![CDATA[题意：
sigma(n)=n的所有因子之和，例如sigma(24) = 1+2+3+4+6+8+12+24=60，求1-n内有多少sigma函数的值为偶数。


思路：
从测试数据可以看出为偶数的情况比较多，所以可以反过来对奇数的情况进行讨论。




从上述公式能够看得出sigma函数的值可以通过分解n的素因子得到。
而对于上述公式可以有如下分析：
1.对于唯一的偶素数2]]></description><category></category></item><item><title><![CDATA[20160315 LightOJ 1236 Pairs Forming（素因子分解）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50897669</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50897669</guid><author>Lbbbbpro029</author><pubDate>Tue, 15 Mar 2016 16:43:51 +0800</pubDate><description><![CDATA[题意：
long long pairsFormLCM( int n ) {
    long long res = 0;
    for( int i = 1; i <= n; i++ )
        for( int j = i; j <= n; j++ )
           if( lcm(i, j) == n ) res++; // lcm means least common m]]></description><category></category></item><item><title><![CDATA[20160315 LightOJ 1236 Pairs Forming LCM]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50897645</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50897645</guid><author>Lbbbbpro029</author><pubDate>Tue, 15 Mar 2016 16:32:21 +0800</pubDate><description><![CDATA[题意：]]></description><category></category></item><item><title><![CDATA[20160314 POJ1061青蛙的约会（拓展欧几里得）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50887084</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/50887084</guid><author>Lbbbbpro029</author><pubDate>Mon, 14 Mar 2016 16:36:08 +0800</pubDate><description><![CDATA[关于拓展欧几里得算法
运用拓展欧几里得算法，可以求出GCD(a,b)，并且求出一组满足AX+BY=GCD(A,B)。
1.当B==0时,X=1，Y=0等式成立
2.当B>0时,有
       BX'+(A mod B)Y'=GCD(B,A mod B)=GCD(A,B)
可以通过变形得到
      AY'+B(X'-A/B*Y')=GCD(A,B)
由此可得 X=Y‘，Y=X'-]]></description><category></category></item><item><title><![CDATA[Codeforce 552D Vanya and Triangles（暴力枚举）]]></title><link>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/49665793</link><guid>https://blog.youkuaiyun.com/Lbbbbpro029/article/details/49665793</guid><author>Lbbbbpro029</author><pubDate>Thu, 05 Nov 2015 17:39:11 +0800</pubDate><description><![CDATA[题意：
给你n个点，从中任取三个点，能组成多少个三角形。
思路：
三个点不能构成三角形的条件是在一条直线上，于是枚举所有情况，将在一条直线上的情况去除。
#include 
#include 
#include 
#include 
#include 
using namespace std;

int x[2005],y[2005];
int v[2005];
int main()
{
]]></description><category></category></item></channel></rss>