六日游

总体来说……是在懵逼中度过的六天
最可惜的是一直没时间去芙蓉街,我想吃章鱼小丸子啊啊啊啊

Day1
搜索与高精齐飞,前缀共折半一色

前缀和是个比较常用的东西在此略过不表,但是差值维护……挺神奇的,改变一个区间只需改变首尾位置与前/后的差值,再把差值的前缀和求出就是原数组

高精压位,应该平时用不到?
注:printf(“%04d”,x)可补0

以前没有接触过two point这样的,大体思路是二分

Day2
在全排列处理重复时只需要除掉重复的个数的阶乘,比如:
1 2 3 4 5 5!

1 1 3 4 5 5!/2
1 1 1 4 5 5!/3!
1 1 1 1 5 5!/4!
1 1 2 2 5 5!/2!/2!

重点是DP,但是某大神他没有讲树形DP/状压DP等看起来很高端我也不会偏偏老师让重点听的DP,总之真是造化弄人命运无常orz

讲了比较新颖的思路,先写出搜索,再转为记忆化搜索,如果闲的没事干可以变成时间复杂度一样的DP
但是这样写出来的DP真是怎么看怎么别扭,而且想不明白最后的结果在0里还是在1里……还是搜索吧

Day3
数论虐我千百遍,我待数论……谁要待数论如初恋!感觉自己宛如一个智障的一天,心情糟糕ヾ(。`Д´。)

重载运算符看起来挺方便的?

struct BigInt
{
    int n,a[1003];
};

BigInt operator +(const BigInt & a,const BigInt & b)
{
    BigInt c;
    static int s[1003];
    memset(s,0,sizeof(s));
    for(int i=0;i<a.n;i++)
     s[i]=a.a[i];
}

此题无力回天只能先记下来

// Extended Euclid
//已知a,b,c,p 求ax+by=c的解

void exEuclid(int a, int b, int& x, int& y) 
{
    if (b == 0) 
    {
        if (a != 1) puts("Mei you jie la QwQ");
        x = 1;
        y = 0;
        return;
    }
    int k = a / b, c = a % b;
    exEuclid(b, c, x, y);
    int xp = x, yp = y;
    x = yp;
    y = xp - k * yp;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值