{"id":149,"date":"2010-03-12T18:15:00","date_gmt":"2010-03-12T10:15:00","guid":{"rendered":"http:\/\/localhost\/?p=149"},"modified":"2010-03-12T18:15:00","modified_gmt":"2010-03-12T10:15:00","slug":"hnoi2008_plainly_troubles","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/wjmzbmr\/?p=149","title":{"rendered":"[HNOI2008]\u660e\u660e\u7684\u70e6\u607c"},"content":{"rendered":"<p> <a href=\"http:\/\/61.187.179.132:8080\/JudgeOnline\/showproblem?problem_id=1005\" target=\"_blank\">61.187.179.132:8080\/JudgeOnline\/showproblem<\/a><br \/>\u8fd9\u9053\u9898\u5f88\u6709\u610f\u601d\u554a\u3002\u3002\u5c31\u662f\u8bf4\u4e00\u68f5\u6811\u5bf9\u4e00\u4e9b\u9876\u70b9\u7684\u5ea6\u6570\u6709\u8981\u6c42\u4e00\u4e9b\u6ca1\u6709\uff0c\u8ba9\u4f60\u6c42\u8fd9\u6837\u7684\u6811\u7684\u5ea6\u6570\u3002<br \/>\u6211\u4e00\u5f00\u59cb\u60f3DP\u8111\u5b50\u90fd\u7206\u4e86\u4e5f\u6ca1\u60f3\u51fa\u6765\u3002\u3002\u6700\u540e\u60f3\u5230Prufer Code\u3002\u3002\u7136\u540e\u5c31\u660e\u767d\u4e86\u3002\u3002<br \/>Prufer Code\u662f\u628a\u6bcf\u68f5n\u70b9\u7684\u6811\u5bf9\u5e94\u5230\u957f\u5ea6\u4e3an-2\uff0c\u6570\u57281-n\u4e4b\u95f4\u7684\u6570\u5217\u3002\u3002\u5176\u4e2d\u4e00\u4e2a\u5ea6\u6570\u4e3ad\u7684\u70b9\u51fa\u73b0d-1\u6b21\u3002\u3002<br \/>wiki\u4e0a\u7684\u8bf4\u660e:<a target=\"_blank\" href=\"http:\/\/en.wikipedia.org\/wiki\/Prufer_code\">en.wikipedia.org\/wiki\/Prufer_code<\/a><br \/>\u8fd9\u5c31\u662f\u5173\u952e\u3002\u6240\u4ee5\u95ee\u9898\u5c31\u8f6c\u5316\u6210\u6c42\u8fd9\u6837\u7684\u6570\u5217\u7684\u6570\u76ee\u4e86\u3002\u3002\u8fd9\u7528\u591a\u91cd\u96c6\u7684\u516c\u5f0f\u5f88\u65b9\u4fbf\uff0c\u5c31\u4e0d\u591a\u8bf4\u4e86\u3002\u3002<br \/>Code\uff1a<br \/>#include&lt;cstdio&gt;<br \/>#include&lt;iostream&gt;<br \/>#include&lt;algorithm&gt;<br \/>#include&lt;string&gt;<br \/>#include&lt;vector&gt;<br \/>#include&lt;cstring&gt;<br \/>#define rep(i,n) for(int i=0;i&lt;n;i++)<br \/>#define pb push_back<br \/>using namespace std;<br \/>const int inf=~0U&gt;&gt;1,maxn=1000;<br \/>int n;<br \/>vector&lt;int&gt; Prime;<br \/>typedef vector&lt;int&gt;::iterator it;<br \/>int D[maxn],S=0,noLimit=0;<br \/>bool isPrime(int x)<br \/>{<br \/>    if(x==2) return true;<br \/>    if(x\/2==0) return false;<br \/>    for(int i=3;i*i&lt;=x;i+=2)<br \/>        if(x%i==0) return false;<br \/>    return true;<br \/>}<br \/>void getPrime()<br \/>{<br \/>    for(int i=2;i&lt;=n;i++)<br \/>        if(isPrime(i)) Prime.pb(i);<br \/>}<br \/>void init()<br \/>{<br \/>    cin&gt;&gt;n;<br \/>    rep(i,n)<br \/>    {<br \/>        cin&gt;&gt;D[i];<br \/>        if(D[i]&gt;0)<br \/>            S+=D[i]-1;<br \/>        else<br \/>            noLimit++;<br \/>    }<br \/>}<br \/>struct BigInt<br \/>{<br \/> int H[400];<br \/> BigInt(){memset(H,0,sizeof(H));}<br \/> void mul(int x)<br \/> {<br \/>     rep(i,Prime.size())<br \/>            while(x%Prime[i]==0) x\/=Prime[i],H[i]++;<br \/> }<br \/> void div(int x)<br \/> {<br \/>     rep(i,Prime.size())<br \/>            while(x%Prime[i]==0) x\/=Prime[i],H[i]&#8211;;<br \/> }<br \/>};<br \/>ostream&amp; operator&lt;&lt;(ostream&amp;out,const BigInt&amp;x)<br \/>{<br \/>    static int Hp[100000],last;<br \/>    memset(Hp,0,sizeof(Hp));Hp[last=0]=1;<br \/>    rep(i,Prime.size())<br \/>    {<br \/>        rep(j,x.H[i])<br \/>        {<br \/>            int o=Prime[i],d=0;<br \/>            rep(k,last+1)<br \/>            {<br \/>                d+=Hp[k]*o;<br \/>                Hp[k]=d%10;<br \/>                d\/=10;<br \/>            }<br \/>            while(d) Hp[++last]=d%10,d\/=10;<br \/>        }<br \/>    }<br \/>    for(int i=last;i&gt;=0;&#8211;i)out&lt;&lt;Hp[i];<br \/>    return out;<br \/>}<br \/>void work()<br \/>{<br \/>    if(S&gt;n-2){cout&lt;&lt;0&lt;&lt;endl;return;}<br \/>    if(noLimit==0&amp;&amp;S&lt;n-2){cout&lt;&lt;0&lt;&lt;endl;return;}<br \/>    getPrime();<br \/>    BigInt ans;<br \/>    for(int i=1;i&lt;=n-2;i++)<br \/>        ans.mul(i);<br \/>    rep(i,n)<br \/>    {<br \/>        if(D[i]&gt;0)<br \/>            for(int j=1;j&lt;=D[i]-1;j++)<br \/>                ans.div(j);<br \/>    }<br \/>    for(int i=1;i&lt;=n-2-S;i++)<br \/>        ans.div(i);<br \/>    rep(i,n-2-S) ans.mul(noLimit);<br \/>    cout&lt;&lt;ans&lt;&lt;endl;<br \/>}<br \/>int main()<br \/>{<br \/>    \/\/freopen(&quot;in&quot;,&quot;r&quot;,stdin);<br \/>    init();<br \/>    work();<br \/>}<br \/>PS\u3002\u3002o(\ufe36\ufe3f\ufe36)o \u8fd9\u4e2aOJ\u4e0d\u80fd\u7528Java\u3002\u8fd8\u5f97\u81ea\u5df1\u5199\u9ad8\u7cbe\u5ea6\u56e7\u3002\u3002 <\/p>\n","protected":false},"excerpt":{"rendered":"<p>61.187.179.132:8080\/JudgeOnline\/showproblem\u8fd9\u9053\u9898\u5f88\u6709\u610f\u601d\u554a\u3002\u3002\u5c31\u662f\u8bf4\u4e00\u68f5\u6811\u5bf9\u4e00\u4e9b\u9876\u70b9\u7684\u5ea6\u6570\u6709\u8981\u6c42\u4e00\u4e9b\u6ca1\u6709\uff0c\u8ba9\u4f60\u6c42\u8fd9\u6837\u7684\u6811\u7684\u5ea6\u6570\u3002\u6211\u4e00\u5f00\u59cb\u60f3DP\u8111\u5b50\u90fd\u7206\u4e86\u4e5f\u6ca1\u60f3\u51fa\u6765\u3002\u3002\u6700\u540e\u60f3\u5230Prufer Code\u3002\u3002\u7136\u540e\u5c31\u660e\u767d\u4e86\u3002\u3002Prufer Code\u662f\u628a\u6bcf\u68f5n\u70b9\u7684\u6811\u5bf9\u5e94\u5230\u957f\u5ea6\u4e3an-2\uff0c\u6570\u57281-n\u4e4b\u95f4\u7684\u6570\u5217\u3002\u3002\u5176\u4e2d\u4e00\u4e2a\u5ea6\u6570\u4e3ad\u7684\u70b9\u51fa\u73b0d-1\u6b21\u3002\u3002wiki\u4e0a\u7684\u8bf4\u660e:en.wikipedia.org\/wiki\/Prufer_code\u8fd9\u5c31\u662f\u5173\u952e\u3002\u6240\u4ee5\u95ee\u9898\u5c31\u8f6c\u5316\u6210\u6c42\u8fd9\u6837\u7684\u6570\u5217\u7684\u6570\u76ee\u4e86\u3002\u3002\u8fd9\u7528\u591a\u91cd\u96c6\u7684\u516c\u5f0f\u5f88\u65b9\u4fbf\uff0c\u5c31\u4e0d\u591a\u8bf4\u4e86\u3002\u3002Code\uff1a#include&lt;cstdio&gt;#include&lt;iostream&gt;#include&lt;algorithm&gt;#include&lt;string&gt;#include&lt;vector&gt;#include&lt;cstring&gt;#define rep(i,n) for(int i=0;i&lt;n;i++)#define pb push_backusing namespace std;const int inf=~0U&gt;&gt;1,maxn=1000;int n;vector&lt;int&gt; Prime;typedef vector&lt;int&gt;::iterator it;int D[maxn],S=0,noLimit=0;bool isPrime(int x){ if(x==2) return true; if(x\/2==0) return false; for(int i=3;i*i&lt;=x;i+=2) if(x%i==0) return false; return true;}void getPrime(){ for(int i=2;i&lt;=n;i++) if(isPrime(i)) Prime.pb(i);}void init(){ cin&gt;&gt;n; rep(i,n) { cin&gt;&gt;D[i]; if(D[i]&gt;0) S+=D[i]-1; else noLimit++; }}struct BigInt{ int H[400]; BigInt(){memset(H,0,sizeof(H));} void mul(int x) { [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/149"}],"collection":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=149"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/149\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}