Dairy of CDQZ 1

今日,考试难度为WC难度,但是有原题导致我没能控制住自己去搜了题解,并且抄了代码,就这样无畏的说出来,也是对自己的批判,也是对自己的警示,鄙视自己,警告自己。

被YJQ怒D之后,自己找老师认错,并且开通这个博客,来记录下自己仅剩不多的OI生活,本博客不会发表任何有关CDQZOI的原创题题解,但可能会挂出自己的题与题解,也会挂出BZOJ等处题解,并且以此博客为戒,将不再抄题解不再抄代码,真正提高自己~

顺带一提,今日T1 bzoj 1488

#include<cstdio>
#include<algorithm>
using namespace std;
#define maxn 10100
#define MOD 10007
int fac[maxn],size[maxn],num[maxn];
int ans;
int cnt,n;

inline int Pow(int a,int b)
{
    int base = a,retnow = 1;
    while (b)
    {
    if (b & 1) retnow = retnow * base % MOD;
    base = base * base % MOD;
    b>>=1;
    }
    return retnow;
}
inline int gcd(int a,int b) {return b == 0 ? a : gcd(b,a%b);}

void init()
{
    fac[0] = 1;
    for (register int i = 1 ; i <= n ; ++i)
    fac[i] = fac[i-1] * i % MOD;
}

inline void dfs(int now,int left)
{
    if (!left)
    {
    int retnow = 0,bot = 1;
    for (register int i = 1 ; i <= cnt ; ++i)
    {
        retnow += ((num[i]-1)*num[i]/2 % MOD * size[i] % MOD + size[i]/2 * num[i] % MOD) % MOD;
        for (register int j = i + 1 ; j <= cnt ; ++j)
        retnow += gcd(size[i],size[j])*num[i] % MOD *num[j] % MOD;
    }
    for (register int i = 1 ; i <= cnt ; ++i)
        bot = bot * Pow(size[i],num[i]) % MOD * fac[num[i]] % MOD;
    bot = Pow(bot,MOD-2) * fac[n] % MOD;
    ans = (ans + Pow(2,retnow) * bot % MOD) % MOD;
    }
    if (now > left) return;
    dfs(now+1,left);
    for (register int i = 1 ; i * now <= left ; ++i)
    {
    size[++cnt] = now,num[cnt] = i;
    dfs(now+1,left - i * now);
    cnt--;
    }
}

int main()
{
#ifdef VictorXie
    freopen("graph.in","r",stdin);
#else
    freopen("graph.in","r",stdin);
    freopen("graph.out","w",stdout);
#endif
    scanf("%d",&n);
    init();
    dfs(1,n);
    ans = ans * Pow(fac[n],MOD-2) % MOD;
    printf("%lld\n",ans);
}

常数优化失败系列,并且此代码并非原创..再次抱歉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值