{"id":55,"date":"2009-12-26T12:19:00","date_gmt":"2009-12-26T04:19:00","guid":{"rendered":"http:\/\/localhost\/?p=55"},"modified":"2015-04-25T05:21:04","modified_gmt":"2015-04-25T05:21:04","slug":"pku_2008_individual_practice_1_1","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/wjmzbmr\/?p=55","title":{"rendered":"PKU 2008 Individual Practice 1 (1)"},"content":{"rendered":"<p> &#160;            <strong>3612 Problem A<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3612\">Telephone Wire<\/a>                            &#160;            <strong>3613 Problem B<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3613\">Cow Relays<\/a>                            &#160;            <strong>3614 Problem C<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3614\">Sunscreen<\/a>                            &#160;            <strong>3615 Problem D<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3615\">Cow Hurdles<\/a>                            &#160;            <strong>3616 Problem E<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3616\">Milking Time<\/a>                            &#160;            <strong>3617 Problem F<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3617\">Best Cow Line<\/a>                            &#160;            <strong>3618 Problem G<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3618\">Exploration<\/a>                            &#160;            <strong>3619 Problem H<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3619\">Speed Reading<\/a>                            &#160;            <strong>3620 Problem I<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3620\">Avoid The Lakes<\/a> <br \/>\u8fd9\u4e2a\u4ec0\u4e48Individual Practice\u7684\u611f\u89c9\u8fd8\u4e0d\u9519,\u786e\u5b9e\u6ee1\u53ef\u4ee5prrctice\u7684\u3002\u3002<br \/><strong>3612 Problem A<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3612\">Telephone Wire<\/a><br \/>\u5927\u610f\uff1a<br \/>\u4e00\u6392N(1&lt;N&lt;100000)\u8ddf\u7535\u7ebf\u6746,\u6bcf\u6839\u7684\u9ad8Hi&lt;=100,\u76f8\u90bb\u4e24\u4e2a\u63a5\u7ebf\u7684\u94b1\u662f\u4ed6\u4eec\u9ad8\u5ea6\u5dee*C,<br \/>\u4e3a\u4e86\u7701\u94b1\uff0c\u53ef\u4ee5\u628a\u4e00\u4e9b\u7535\u7ebf\u6746\u53d8\u9ad8\uff0c\u4e00\u6839\u7535\u7ebf\u6746\u53d8\u9ad8X\u8981\u82b1X^2\u7684\u94b1\u3002\u3002\u6c42\u6700\u5c11\u82b1\u591a\u5c11\u94b1\u3002\u3002<br \/>\u5206\u6790\uff1a<br \/>\u8bbeDP[i][H]\u4e3a1..i\u7b2ci\u4e2a\u957f\u4e3aH\u65f6\u7684\u6700\u5c0f\u4ef7\u683c\u3002\u3002<br \/>\u90a3\u4e48DP[i][H](H&gt;=Hi)=(H-Hi)^2+min(DP[i-1][k]+C*abs(k-H))<br \/>(k&lt;=100)<br \/>\u662fO(N*maxH^2)\u7684\u3002\u3002\u5fc5\u8d85\u3002\u3002<br \/>\u4f18\u5316\u4e00\u4e0b\uff0cDP[i][H]=(H-Hi)^2+<br \/>min( min(DP[i-1][k]+C*k-C*H)(k&gt;=H),min(DP[i-1][k]+C*H-C*k)(k&lt;H) )<br \/>\u6545\u8bbeA[i]=min(DP[i-1][k]-C*k)(k&lt;i)<br \/>B[i]=min(DP[i-1]+C*k)(k&gt;=i)<br \/>A\u548cB\u53ef\u4ee5\u7ebf\u6027\u63a8\u51fa\u6765\u3002\u3002<br \/>\u4ece\u800c\u590d\u6742\u5ea6\u5c31\u964d\u5230\u3002\u3002<br \/>O(N*maxH)\u4e86\u3002\u3002<br \/>\u542f\u793a\uff1a<br \/>\u6709abs\u8fd9\u79cd\u5206\u6bb5\u51fd\u6570\u7684\u65f6\u5019\u53ef\u4ee5\u5206\u961f\u8003\u8651\u6700\u4f18\u503c\u3002\u3002\u3002<br \/>Code:<br \/>#include&lt;iostream&gt;<br \/>#include&lt;algorithm&gt;<br \/>#include&lt;cstring&gt;<br \/>#include&lt;cstdio&gt;<br \/>#define Renew(x,c) x=min(x,c)<br \/>using namespace std;<br \/>const int maxh=100,maxn=100000,inf=~0U&gt;&gt;2;<br \/>int n,c,x,best[2][maxh+1],now,old,low[maxh+2],up[maxh+2];<br \/>inline int abs(int x){return x&lt;0?-x:x;}<br \/>int main()<br \/>{<br \/> freopen(&quot;in&quot;,&quot;r&quot;,stdin);<br \/> cin&gt;&gt;n&gt;&gt;c&gt;&gt;x;<br \/> for(int i=1;i&lt;x;i++) <br \/>  best[0][i]=inf; <br \/> for(int i=x;i&lt;=maxh;i++)<br \/>  best[0][i]=(x-i)*(x-i);<br \/> for(int t=1;t&lt;n;t++)<br \/> {<br \/>  now=t%2;old=1-now;<br \/>  int get;scanf(&quot;%d&quot;,&amp;x);<br \/>  for(int i=1;i&lt;=maxh;i++) best[now][i]=inf;<br \/>  memset(low,127,sizeof(low));<br \/>  memset(up,127,sizeof(up));<br \/>  for(int i=1;i&lt;=maxh;i++)<br \/>   low[i]=min(low[i-1],best[old][i]-c*i);<br \/>  for(int i=maxh;i&gt;=1;i&#8211;)<br \/>   up[i]=min(up[i+1],best[old][i]+c*i);<br \/>  for(int i=x;i&lt;=maxh;i++)<br \/>  { <br \/>   best[now][i]=(i-x)*(i-x);<br \/>   best[now][i]+=min(low[i]+c*i,up[i]-c*i);<br \/>  }<br \/> }<br \/> int ans=inf;<br \/> for(int i=1;i&lt;=maxh;i++) Renew(ans,best[now][i]);<br \/> cout&lt;&lt;ans&lt;&lt;endl;<br \/>}<strong>3613 Problem B<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3613\">Cow Relays<\/a><br \/>\u5927\u610f\uff1a<br \/>\u4e00\u4e2a\u56fe\uff0c\u8fb9\u6570\u5c0f\u4e8e100\uff0c\u6c42S\u5230E\u7684\u7ecf\u8fc7N\u6761\u8fb9\u7684\u6700\u77ed\u8def\u3002\u3002<br \/>\u5206\u6790\uff1a<br \/>\u8fd9\u662f\u5f88\u7ecf\u5178\u7684\u77e9\u9635\u4e58\u6cd5\u7684\u9898\u76ee\uff0c<br \/>\u5927\u5bb6\u90fd\u77e5\u9053\u8ddd\u79bb\u77e9\u9635\u81ea\u4e58N\u6b21\u5c31\u662f\u957f\u5ea6\u4e3aN\u7684\u6700\u77ed\u8def\uff0c\u90a3\u4e48\u53ea\u8981\u7528\u4e8c\u5206\u7b97\u77e9\u9635\u7684N\u6b21\u65b9\u5c31OK\u4e86\u3002\u3002<br \/>\u542f\u793a\uff1a<br \/>\u77e9\u9635\u4e58\u6cd5\u975e\u5e38NB\u963f\u3002\u3002<br \/>Code\uff1a<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include&lt;iostream&gt;\r\n#include&lt;algorithm&gt;\r\n#include&lt;cstring&gt;\r\n#include&lt;utility&gt;\r\n#include&lt;stack&gt;\r\n#define Renew(x,c) x=min(x,c)\r\n#define x first\r\n#define y second\r\n#define ss x.x\r\n#define tt x.y\r\n#define cc y\r\nusing namespace std;\r\nconst int maxt=1000+10,maxn=100+1,inf=~0U&gt;&gt;1;\r\ntypedef long long Board[maxn][maxn];\r\ntypedef pair&lt;int,int&gt; pi;\r\ntypedef pair&lt;pi,int&gt; edge;\r\nstruct Matrix\r\n{\r\n    Board M;int n;\r\n    Matrix(int n):n(n)\r\n    {\r\n        for(int i=0;i&lt;n;i++)\r\n            for(int j=0;j&lt;n;j++)\r\n                M[i][j]=inf;\r\n    }\r\n    Matrix operator*(const Matrix&amp;o)\r\n    {\r\n        Matrix ans(n);\r\n        for(int i=0;i&lt;n;i++)\r\n            for(int j=0;j&lt;n;j++)\r\n                for(int k=0;k&lt;n;k++)\r\n                    Renew(ans.M[i][j],M[i][k]+o.M[k][j]);\r\n        return ans;\r\n    }\r\n    void operator=(const Matrix&amp;o)\r\n    {\r\n        memmove(M,o.M,sizeof(M));\r\n        n=o.n;\r\n    }\r\n}*dist;\r\nint Map[maxt]={0},N,s,t,cnt;\r\ninline int get(int a)\r\n{\r\n    if(Map[a]==-1) Map[a]=cnt++;\r\n    return Map[a];\r\n}\r\nvoid init()\r\n{\r\n    for(int i=1;i&lt;maxt;i++)\r\n        Map[i]=-1;\r\n    int m;\r\n    cin&gt;&gt;N&gt;&gt;m&gt;&gt;s&gt;&gt;t;cnt=0;\r\n    stack&lt;edge&gt; S;\r\n    while(m--)\r\n    {\r\n        int a,b,c;cin&gt;&gt;c&gt;&gt;a&gt;&gt;b;\r\n        a=get(a);b=get(b);\r\n        S.push(edge(pi(a,b),c));\r\n    }\r\n    dist=new Matrix(cnt);\r\n    while(S.size())\r\n    {\r\n        edge i=S.top();S.pop();\r\n        dist-&gt;M[i.ss][i.tt]=dist-&gt;M[i.tt][i.ss]=i.cc;\r\n    }\r\n    s=get(s);t=get(t);\r\n}\r\nMatrix Power(int n)\r\n{ \r\n    if(n==1){return *dist;}\r\n    Matrix ans=Power(n\/2);\r\n    ans=ans*ans;\r\n    if(n%2==1)\r\n        ans=ans*(*dist);\r\n    return ans;\r\n}\r\nvoid solve()\r\n{\r\n    Matrix ans=Power(N);\r\n    cout&lt;&lt;ans.M[s][t]&lt;&lt;endl;\r\n}\r\nint main()\r\n{\r\n    init();\r\n    solve();\r\n}\r\n<\/pre>\n<p><strong>3614 Problem C<\/strong> <a href=\"http:\/\/acm.pku.edu.cn\/JudgeOnline\/problem?id=3614\">Sunscreen<\/a><br \/>\u5927\u610f\uff1a\u6539\u7684XX\u70b9\u7b97\u4e86\u3002\u3002<br \/>\u6bcf\u4e2a\u7537\u751f\u7684\u5e05\u6c14\u503c\u57281\u52301000\u4e4b\u95f4\uff0c\uff0c<br \/>N\u4e2a\u5973\u751f\uff08N&lt;=2500\uff09\u7b2ci\u4e2a\u559c\u6b22\u5e05\u6c14\u503cLowi\u5230Upi\u4e4b\u95f4\u7684\u7537\u751f\u3002\u3002<br \/>M\u79cd\u7537\u751f\uff08M&lt;=2500\uff09\u7b2ci\u4e2a\u6709Numi\u4eba\uff0c\u5e05\u6c14\u503c\u4e3aHandsomei\u3002\u3002<br \/>\u8fd9\u65f6\u7537\u751f\u5f97\u77e5WJMZBMR\u6765\u4e86\uff0c\u4e3a\u4e86\u4e0d\u8ba9\u5e05\u5e05\u7684WJMZBMR\uff08\u5e05\u6c14\u503c&gt;2^128\uff09<br \/>\u62a2\u8d70\u5973\u751f\u7684\u5fc3\u3002\u3002\u4ed6\u4eec\u9a6c\u4e0a\u5f00\u59cb\u884c\u52a8\u4e86\u3002\u3002<br \/>\u95ee\u6700\u591a\u6709\u591a\u5c11\u4e2a\u5973\u751f\u53ef\u4ee5\u6709\u7537\u670b\u53cb\u5462\uff1f\uff08\u4e0d\u5305\u62ecWJMZBMR\u3002\u3002\u3002\uff09<br \/>\u5206\u6790\uff1a<br \/>\u628a\u7537\u751f\u6309handsomei\u6392\u5e8f\u3002\u3002<br \/>\u4e00\u4e2a\u4e2a\u626b\u63cf\u8fc7\u53bb\uff0c\u6bcf\u4e2a\u7537\u751f\u5c3d\u91cf\u5339\u914dUpi\u5c0f\u7684\u5973\u751f\uff08\u592a\u5c0f\u7684\u5148\u8e22\u6389\uff09\u3002\u3002<br \/>\u7528\u4e00\u4e2aheap\u7ef4\u62a4\u5c31\u53ef\u4ee5\u4e86\u3002\u3002<br \/>\u542f\u793a\uff1a<br \/>\u5f88\u591a\u65f6\u5019\u60f3\u8d2a\u5fc3\u4e5f\u662f\u6709\u65b9\u6cd5\u7684\u3002\u3002\u6700\u91cd\u8981\u7684\u662f\u964d\u7ef4\u548c\u66ff\u4ee3\u6cd5\u3002\u3002<br \/>Code\uff1a<br \/>#include&lt;iostream&gt;<br \/>#include&lt;algorithm&gt;<br \/>#include&lt;cstring&gt;<br \/>#include&lt;utility&gt;<br \/>#include&lt;queue&gt;<br \/>using namespace std;<br \/>typedef pair&lt;int,int&gt; pi;<br \/>int Cover[1000+1]={0},C;<br \/>pi Cs[2500],Bs[2500];<br \/>priority_queue&lt;int&gt; Q;<br \/>inline void ins(int x)<br \/>{ Q.push(-x); }<br \/>inline int top()<br \/>{ return -Q.top(); }<br \/>inline void pop()<br \/>{ Q.pop(); }<br \/>int main()<br \/>{<br \/> int L;cin&gt;&gt;C&gt;&gt;L;<br \/> for(int i=0;i&lt;C;i++)<br \/> {<br \/>  cin&gt;&gt;Cs[i].first&gt;&gt;Cs[i].second;<br \/> }<br \/> for(int i=0;i&lt;L;i++)<br \/> {<br \/>  cin&gt;&gt;Bs[i].first&gt;&gt;Bs[i].second;  <br \/> }<br \/> sort(Cs,Cs+C);<br \/> sort(Bs,Bs+L);<br \/> pi*s=Cs;int ans=0;<br \/> for(pi*i=Bs;i!=Bs+L;i++)<br \/> {<br \/>  while(s!=Cs+C&amp;&amp;s-&gt;first&lt;=i-&gt;first)<br \/>   ins(s-&gt;second),s++;<br \/>  while(Q.size()&amp;&amp;top()&lt;i-&gt;first)<br \/>   pop();<br \/>  while(i-&gt;second&amp;&amp;Q.size())<br \/>  {<br \/>   pop(),i-&gt;second&#8211;,ans++; <br \/>  }<br \/> }<br \/> cout&lt;&lt;ans&lt;&lt;endl;<br \/>}<\/p>\n<p>\u7531\u4e8e\u767e\u5ea6\u7bc7\u5e45\u95ee\u9898<br \/>\u53ea\u80fd\u5f00\u5f88\u591a\u7ae0\u4e86\u3002\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#160; 3612 Problem A Telephone Wire &#160; 3613 Problem B Cow Relays &#160; 3614 Problem C Sunscreen &#160; 3615 Problem D Cow Hurdles &#160; 3616 Problem E Milking Time &#160; 3617 Problem F Best Cow Line &#160; 3618 Problem G Exploration &#160; 3619 Problem H Speed Reading &#160; 3620 Problem I Avoid The Lakes \u8fd9\u4e2a\u4ec0\u4e48Individual [&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\/55"}],"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=55"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/55\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}