日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

BZOJ-1005 明明的烦恼

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ-1005 明明的烦恼 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Prufer編碼練習題,這個編碼是跟樹的生成計數有關系的。

推薦這篇博文:http://www.cnblogs.com/zhj5chengfeng/archive/2013/08/23/3278557.html?介紹地挺全面+生動形象

會了Prufer之后這道題還要用上組合數學來高精度計算。

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <fstream>
#include <iostream>#define rep(i, l, r) for(int i=l; i<=r; i++)
#define down(i, l, r) for(int i=l; i>=r; i--)
#define N 12345
#define MAX 1<<30
#define Q 1000000using namespace std;
int read()
{int x=0, f=1; char ch=getchar();while (ch<'0' || ch>'9') { if (ch=='-') f=-1; ch=getchar(); }while (ch>='0' && ch<='9') { x=x*10+ch-'0' ; ch=getchar(); }return x*f;
}int n, d[N], k, s, m[N], l;void Mult(int x)
{rep(i, 1, l) m[i]*=x;rep(i, 1, l) m[i+1]+=m[i]/Q, m[i]%=Q;while (m[l+1]) l++, m[l+1]+=m[l]/Q, m[l]%=Q;
}void Div(int x)
{int a=0;down(i, l, 1) a=a*Q+m[i], m[i]=a/x, a%=x;while (m[l]==0 && l>1) l--;
}int main()
{n=read(); rep(i, 1, n) d[i]=read();rep(i, 1, n) if (d[i]!=-1) k++, s+=d[i]-1;if (s>n-2) printf("0"); else{m[l=1] = 1;rep(i, 1, n-2) Mult(i);rep(i, 1, n-2-s) Div(i);rep(i, 1, n-2-s) Mult(n-k);rep(i, 1, n) if (d[i]!=-1) rep(j, 1, d[i]-1) Div(j);printf("%d", m[l]);down(i, l-1, 1) if (m[i]>=100000) printf("%d", m[i]);else if (m[i]>=10000) printf("0%d", m[i]);else if (m[i]>=1000) printf("00%d", m[i]);else if (m[i]>=100) printf("000%d", m[i]);else if (m[i]>=10) printf("0000%d", m[i]);else printf("00000%d", m[i]);}return 0;
}

轉載于:https://www.cnblogs.com/NanoApe/p/4342707.html

總結

以上是生活随笔為你收集整理的BZOJ-1005 明明的烦恼的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。