﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-ickchen2-文章分类-ACM题解</title><link>http://www.cppblog.com/ickchen2/category/7971.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 19 Sep 2010 23:45:49 GMT</lastBuildDate><pubDate>Sun, 19 Sep 2010 23:45:49 GMT</pubDate><ttl>60</ttl><item><title>数论 POJ2417</title><link>http://www.cppblog.com/ickchen2/articles/66063.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Wed, 05 Nov 2008 14:33:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/66063.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/66063.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/66063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/66063.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/66063.html</trackback:ping><description><![CDATA[<p>解a^x==b(mod p)的方程,求最小的X值<br>设x=i*m+j<br>则方程化为b*(a^-m)^i%p=a^j%p<br>0&lt;=i,j&lt;m,m=sqrt(p-1)取上整;<br>算出a^-m后,然后枚举每一个i,二分查找a^j,成功则输出<br>注意(a^-1)%p=(a^(p-2))%p;则可把小数化为整数<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;queue&gt;<br>#include&lt;math.h&gt;<br>#include&lt;algorithm&gt;<br>#define M 1000000<br>using namespace std;<br>//Baby-step giant-step算法<br>//a^x==b(mod p)</p>
<p>//记录(j,a^j)<br>struct nummap<br>{<br>&nbsp;&nbsp;&nbsp; int i;<br>&nbsp;&nbsp;&nbsp; int num;<br>}num[M];<br>map&lt;int,int&gt;s;<br>int cmp(const nummap &amp;a,const nummap&amp;b)<br>{<br>&nbsp;&nbsp;&nbsp; return a.num&lt;b.num||a.num==b.num&amp;&amp;a.i&lt;b.i;<br>}<br>//计算a^b%c<br>int BitLength(int x)<br>{<br>&nbsp;&nbsp; int d=0;<br>&nbsp;&nbsp;&nbsp; while(x&gt;0)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x&gt;&gt;=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d++;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return d;<br>}<br>int BitAt(int x,int i)<br>{<br>&nbsp;&nbsp;&nbsp; return (x&amp;(1&lt;&lt;(i-1)));<br>}<br>int find(int a,int b,int c)<br>{<br>&nbsp;&nbsp;&nbsp; long long y=1;<br>&nbsp;&nbsp;&nbsp; for(int i=BitLength(b);i&gt;0;i--)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y=(y*y)%c;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(BitAt(b,i)&gt;0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y=(y*a)%c;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return y%c;<br>}</p>
<p>//二分找a^j<br>int findnum(int t,int len)<br>{<br>&nbsp;&nbsp;&nbsp; int l=-1,h=len;<br>&nbsp;&nbsp;&nbsp; while(l+1&lt;h)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int mid=(l+h)&gt;&gt;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(num[mid].num&lt;t)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l=mid;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else h=mid;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if(num[h].num==t)return num[h].i;<br>&nbsp;&nbsp;&nbsp; return -1;<br>}</p>
<p><br>int Baby_step_giant_step(int a,int b,int p)<br>{<br>&nbsp;&nbsp;&nbsp; int m=(int)ceil(sqrt((double)p-1));//进行取上整<br>&nbsp;&nbsp;&nbsp; //计算a^0~a^m-1<br>&nbsp;&nbsp;&nbsp; long long base=1;<br>&nbsp;&nbsp;&nbsp; int len=0;<br>&nbsp;&nbsp;&nbsp; num[len].i=0;<br>&nbsp;&nbsp;&nbsp; num[len++].num=base;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;m-1;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base*=a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base%=p;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num[len].i=i+1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num[len++].num=base;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; sort(num,num+len,cmp);</p>
<p>&nbsp;&nbsp;&nbsp; //计算(a^-m)%p=((a^-1)%p^m)%p=((a^(p-2)%p)^m)%p;<br>&nbsp;&nbsp;&nbsp; int am=find(a,p-2,p);//a^-1<br>&nbsp;&nbsp;&nbsp; am=find(am,m,p);//am^m</p>
<p>&nbsp;&nbsp;&nbsp; long long ret=b;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;m;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j=findnum(ret,m);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //it=s.lower_bound(ret);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(j!=-1){return i*m+j;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret*=am;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret%=p;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return -1;<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; freopen("in.txt","r",stdin);<br>&nbsp;&nbsp;&nbsp; int n,b,p;<br>&nbsp;&nbsp;&nbsp; while(scanf("%d%d%d",&amp;p,&amp;b,&amp;n)&gt;0)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x=Baby_step_giant_step(b,n,p);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(x!=-1)printf("%d\n",x);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else printf("no solution\n");<br>&nbsp;&nbsp;&nbsp; }<br>}<br></p>
<img src ="http://www.cppblog.com/ickchen2/aggbug/66063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-11-05 22:33 <a href="http://www.cppblog.com/ickchen2/articles/66063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU1730 简单数论加枚举</title><link>http://www.cppblog.com/ickchen2/articles/65812.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Mon, 03 Nov 2008 02:39:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/65812.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/65812.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/65812.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/65812.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/65812.html</trackback:ping><description><![CDATA[/*一道很简单的数论题,求可以开的最大N次方,直接用POW函数,不过在比较答案是,DOUBLE的比较,精度要用1E-12,还有很囧的就是,居然他有负数的存在,题目明明说了最小是2,不知道哪里来的负数*/<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;queue&gt;<br>#include&lt;math.h&gt;<br>#include&lt;algorithm&gt;<br>#define M 1000<br>using namespace std;<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; freopen("in.txt","r",stdin);<br>&nbsp;&nbsp;&nbsp; long long n;<br>&nbsp;&nbsp;&nbsp; int ans;<br>&nbsp;&nbsp;&nbsp; while(scanf("%I64d",&amp;n)&amp;&amp;n)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(n&gt;0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=32;i&gt;=1;i--)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double b=pow(n,1.0/i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double b1=floor(b);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double b2=ceil(b);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // double sum=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fabs(b-b1)&lt;1e-12||fabs(b2-b)&lt;1e-12){printf("%d\n",i);break;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n=-n;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=32;i&gt;=1;i--)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i%2==0)continue;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double b=pow(n,1.0/i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double b1=floor(b);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double b2=ceil(b);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //double sum=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fabs(b-b1)&lt;1e-12||fabs(b2-b)&lt;1e-12){printf("%d\n",i);break;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //printf("%d\n",ans);<br>&nbsp;&nbsp;&nbsp; }<br>}<br>
<img src ="http://www.cppblog.com/ickchen2/aggbug/65812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-11-03 10:39 <a href="http://www.cppblog.com/ickchen2/articles/65812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU3191 求负进制</title><link>http://www.cppblog.com/ickchen2/articles/61574.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Thu, 11 Sep 2008 04:51:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/61574.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/61574.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/61574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/61574.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/61574.html</trackback:ping><description><![CDATA[/*负权进制*/<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;queue&gt;<br>#include&lt;algorithm&gt;<br>#define M 1000<br>using namespace std;<br>int a[M];<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; int n;<br>&nbsp;&nbsp;&nbsp; scanf("%d",&amp;n);<br>&nbsp;&nbsp;&nbsp; if(n==0){printf("%d\n",n);return 0;}//记得判断0<br>&nbsp;&nbsp;&nbsp; int m=n;<br>&nbsp;&nbsp;&nbsp; int p=1;<br>&nbsp;&nbsp;&nbsp; if(m&lt;0){p=0;m*=-1;}<br>&nbsp;&nbsp;&nbsp; int k=0;<br>&nbsp;&nbsp;&nbsp; while(m)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[k++]=m%2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m/=2;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; for(int i=p;i&lt;k;i++)//伪奇指数位取反<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(((i-p)&amp;1)==0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]*=-1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; int i;<br>&nbsp;&nbsp;&nbsp; for(i=0;i&lt;k;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[i]&lt;0)//负数,进位<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i+1]+=(-a[i]/2)+(-a[i]%2&amp;&amp;1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]+=((-a[i]/2)+(-a[i]%2&amp;&amp;1))*2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;else//正数,借位<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;a[i+1]-=a[i]/2;<br>&nbsp;&nbsp;&nbsp;a[i]%=2;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; while(a[i])<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(((i-p)&amp;1)==0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[i]&lt;0)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i+1]+=(-a[i]/2)+(-a[i]%2&amp;&amp;1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]+=((-a[i]/2)+(-a[i]%2&amp;&amp;1))*2;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i+1]-=a[i]/2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]%=2;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[i]&lt;0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //a[i]*=-1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i+1]+=(-a[i]/2)+(-a[i]%2&amp;&amp;1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]+=((-a[i]/2)+(-a[i]%2&amp;&amp;1))*2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;a[i+1]-=a[i]/2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]%=2;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;i++;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; for(i-=1;i&gt;=0;i--)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d",a[i]);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; printf("\n");<br>}<br>
<img src ="http://www.cppblog.com/ickchen2/aggbug/61574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-09-11 12:51 <a href="http://www.cppblog.com/ickchen2/articles/61574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 3273 二分搜</title><link>http://www.cppblog.com/ickchen2/articles/61527.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Wed, 10 Sep 2008 12:16:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/61527.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/61527.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/61527.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/61527.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/61527.html</trackback:ping><description><![CDATA[/*很好的一道二分题...二分时一定要判断上下两界的情况,不然有可能会超时~~还有退出之前要判断上下两界到底要哪个..这个最好用下界,不容易错!!*/<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;queue&gt;<br>#include&lt;algorithm&gt;<br>#define M 1000000<br>using namespace std;<br>int a[M];<br>int n;<br>int find(int mid)<br>{<br>&nbsp;&nbsp;&nbsp; int sum=0;<br>&nbsp;&nbsp;&nbsp; int month=0;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(sum+a[i]&gt;mid)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; month++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum=a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum+=a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return month;<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; freopen("3273.txt","r",stdin);<br>&nbsp;&nbsp;&nbsp; int m;<br>&nbsp;&nbsp;&nbsp; scanf("%d%d",&amp;n,&amp;m);<br>&nbsp;&nbsp;&nbsp; int mi=-1,ma=0;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d",&amp;a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(mi==-1||mi&lt;a[i])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi=a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ma+=a[i];<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; int l=mi,h=ma;<br>&nbsp;&nbsp;&nbsp; while(l&lt;h)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int mid=(l+h)&gt;&gt;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sum=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int month=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; month=find(mid);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(month+1&lt;=m)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h=mid;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l=mid;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(l+1==h)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int a=find(l);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int b=find(h);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a+1&gt;m)l=h;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; printf("%d\n",l);<br>}<br>
<img src ="http://www.cppblog.com/ickchen2/aggbug/61527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-09-10 20:16 <a href="http://www.cppblog.com/ickchen2/articles/61527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU2248 很好的一道搜索题</title><link>http://www.cppblog.com/ickchen2/articles/61361.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Tue, 09 Sep 2008 02:31:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/61361.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/61361.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/61361.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/61361.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/61361.html</trackback:ping><description><![CDATA[<p>/*虽然n达到100,但还是可以去搜的*/<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;queue&gt;<br>#include&lt;algorithm&gt;<br>#define M 1000<br>using namespace std;<br>int a[M];<br>int n;<br>int len;<br>int ans[M];<br>int v[M];<br>void dfs(int t)<br>{<br>&nbsp;if(t+1&gt;=len&amp;&amp;a[t]!=n)return;<br>&nbsp;&nbsp;&nbsp; if(a[t-1]==n)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(t&lt;len)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;t;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans[i]=a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len=t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;return;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; for(int i=t-1;i&gt;=0;i--)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;if(a[i]*2&lt;=a[t-1])return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=i;j&gt;=0;j--)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[t]=a[i]+a[j];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[t]&gt;a[t-1]&amp;&amp;a[t]&lt;=n)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(t+1==len-1&amp;&amp;a[t]&lt;n)break;<br>&nbsp;&nbsp;&nbsp;&nbsp;dfs(t+1);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;if(t+1&gt;=len)return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; while(1)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d",&amp;n);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(n==0)break;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(a,0,sizeof(a));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[0]=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len=1&lt;&lt;29;<br>&nbsp;&nbsp;dfs(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;len;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d ",ans[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("\n");<br>&nbsp;&nbsp;&nbsp; }<br>}<br></p>
<img src ="http://www.cppblog.com/ickchen2/aggbug/61361.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-09-09 10:31 <a href="http://www.cppblog.com/ickchen2/articles/61361.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 3268 最短路</title><link>http://www.cppblog.com/ickchen2/articles/61290.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Mon, 08 Sep 2008 02:29:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/61290.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/61290.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/61290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/61290.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/61290.html</trackback:ping><description><![CDATA[<p>/*一道双向求最短路的题...不要建两个VECTOR来利用传参求解,VECTOR传过去特别慢,利用记边,然后构两次图,来达到目的*/<br>#include&lt;cstdio&gt;<br>#include&lt;cstring&gt;<br>#include&lt;algorithm&gt;<br>#include&lt;vector&gt;<br>#include&lt;queue&gt;<br>using namespace std;<br>const int maxn=10000;<br>const int maxm=1&lt;&lt;29;<br>int n,m,o;<br>vector&lt; pair&lt;int,int&gt; &gt; g[maxn];<br>long long dis[maxn];//,pre[maxn],cnt[maxn];cnt[i]&gt;n则表示有负环<br>int e[3][maxn];</p>
<p>bool spfa(int s)<br>{<br>&nbsp;queue&lt;int&gt; que;<br>&nbsp;bool inque[maxn];<br>memset(inque,0,sizeof(inque));<br>//&nbsp;memset(pre,0,sizeof(pre));memset(cnt,0,sizeof(cnt));<br>&nbsp;que.push(s);inque[s]=1;<br>&nbsp;for(int i=0;i&lt;=n;i++)dis[i]=maxm;<br>&nbsp;dis[s]=0; //pre[s]=s;cnt[s]++;<br>&nbsp;while(!que.empty())<br>&nbsp;{<br>&nbsp;&nbsp;int v=que.front();<br>&nbsp;&nbsp;que.pop();inque[v]=0;<br>&nbsp;&nbsp;for(int i=0;i&lt;g[v].size();i++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;int u=g[v][i].first;<br>&nbsp;&nbsp;&nbsp;if(dis[v]+g[v][i].second &lt; dis[u])<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;dis[u]=dis[v]+g[v][i].second;// pre[u]=i;cnt[u]++;if(cnt[u]&gt;n)return 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!inque[u])<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;que.push(u);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inque[u]=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;}<br>&nbsp;return 1;<br>}</p>
<p>long long ans;<br>int t;<br>int d[maxn];<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; //freopen("3268.txt","r",stdin);<br>&nbsp;&nbsp;&nbsp; int s;<br>&nbsp;{<br>&nbsp;&nbsp;scanf("%d%d%d",&amp;n,&amp;m,&amp;s);<br>&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;=n;i++)g[i].clear();<br>&nbsp;&nbsp;for(int i=0;i&lt;m;i++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;scanf("%d%d%d",&amp;e[0][i],&amp;e[1][i],&amp;e[2][i]);<br>&nbsp;&nbsp;&nbsp;g[e[0][i]].push_back(make_pair(e[1][i],e[2][i]));<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;spfa(s);<br>&nbsp;&nbsp;for(int i=1;i&lt;=n;i++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d[i]+=dis[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=1;i&lt;=n;i++)g[i].clear();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;m;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g[e[1][i]].push_back(make_pair(e[0][i],e[2][i]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;spfa(s);<br>&nbsp;&nbsp;for(int i=1;i&lt;=n;i++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d[i]+=dis[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int ma=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=1;i&lt;=n;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ma=max(d[i],ma);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;printf("%d\n",ma);<br>&nbsp;}<br>&nbsp;return 0;<br>}<br></p>
<img src ="http://www.cppblog.com/ickchen2/aggbug/61290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-09-08 10:29 <a href="http://www.cppblog.com/ickchen2/articles/61290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 3267</title><link>http://www.cppblog.com/ickchen2/articles/61284.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Mon, 08 Sep 2008 01:58:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/61284.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/61284.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/61284.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/61284.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/61284.html</trackback:ping><description><![CDATA[/*一道和LCS类似的题目,dp[i]表示前i个字符要删除的最小个数*/<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;queue&gt;<br>#include&lt;algorithm&gt;<br>#define M 1000<br>using namespace std;<br>string s;<br>string t;<br>vector&lt;string&gt;din;<br>int dp[M];<br>void comp(int pos,int n)<br>{<br>&nbsp;&nbsp;&nbsp; int r=0;<br>&nbsp;&nbsp;&nbsp; int k;<br>&nbsp;&nbsp;&nbsp; for(int i=pos;i&lt;s.size();i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(s[i]==din[n][r])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(r&gt;=din[n].size()){k=i;break;}<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if(r&gt;=din[n].size())<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int p=k-pos+1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(dp[pos]+k-pos+1-din[n].size()&lt;dp[pos+p])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dp[pos+p]=dp[pos]+k-pos+1-din[n].size();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; freopen("3267.txt","r",stdin);<br>&nbsp;&nbsp;&nbsp; int n,m;<br>&nbsp;&nbsp;&nbsp; scanf("%d%d",&amp;n,&amp;m);<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;=m;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dp[i]=1&lt;&lt;30;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; dp[0]=0;<br>&nbsp;&nbsp;&nbsp; cin&gt;&gt;s;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin&gt;&gt;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; din.push_back(t);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;m;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0;j&lt;n;j++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(din[j][0]==s[i])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i+din[j].size()&lt;=m)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comp(i,j);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(dp[i]+1&lt;dp[i+1])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dp[i+1]=dp[i]+1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; printf("%d\n",dp[m]);<br>}<br>
<img src ="http://www.cppblog.com/ickchen2/aggbug/61284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-09-08 09:58 <a href="http://www.cppblog.com/ickchen2/articles/61284.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 3270 置换群</title><link>http://www.cppblog.com/ickchen2/articles/61279.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Mon, 08 Sep 2008 01:17:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/61279.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/61279.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/61279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/61279.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/61279.html</trackback:ping><description><![CDATA[<p>/*一道USACO 2007的题...很好的一道利用置换群去排序的题*/<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;queue&gt;<br>#include&lt;algorithm&gt;<br>#define M 1000<br>using namespace std;<br>struct cow<br>{<br>&nbsp;&nbsp;&nbsp; int weight;<br>&nbsp;&nbsp;&nbsp; int id;<br>};<br>cow c[M];<br>int cmp(const cow a,const cow b)<br>{<br>&nbsp;&nbsp;&nbsp; return a.weight&lt;b.weight;<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; freopen("3270.txt","r",stdin);<br>&nbsp;&nbsp;&nbsp; int n;<br>&nbsp;&nbsp;&nbsp; scanf("%d",&amp;n);</p>
<p>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d",&amp;c[i].weight);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[i].id=i;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; sort(c,c+n,cmp);<br>&nbsp;&nbsp;&nbsp; int m=c[0].weight;<br>&nbsp;&nbsp;&nbsp; int ans=0;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(c[i].id!=-1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j=c[i].id;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int w=c[i].weight;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int k=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(j!=i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans+=c[j].weight;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int nxt=c[j].id;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[j].id=-1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j=nxt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[i].id=-1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans+=min((k-1)*w,(k-1)*m+2*(m+w));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; printf("%d\n",ans);<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br></p>
<img src ="http://www.cppblog.com/ickchen2/aggbug/61279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-09-08 09:17 <a href="http://www.cppblog.com/ickchen2/articles/61279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1951 字符串处理  很囧的一道题</title><link>http://www.cppblog.com/ickchen2/articles/60896.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Thu, 04 Sep 2008 05:06:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/60896.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/60896.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/60896.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/60896.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/60896.html</trackback:ping><description><![CDATA[<p>要注意处理标点前的空格...不然就狂PE了...<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;algorithm&gt;<br>#define M 1000<br>using namespace std;<br>map&lt;char,int&gt;m;<br>map&lt;char,int&gt;::iterator it;<br>char str[M];<br>string ans;<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp;// freopen("1951.txt","r",stdin);<br>&nbsp;&nbsp;&nbsp;// freopen("1951o.txt","w",stdout);<br>&nbsp;&nbsp;&nbsp; m['A']=1;<br>&nbsp;&nbsp;&nbsp; m['E']=1;<br>&nbsp;&nbsp;&nbsp; m['I']=1;<br>&nbsp;&nbsp;&nbsp; m['O']=1;<br>&nbsp;&nbsp;&nbsp; m['U']=1;<br>&nbsp;&nbsp;&nbsp; gets(str);<br>&nbsp;&nbsp;&nbsp; int n=strlen(str);<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(str[i]&lt;='Z'&amp;&amp;str[i]&gt;='A')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m.find(str[i])==m.end())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans+=str[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m[str[i]]=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(str[i]==' ')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ans[ans.size()-1]!=' ')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans+=str[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ans[ans.size()-1]==' ')ans[ans.size()-1]=str[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans+=str[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; n=ans.size()-1;<br>&nbsp;&nbsp;&nbsp; while(ans[n]==' ')n--;<br>&nbsp;&nbsp;&nbsp; int i=0;<br>&nbsp;&nbsp;&nbsp; while(ans[i]==' ')i++;<br>&nbsp;&nbsp;&nbsp; for(;i&lt;=n;i++)printf("%c",ans[i]);<br>&nbsp;&nbsp;&nbsp; //cout&lt;&lt;s&lt;&lt;endl;<br>}<br></p>
<img src ="http://www.cppblog.com/ickchen2/aggbug/60896.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-09-04 13:06 <a href="http://www.cppblog.com/ickchen2/articles/60896.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ3636  贪心算法</title><link>http://www.cppblog.com/ickchen2/articles/60583.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Mon, 01 Sep 2008 04:04:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/60583.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/60583.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/60583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/60583.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/60583.html</trackback:ping><description><![CDATA[很囧的一道排序加贪心<br>两个都是N^2的算法......居然这个过了~~~~<br>囧啊~~<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;algorithm&gt;<br>#define M 20010<br>using namespace std;<br>struct doll<br>{<br>&nbsp;&nbsp;&nbsp; int w,h;<br>};<br>vector&lt;doll&gt;a;<br>vector&lt;doll&gt;b;<br>int cmp(const doll a,const doll b)<br>{<br>&nbsp;&nbsp;&nbsp; return a.w&lt;b.w||a.w==b.w&amp;&amp;a.h&gt;b.h;<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp;// freopen("3636.txt","r",stdin);<br>&nbsp;&nbsp;&nbsp; int ca;<br>&nbsp;&nbsp;&nbsp; scanf("%d",&amp;ca);<br>&nbsp;&nbsp;&nbsp; while(ca--)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int n;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d",&amp;n);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.clear();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.clear();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doll d;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d%d",&amp;d.w,&amp;d.h);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.push_back(d);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sort(a.begin(),a.end(),cmp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int flag=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0;j&lt;b.size();j++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[i].w&gt;b[j].w&amp;&amp;a[i].h&gt;b[j].h)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b[j].w=a[i].w;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b[j].h=a[i].h;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!flag)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.push_back(a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\n",b.size());<br>&nbsp;&nbsp;&nbsp; }<br>}<br>
<img src ="http://www.cppblog.com/ickchen2/aggbug/60583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-09-01 12:04 <a href="http://www.cppblog.com/ickchen2/articles/60583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1088简单的记忆搜索</title><link>http://www.cppblog.com/ickchen2/articles/60233.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Thu, 28 Aug 2008 02:35:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/60233.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/60233.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/60233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/60233.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/60233.html</trackback:ping><description><![CDATA[只用了二维的数组来记忆<br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;queue&gt;<br>#include&lt;algorithm&gt;<br>#define M 1000<br>using namespace std;<br>int a[M][M];//m*n<br>int f[M][M];<br>int s[4][2]={{-1,0},{1,0},{0,1},{0,-1}};<br>int m,n;<br>bool ok(int x,int y)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; return (x&gt;=0&amp;&amp;x&lt;n&amp;&amp;y&gt;=0&amp;&amp;y&lt;m);<br>}<br>int dfs(int x,int y)<br>{<br>&nbsp;if(f[x][y]&gt;=0)return f[x][y];<br>&nbsp;int ma=0;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;4;i++)<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int xx=x+s[i][0];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int yy=y+s[i][1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ok(xx,yy)&amp;&amp;a[xx][yy]&lt;a[x][y])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ma&lt;dfs(xx,yy))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ma=dfs(xx,yy);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; f[x][y]=ma+1;<br>&nbsp;&nbsp;&nbsp; return f[x][y];<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; scanf("%d%d",&amp;n,&amp;m);<br>&nbsp;&nbsp;&nbsp; memset(f,-1,sizeof(f));<br>&nbsp;&nbsp;&nbsp; int mi=-1;<br>&nbsp;&nbsp;&nbsp; int x,y;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0;j&lt;m;j++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d",&amp;a[i][j]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; mi=-1;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;n;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0;j&lt;m;j++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(mi==-1||mi&lt;dfs(i,j))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi=dfs(i,j);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; printf("%d\n",mi);<br>}<br>
<img src ="http://www.cppblog.com/ickchen2/aggbug/60233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-08-28 10:35 <a href="http://www.cppblog.com/ickchen2/articles/60233.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>很囧的POJ2155</title><link>http://www.cppblog.com/ickchen2/articles/59909.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Mon, 25 Aug 2008 06:33:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/59909.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/59909.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/59909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/59909.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/59909.html</trackback:ping><description><![CDATA[<p>这是一道树状数组的题目~~<br>居然可以把ADD和SUM反过来干...<br>以后有时间要研究研究下~~<br><br>#include&lt;stdio.h&gt;<br>#include&lt;iostream&gt;<br>#include&lt;string&gt;<br>#include&lt;vector&gt;<br>#include&lt;map&gt;<br>#include&lt;algorithm&gt;<br>#define M 1003<br>using namespace std;<br>int g[M][M];<br>int n;<br>void add(int x,int y)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; while(y&lt;=n)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int xx=x;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(xx&lt;=n)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g[xx][y]++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xx+=xx&amp;-xx;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y+=y&amp;-y;<br>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>}<br>int sum(int x2,int y2)<br>{<br>&nbsp;&nbsp;&nbsp; int s=0;<br>&nbsp;&nbsp;&nbsp; while(y2)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int xx=x2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(xx)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s+=g[xx][y2];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xx-=xx&amp;-xx;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y2-=y2&amp;-y2;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return s;<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; int cs;<br>&nbsp;&nbsp;&nbsp; scanf("%d",&amp;cs);<br>&nbsp;&nbsp;&nbsp; while(cs--)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(g,0,sizeof(g));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d%d",&amp;n,&amp;t);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;t;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char op;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getchar();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%c",&amp;op);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //cout&lt;&lt;op&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(op=='C')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x1,y1,x2,y2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d%d%d%d",&amp;x1,&amp;y1,&amp;x2,&amp;y2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(x1,y1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(x1,y2+1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(x2+1,y1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(x2+1,y2+1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x1,y1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d%d",&amp;x1,&amp;y1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\n",sum(x1,y1)%2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("\n");<br>&nbsp;&nbsp;&nbsp; }<br>}<br></p>
<img src ="http://www.cppblog.com/ickchen2/aggbug/59909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-08-25 14:33 <a href="http://www.cppblog.com/ickchen2/articles/59909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转过来的阶段性训练</title><link>http://www.cppblog.com/ickchen2/articles/59750.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Sat, 23 Aug 2008 16:14:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/59750.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/59750.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/59750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/59750.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/59750.html</trackback:ping><description><![CDATA[这安排值得参考参考<br><br>中级:<br><br>一.基本算法:<br>&nbsp;&nbsp;&nbsp;&nbsp; (1)C++的标准模版库的应用. (poj3096,poj3007)<br>&nbsp;&nbsp;&nbsp;&nbsp; (2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706)<br><br>二.图算法:<br>&nbsp;&nbsp;&nbsp;&nbsp; (1)差分约束系统的建立和求解. (poj1201,poj2983)<br>&nbsp;&nbsp;&nbsp;&nbsp; (2)最小费用最大流(poj2516,poj2195)<br>&nbsp;&nbsp;&nbsp;&nbsp; (3)双连通分量(poj2942)<br>&nbsp;&nbsp;&nbsp;&nbsp; (4)强连通分支及其缩点.(poj2186)<br>&nbsp;&nbsp;&nbsp;&nbsp; (5)图的割边和割点(poj3352)<br>&nbsp;&nbsp;&nbsp;&nbsp; (6)最小割模型、网络流规约(poj3308, )<br><br>三.数据结构.<br>&nbsp;&nbsp;&nbsp;&nbsp; (1)线段树. (poj2528,poj2828,poj2777,poj2886,poj2750)<br>&nbsp;&nbsp;&nbsp;&nbsp; (2)静态二叉检索树. (poj2482,poj2352)<br>&nbsp;&nbsp;&nbsp;&nbsp; (3)树状树组(poj1195,poj3321)<br>&nbsp;&nbsp;&nbsp;&nbsp; (4)RMQ. (poj3264,poj3368)<br>&nbsp;&nbsp;&nbsp;&nbsp; (5)并查集的高级应用. (poj1703,2492)<br>&nbsp;&nbsp;&nbsp;&nbsp; (6)KMP算法. (poj1961,poj2406)<br><br>四.搜索<br>&nbsp;&nbsp;&nbsp;&nbsp; (1)最优化剪枝和可行性剪枝<br>&nbsp;&nbsp;&nbsp;&nbsp; (2)搜索的技巧和优化 (poj3411,poj1724)<br>&nbsp;&nbsp;&nbsp;&nbsp; (3)记忆化搜索(poj3373,poj1691)<br><br>五.动态规划<br>&nbsp;&nbsp;&nbsp;&nbsp; (1)较为复杂的动态规划(如动态规划解特别的施行商问题等)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)<br>&nbsp;&nbsp;&nbsp;&nbsp; (2)记录状态的动态规划. (POJ3254,poj2411,poj1185)<br>&nbsp;&nbsp;&nbsp;&nbsp; (3)树型动态规划(poj2057,poj1947,poj2486,poj3140)<br><br>六.数学<br>&nbsp;&nbsp;&nbsp;&nbsp; (1)组合数学:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.容斥原理.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.抽屉原理.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.递推关系和母函数.<br><br>&nbsp;&nbsp;&nbsp;&nbsp; (2)数学.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.概率问题. (poj3071,poj3440)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.GCD、扩展的欧几里德(中国剩余定理) (poj3101)<br>&nbsp;&nbsp;&nbsp;&nbsp; (3)计算方法.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.0/1分数规划. (poj2976)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.三分法求解单峰(单谷)的极值.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.矩阵法(poj3150,poj3422,poj3070)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.迭代逼近(poj3301)<br>&nbsp;&nbsp;&nbsp;&nbsp; (4)随机化算法(poj3318,poj2454)<br>&nbsp;&nbsp;&nbsp;&nbsp; (5)杂题.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (poj1870,poj3296,poj3286,poj1095)<br><br>七.计算几何学.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)坐标离散化.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3)多边形的内核(半平面交)(poj3130,poj3335)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4)几何工具的综合应用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)<br>
<img src ="http://www.cppblog.com/ickchen2/aggbug/59750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ickchen2/" target="_blank">神之子</a> 2008-08-24 00:14 <a href="http://www.cppblog.com/ickchen2/articles/59750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>