把樹轉化為purfer序列,問題就轉化為了把
n 個元素放到n−
2個位置上,有些元素的出現次數有限制,求方案數。
注意答案不取模,可以用指數加減來實現高精度除法。
#include
#include
using namespace std;
#define ll long long
const int maxn=2010,mod=1000;
int n,m,s,tot,a[maxn],vis[maxn],prm[maxn];
struct big
void one()
big operator * (const int &b) const
ret.l=l+1;
if (!ret.a[ret.l]) ret.l--;
else
while (ret.a[ret.l]>=mod)
return ret;
}void out() const
}}ans;
struct inte
inte operator / (const inte &in) const
big get() const
}x[maxn],fac[maxn],tem;
int main()
for (int i=1;i<=n;i++)
if (y!=-1)
}if (s>n-2)
for (int i=2;i<=n-2;i++)
}for (int i=1;i<=n-2;i++)
}for (int i=1;i<=n-2;i++) fac[i]=fac[i-1]*x[i];
tem=fac[n-2];
for (int i=1;i<=m;i++) tem=tem/fac[a[i]];
tem=tem/fac[n-2-s];
ans=tem.get();
for (int i=1;i<=n-2-s;i++) ans=ans*(n-m);
ans.out();
}
BZOJ1010 HNOI2008 玩具裝箱toy
先把程式放著,週末來更新 華麗的分割線 不想寫題解了。照著網上的題解推一邊即可 注意有的題解最後推倒出來明明是求上 下 凸包的形式,但配的圖卻是下 上 凸包的。不過斜率優化還不是搞的很懂。time limit 1 sec memory limit 162 mb submit 6661 solved ...
BZOJ 1010 HNOI2008 玩具裝箱
看到本題以後,分析了一下,發現是dp,然後看了下資料規模會超時。後來看了hzw的題解才發現是需要斜率優化的,方程是看懂了但是證明還是有點迷迷糊糊。最後,判斷函式是對著hzw的標程打的,剩下自己手擼掉了,程式並不長,但思想很秒。include include include include using...
HNOI2008 BZOJ1010 玩具裝箱toy
time limit 1 sec memory limit 162 mb submit 11686 solved 4946 submit status discuss p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓 縮,其可以將任意物品變成一堆,再放...