﻿<?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-文章分类-PKU月赛</title><link>http://www.cppblog.com/ickchen2/category/8416.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 06 Oct 2008 10:17:43 GMT</lastBuildDate><pubDate>Mon, 06 Oct 2008 10:17:43 GMT</pubDate><ttl>60</ttl><item><title>PKU3705</title><link>http://www.cppblog.com/ickchen2/articles/63308.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Mon, 06 Oct 2008 04:53:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/63308.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/63308.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/63308.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/63308.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/63308.html</trackback:ping><description><![CDATA[<pre class="sh_cpp sh_sourceCode" style="FONT-FAMILY: Courier New,Courier,monospace"><span class=sh_preproc>/*求最小的块移动求逆序*/<br>#include</span><span class=sh_string>&lt;stdio.h&gt;</span>
<span class=sh_preproc>#include</span><span class=sh_string>&lt;iostream&gt;</span>
<span class=sh_preproc>#include</span><span class=sh_string>&lt;string&gt;</span>
<span class=sh_preproc>#include</span><span class=sh_string>&lt;vector&gt;</span>
<span class=sh_preproc>#include</span><span class=sh_string>&lt;map&gt;</span>
<span class=sh_preproc>#include</span><span class=sh_string>&lt;queue&gt;</span>
<span class=sh_preproc>#include</span><span class=sh_string>&lt;algorithm&gt;</span>
<span class=sh_preproc>#include</span><span class=sh_string>&lt;math.h&gt;</span>
<span class=sh_preproc>#define</span> M <span class=sh_number>1000</span>
<span class=sh_keyword>using</span> <span class=sh_keyword>namespace</span> std<span class=sh_symbol>;</span>
<span class=sh_type>void</span> <span class=sh_function>ans</span><span class=sh_symbol>(</span><span class=sh_type>int</span> n<span class=sh_symbol>)</span>
<span class=sh_cbracket>{</span>
<span class=sh_type>int</span> pos<span class=sh_symbol>=</span><span class=sh_number>1</span><span class=sh_symbol>;</span>
<span class=sh_keyword>while</span><span class=sh_symbol>(</span>pos<span class=sh_symbol>!=</span>n<span class=sh_symbol>)</span>
<span class=sh_cbracket>{</span>
<span class=sh_function>printf</span><span class=sh_symbol>(</span><span class=sh_string>"%d %d %d</span><span class=sh_specialchar>\n</span><span class=sh_string>"</span><span class=sh_symbol>,(</span>n<span class=sh_symbol>-</span>pos<span class=sh_symbol>)/</span><span class=sh_number>2</span><span class=sh_symbol>+</span>pos<span class=sh_symbol>,</span><span class=sh_number>2</span><span class=sh_symbol>,</span>pos<span class=sh_symbol>/</span><span class=sh_number>2</span><span class=sh_symbol>);</span>
pos<span class=sh_symbol>+=</span><span class=sh_number>2</span><span class=sh_symbol>;</span>
<span class=sh_comment>//cout&lt;&lt;pos&lt;&lt;endl;</span>
<span class=sh_cbracket>}</span>
<span class=sh_function>printf</span><span class=sh_symbol>(</span><span class=sh_string>"%d %d %d</span><span class=sh_specialchar>\n</span><span class=sh_string>"</span><span class=sh_symbol>,</span><span class=sh_number>1</span><span class=sh_symbol>,(</span>n<span class=sh_number>-1</span><span class=sh_symbol>)/</span><span class=sh_number>2</span><span class=sh_symbol>,(</span>n<span class=sh_number>-1</span><span class=sh_symbol>)/</span><span class=sh_number>2</span><span class=sh_symbol>);</span>
<span class=sh_cbracket>}</span>
<span class=sh_type>int</span> <span class=sh_function>main</span><span class=sh_symbol>()</span>
<span class=sh_cbracket>{</span>
<span class=sh_type>int</span> n<span class=sh_symbol>;</span>
<span class=sh_function>scanf</span><span class=sh_symbol>(</span><span class=sh_string>"%d"</span><span class=sh_symbol>,&amp;</span>n<span class=sh_symbol>);</span>
<span class=sh_keyword>if</span><span class=sh_symbol>(</span>n<span class=sh_symbol>==</span><span class=sh_number>1</span><span class=sh_symbol>)</span><span class=sh_function>printf</span><span class=sh_symbol>(</span><span class=sh_string>"0</span><span class=sh_specialchar>\n</span><span class=sh_string>"</span><span class=sh_symbol>);</span>
<span class=sh_keyword>else</span> <span class=sh_keyword>if</span><span class=sh_symbol>(</span>n<span class=sh_symbol>==</span><span class=sh_number>2</span><span class=sh_symbol>)</span>
<span class=sh_cbracket>{</span>
<span class=sh_function>printf</span><span class=sh_symbol>(</span><span class=sh_string>"1</span><span class=sh_specialchar>\n</span><span class=sh_string>"</span><span class=sh_symbol>);</span>
<span class=sh_function>printf</span><span class=sh_symbol>(</span><span class=sh_string>"%d %d %d</span><span class=sh_specialchar>\n</span><span class=sh_string>"</span><span class=sh_symbol>,</span><span class=sh_number>1</span><span class=sh_symbol>,</span><span class=sh_number>1</span><span class=sh_symbol>,</span><span class=sh_number>1</span><span class=sh_symbol>);</span>
<span class=sh_cbracket>}</span>
<span class=sh_keyword>else</span> <span class=sh_keyword>if</span><span class=sh_symbol>(</span>n<span class=sh_symbol>&amp;</span><span class=sh_number>1</span><span class=sh_symbol>)</span>
<span class=sh_cbracket>{</span>
<span class=sh_function>printf</span><span class=sh_symbol>(</span><span class=sh_string>"%d</span><span class=sh_specialchar>\n</span><span class=sh_string>"</span><span class=sh_symbol>,(</span><span class=sh_type>int</span><span class=sh_symbol>)</span><span class=sh_function>ceil</span><span class=sh_symbol>((</span>n<span class=sh_number>+1</span><span class=sh_symbol>)/</span><span class=sh_number>2.0</span><span class=sh_symbol>));</span>
<span class=sh_function>ans</span><span class=sh_symbol>(</span>n<span class=sh_symbol>);</span>
<span class=sh_cbracket>}</span>
<span class=sh_keyword>else</span>
<span class=sh_cbracket>{</span>
<span class=sh_function>printf</span><span class=sh_symbol>(</span><span class=sh_string>"%d</span><span class=sh_specialchar>\n</span><span class=sh_string>"</span><span class=sh_symbol>,(</span><span class=sh_type>int</span><span class=sh_symbol>)</span><span class=sh_function>ceil</span><span class=sh_symbol>((</span>n<span class=sh_number>+1</span><span class=sh_symbol>)/</span><span class=sh_number>2.0</span><span class=sh_symbol>));</span>
<span class=sh_function>ans</span><span class=sh_symbol>(</span>n<span class=sh_number>-1</span><span class=sh_symbol>);</span>
<span class=sh_function>printf</span><span class=sh_symbol>(</span><span class=sh_string>"%d %d %d</span><span class=sh_specialchar>\n</span><span class=sh_string>"</span><span class=sh_symbol>,</span>n<span class=sh_symbol>,</span><span class=sh_number>1</span><span class=sh_symbol>,</span><span class=sh_number>0</span><span class=sh_symbol>);</span>
<span class=sh_cbracket>}</span>
<span class=sh_cbracket>}</span>
</pre>
<img src ="http://www.cppblog.com/ickchen2/aggbug/63308.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-10-06 12:53 <a href="http://www.cppblog.com/ickchen2/articles/63308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU3702 搜索</title><link>http://www.cppblog.com/ickchen2/articles/63306.html</link><dc:creator>神之子</dc:creator><author>神之子</author><pubDate>Mon, 06 Oct 2008 04:51:00 GMT</pubDate><guid>http://www.cppblog.com/ickchen2/articles/63306.html</guid><wfw:comment>http://www.cppblog.com/ickchen2/comments/63306.html</wfw:comment><comments>http://www.cppblog.com/ickchen2/articles/63306.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ickchen2/comments/commentRss/63306.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ickchen2/services/trackbacks/63306.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 10000<br>using namespace std;<br>int a[4];<br>int b[4];<br>int v[M];<br>int ans;<br>int que[M];<br>string s1,s2;<br>void init(int *a,int *b)<br>{<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;4;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]=b[i];<br>&nbsp;&nbsp;&nbsp; }<br>}<br>bool bfs()<br>{<br>&nbsp;&nbsp;&nbsp; memset(v,0,sizeof(v));<br>&nbsp;&nbsp;&nbsp; int t=0;<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;4;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=t*10+a[i];<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; int tail=0,head=0;<br>&nbsp;&nbsp;&nbsp; que[tail++]=t;<br>&nbsp;&nbsp;&nbsp; v[t]=1;<br>&nbsp;&nbsp;&nbsp; while(head&lt;tail)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int k=que[head++];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=3;i&gt;=0;--i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]=k%10;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k/=10;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b[i]=a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;4;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; init(a,b);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[i]&amp;&amp;a[(i+2)%4]&amp;&amp;a[(i+1)%4]&lt;8&amp;&amp;a[(i+3)%4]&lt;8)<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]--;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[(i+1)%4]++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[(i+2)%4]--;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[(i+3)%4]++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int t=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0;j&lt;4;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; t=t*10+a[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(!v[t]){v[t]=1;que[tail++]=t;if(t==ans)return true;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; init(a,b);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[i]&amp;&amp;a[(i+1)%4]&amp;&amp;a[(i+2)%4]&lt;8)<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]--;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[(i+1)%4]--;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[(i+2)%4]++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0;j&lt;4;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; t=t*10+a[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(!v[t]){v[t]=1;que[tail++]=t;if(t==ans)return true;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return false;<br>}<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; freopen("3702.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; cin&gt;&gt;s1&gt;&gt;s2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(a,0,sizeof(a));<br>&nbsp;&nbsp;memset(b,0,sizeof(b));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int t=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;s1.size();i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(s1[i]=='*')a[i%4]++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;s2.size();i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(s2[i]=='*')b[i%4]++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;4;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans=ans*10+b[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=t*10+a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(t==ans)printf("YES\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%s\n",bfs()?"YES":"NO");<br>&nbsp;&nbsp;&nbsp; }<br>}<br>
<img src ="http://www.cppblog.com/ickchen2/aggbug/63306.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-10-06 12:51 <a href="http://www.cppblog.com/ickchen2/articles/63306.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>