﻿<?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++博客-From A Start,As An Acmer-随笔分类-BOJ Solution Report</title><link>http://www.cppblog.com/aswmtjdsj/category/17257.html</link><description>My Way to Final</description><language>zh-cn</language><lastBuildDate>Wed, 09 Nov 2011 02:53:54 GMT</lastBuildDate><pubDate>Wed, 09 Nov 2011 02:53:54 GMT</pubDate><ttl>60</ttl><item><title>HDU 4087 &amp; BOJ 244 A Letter to Programmers 【三维仿射变幻的齐次矩阵乘+快速幂】</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/11/07/159777.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Mon, 07 Nov 2011 11:55:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/11/07/159777.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/159777.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/11/07/159777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/159777.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/159777.html</trackback:ping><description><![CDATA[题意很裸，亮点在于将齐次仿射变换矩阵和快速幂结合起来。<br /><br />题目读入延续了pku出题的ws风格，还得用一个dfs处理读入。<br />题目输出也很蛋疼，标准写法竟然会导致-0.0出现，必须手动加一个eps来修改偏差。没有spj的二货。<br /><br />附上仿射变换矩阵：<br /><br />平移<br /><div><div>translate tx ty tz</div><div>1 0 0 tx</div><div>0 1 0 ty</div><div>0 0 1 tz</div><div>0 0 0 1</div><div>缩放</div><div>scale kx ky kz</div><div>kx 0 &nbsp;0 &nbsp;0</div><div>0 &nbsp;ky 0 &nbsp;0</div><div>0 &nbsp;0 &nbsp;kz 0</div><div>0 &nbsp;0 &nbsp;0 &nbsp;1</div><div>绕任意轴（过原点）旋转（注意要把轴向量归一化，不然会在&#8220;点在轴上&#8221;这个情况下出问题）</div><div>rotate x y z d</div><div>(1-cos(d))*x*x+cos(d) &nbsp; &nbsp; (1-cos(d))*x*y-sin(d)*z &nbsp; (1-cos(d))*x*z+sin(d)*y &nbsp; 0</div><div>(1-cos(d))*y*x+sin(d)*z &nbsp; (1-cos(d))*y*y+cos(d) &nbsp; &nbsp; (1-cos(d))*y*z-sin(d)*x &nbsp; 0</div><div>(1-cos(d))*z*x-sin(d)*y &nbsp; (1-cos(d))*z*y+sin(d)*x &nbsp; (1-cos(d))*z*z+cos(d) &nbsp; &nbsp; 0</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1<br /><br />附代码，一开始装b用stack模拟读入过程，re啊wa啊各种sb。最后被迫用了dfs。唉，naive。<br /><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#include&nbsp;&lt;iostream&gt;<br />#include&nbsp;&lt;cctype&gt;<br />#include&nbsp;&lt;cstdio&gt;<br />#include&nbsp;&lt;cstring&gt;<br />#include&nbsp;&lt;stack&gt;<br />#include&nbsp;&lt;cmath&gt;<br /><span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br /><span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;eps&nbsp;=&nbsp;1e-6;<br /><span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;pi&nbsp;=&nbsp;acos(-1.0);<br /><span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;maxn&nbsp;=&nbsp;1005;<br /><span style="color: #0000FF; ">int</span>&nbsp;sgn(<span style="color: #0000FF; ">double</span>&nbsp;x){<span style="color: #0000FF; ">return</span>&nbsp;x&nbsp;&lt;&nbsp;-eps?-1:x&nbsp;&gt;&nbsp;eps;}<br /><span style="color: #0000FF; ">#define</span>&nbsp;rep(i,j,k)&nbsp;for(int&nbsp;(i)&nbsp;=&nbsp;(j);(i)&nbsp;&lt;&nbsp;(k);(i)&nbsp;++)<br /><span style="color: #0000FF; ">struct</span>&nbsp;matrix<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;r,c;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;v[5][5];<br />&nbsp;&nbsp;&nbsp;&nbsp;matrix(){}<br />&nbsp;&nbsp;&nbsp;&nbsp;matrix(<span style="color: #0000FF; ">int</span>&nbsp;a,<span style="color: #0000FF; ">int</span>&nbsp;b):r(a),c(b)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(i,0,r)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fill(v[i],v[i]&nbsp;+&nbsp;c,0.0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(r&nbsp;==&nbsp;c)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(i,0,r)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[i][i]&nbsp;=&nbsp;1.0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;init()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;matrix(r,c);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;*&nbsp;(<span style="color: #0000FF; ">const</span>&nbsp;matrix&nbsp;p)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;ans(r,p.c);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(i,0,r)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(j,0,ans.c)<br />&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;<span style="color: #0000FF; ">double</span>&nbsp;tmp&nbsp;=&nbsp;0.0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(k,0,c)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;+=&nbsp;v[i][k]&nbsp;*&nbsp;p.v[k][j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans.v[i][j]&nbsp;=&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />};<br />matrix&nbsp;power(matrix&nbsp;a,<span style="color: #0000FF; ">int</span>&nbsp;n)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;e(a.c,a.c);<span style="color: #008000; ">//</span><span style="color: #008000; ">square&nbsp;matrix&nbsp;of&nbsp;a.c&nbsp;*&nbsp;a.c</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(n&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;e;<br />&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;ans&nbsp;=&nbsp;power(a,n/2);<br />&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;ans&nbsp;*&nbsp;ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(n%2)?ans&nbsp;*&nbsp;a&nbsp;:&nbsp;ans;<br />}<br /><span style="color: #0000FF; ">struct</span>&nbsp;point<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;x,y,z;<br />&nbsp;&nbsp;&nbsp;&nbsp;point(){}<br />&nbsp;&nbsp;&nbsp;&nbsp;point(<span style="color: #0000FF; ">double</span>&nbsp;a,<span style="color: #0000FF; ">double</span>&nbsp;b,<span style="color: #0000FF; ">double</span>&nbsp;c):x(a),y(b),z(c){}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;<span style="color: #0000FF; ">in</span>()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%lf&nbsp;%lf&nbsp;%lf",&amp;x,&amp;y,&amp;z);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;print()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%.2lf&nbsp;%.2lf&nbsp;%.2lf\n",x&nbsp;+&nbsp;eps,y&nbsp;+&nbsp;eps,z&nbsp;+&nbsp;eps);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}p[maxn];<br /><span style="color: #0000FF; ">int</span>&nbsp;n;<br />point&nbsp;fuck(point&nbsp;now,matrix&nbsp;a)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;o(4,1);<br />&nbsp;&nbsp;&nbsp;&nbsp;o.v[0][0]&nbsp;=&nbsp;now.x;<br />&nbsp;&nbsp;&nbsp;&nbsp;o.v[1][0]&nbsp;=&nbsp;now.y;<br />&nbsp;&nbsp;&nbsp;&nbsp;o.v[2][0]&nbsp;=&nbsp;now.z;<br />&nbsp;&nbsp;&nbsp;&nbsp;o.v[3][0]&nbsp;=&nbsp;1.0;<br />&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;ans&nbsp;=&nbsp;a&nbsp;*&nbsp;o;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;point(ans.v[0][0],ans.v[1][0],ans.v[2][0]);<br />}<br /><span style="color: #0000FF; ">char</span>&nbsp;op[20];<br />matrix&nbsp;dfs(<span style="color: #0000FF; ">int</span>&nbsp;times)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;ans(4,4);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;v[5];<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;what;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(scanf("%s",op)&nbsp;==&nbsp;1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;temp(4,4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(op[0]&nbsp;==&nbsp;'e')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(op[0]&nbsp;==&nbsp;'r')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(op[1]&nbsp;==&nbsp;'e')<br />&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;scanf("%d",&amp;what);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;dfs(what);<br />&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;<span style="color: #0000FF; ">else</span><br />&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;rep(i,0,4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%lf",&amp;v[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;l&nbsp;=&nbsp;0.0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(i,0,3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;+=&nbsp;v[i]&nbsp;*&nbsp;v[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;=&nbsp;sqrt(l);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[3]&nbsp;=&nbsp;v[3]&nbsp;/&nbsp;180.0&nbsp;*&nbsp;pi;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;ct&nbsp;=&nbsp;cos(v[3]),st&nbsp;=&nbsp;sin(v[3]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(i,0,3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[i]&nbsp;/=&nbsp;l;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[0][0]&nbsp;=&nbsp;(1.0&nbsp;-&nbsp;ct)&nbsp;*&nbsp;v[0]&nbsp;*&nbsp;v[0]&nbsp;+&nbsp;ct;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[0][1]&nbsp;=&nbsp;(1.0&nbsp;-&nbsp;ct)&nbsp;*&nbsp;v[0]&nbsp;*&nbsp;v[1]&nbsp;-&nbsp;st&nbsp;*&nbsp;v[2];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[0][2]&nbsp;=&nbsp;(1.0&nbsp;-&nbsp;ct)&nbsp;*&nbsp;v[0]&nbsp;*&nbsp;v[2]&nbsp;+&nbsp;st&nbsp;*&nbsp;v[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[1][0]&nbsp;=&nbsp;(1.0&nbsp;-&nbsp;ct)&nbsp;*&nbsp;v[1]&nbsp;*&nbsp;v[0]&nbsp;+&nbsp;st&nbsp;*&nbsp;v[2];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[1][1]&nbsp;=&nbsp;(1.0&nbsp;-&nbsp;ct)&nbsp;*&nbsp;v[1]&nbsp;*&nbsp;v[1]&nbsp;+&nbsp;ct;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[1][2]&nbsp;=&nbsp;(1.0&nbsp;-&nbsp;ct)&nbsp;*&nbsp;v[1]&nbsp;*&nbsp;v[2]&nbsp;-&nbsp;st&nbsp;*&nbsp;v[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[2][0]&nbsp;=&nbsp;(1.0&nbsp;-&nbsp;ct)&nbsp;*&nbsp;v[2]&nbsp;*&nbsp;v[0]&nbsp;-&nbsp;st&nbsp;*&nbsp;v[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[2][1]&nbsp;=&nbsp;(1.0&nbsp;-&nbsp;ct)&nbsp;*&nbsp;v[2]&nbsp;*&nbsp;v[1]&nbsp;+&nbsp;st&nbsp;*&nbsp;v[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[2][2]&nbsp;=&nbsp;(1.0&nbsp;-&nbsp;ct)&nbsp;*&nbsp;v[2]&nbsp;*&nbsp;v[2]&nbsp;+&nbsp;ct;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(op[0]&nbsp;==&nbsp;'t')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(i,0,3)<br />&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;scanf("%lf",&amp;v[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[i][3]&nbsp;=&nbsp;v[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(op[0]&nbsp;==&nbsp;'s')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(i,0,3)<br />&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;scanf("%lf",&amp;v[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.v[i][i]&nbsp;=&nbsp;v[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;=&nbsp;temp&nbsp;*&nbsp;ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;power(ans,times);<br />}<br /><span style="color: #0000FF; ">int</span>&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(scanf("%d",&amp;n)&nbsp;==&nbsp;1&nbsp;&amp;&amp;&nbsp;n)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;temp(4,4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;dfs(1)&nbsp;*&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;i&nbsp;&lt;&nbsp;n;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i].<span style="color: #0000FF; ">in</span>();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i]&nbsp;=&nbsp;fuck(p[i],temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i].print();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts("");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div></div></div><div id="chromeVisPage2ExtensionDiv" style="display: none; ">Enter</div><div id="chromeVisExtension2PageDiv" style="display: none; "></div><span style="border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; border-top-width: medium; border-right-width: medium; border-bottom-width: medium; border-left-width: medium; border-top-style: groove; border-right-style: groove; border-bottom-style: groove; border-left-style: groove; position: absolute; z-index: 100000000000; min-height: 5px; border-top-left-radius: 7px 7px; border-top-right-radius: 7px 7px; border-bottom-right-radius: 7px 7px; border-bottom-left-radius: 7px 7px; display: none; top: 0px; min-width: 993px; max-width: 993px; left: 10px; right: 100px; "></span><div id="chromeVisBackground2LensDiv" style="display: none; "></div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/159777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-11-07 19:55 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/11/07/159777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BOJ 247 Gem And Prince ［剪枝爆搜］［36th ACM/ICPC Beijing Regional Onsite J］</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/10/26/159128.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Wed, 26 Oct 2011 06:06:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/10/26/159128.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/159128.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/10/26/159128.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/159128.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/159128.html</trackback:ping><description><![CDATA[<div>               <p><span style="font-family:宋体;">这题我出的，因为邀请赛时候出了道题意有点问题的模板题，所以这次决定出一道题意清楚的非模板题。<br />那天躺在床上玩ipad，突然玩到了《终极宝石》，于是乎就动了给这个游戏写外挂的想法，也就变成了一道题，本来是想出给网赛的，但谁知道最后变成了现场赛题目。<br /><br />judge们看了现场赛最后的题目之后，给这题定为的是第三题，结果由于题目太长＋水题太坑＋神队带歪了board，这题最后也没几个人过。。。<br />其实就是一道搜索而已，而且数据很小，时限很松，随手加点剪枝就可以过。<br /><br />这题明显不存在局部最优解，所以我们想到的解题方法是模拟</span>+<span style="font-family:宋体;">搜索</span>+<span style="font-family:宋体;">剪枝。</span></p>  <p><span style="font-family:宋体;">模拟</span>+<span style="font-family:宋体;">搜索：对于每一个局面，用</span>bfs<span style="font-family:宋体;">穷举出下一步所有可能存在的消除宝石的方法，每发现这样的一个方法就</span>dfs<span style="font-family:宋体;">进入下一层。</span></p>  <p><span style="font-family:宋体;">（即通过</span>floodfill<span style="font-family:宋体;">的方法进行</span>bfs<span style="font-family:宋体;">，每得到一个大小大于</span>2<span style="font-family:宋体;">的连通块的时候就</span>dfs<span style="font-family:宋体;">递归深入下去。这样可以让下面的剪枝得到很好的效果，可以将搜索树的</span>size<span style="font-family:宋体;">大大减小。）</span></p>  <p><span style="font-family:宋体;">剪枝：对于每一个局面，记录它通过之前的步骤已经得到的分数，然后维护它还可能得到的最大的分数（比如已经得到了</span>120<span style="font-family:宋体;">分，还有</span>5<span style="font-family:宋体;">个红色宝石，</span>4<span style="font-family:宋体;">个蓝色宝石，</span>2<span style="font-family:宋体;">个黑色宝石，那此局面可能得到的分数一定不超过</span>120+5*5+4*4<span style="font-family:宋体;">），通过用这个分数与当前已经得到的最大分数进行比较来进行剪枝。对于大多数数据这个剪枝能剪掉</span>99.9%<span style="font-family:宋体;">的节点，所以有时可以跑过</span>10*9<span style="font-family:宋体;">的数据，但是这个剪枝也是不稳定的，存在不少数据能把它卡掉。不过对于题目的最大上限</span>8*8<span style="font-family:宋体;">，这个剪枝已经足够了。<br /><br />至于整体的复杂性分析等我有空或者哪位大牛有空可以详细写一下，在这里就不写出了。<br />我在当judge的时候看到最快的做法是除了以上剪枝之外，还把当前局面hash掉，每次判一下hash，虽然常数会稍微增大，但是重复状态会减少很多。没准加了hash之后可以跑过原来游戏中12*12的解也未可知呢。<br /><br />话说自己写的标被挂掉了，因为常数太大。。。我在这里就放出我的小队友claire大神的标吧。等我有空也许会去写一份加上神优化hash的标呢。<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;N</span><span style="color: #000000; ">=</span><span style="color: #000000; ">14</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[N][N],v[N][N],t[N];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;d[</span><span style="color: #000000; ">8</span><span style="color: #000000; ">][</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">};<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;m,n,o,ans;<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;&nbsp;bfs(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;p,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;q,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[][N],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id[][N],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;w)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;f[N</span><span style="color: #000000; ">*</span><span style="color: #000000; ">N][</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,l</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,x,y;<br />&nbsp;&nbsp;&nbsp;&nbsp;f[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p;&nbsp;f[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">q;<br />&nbsp;&nbsp;&nbsp;&nbsp;v[p][q]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(l</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">r)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #000000; ">=</span><span style="color: #000000; ">f[l][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">];&nbsp;q</span><span style="color: #000000; ">=</span><span style="color: #000000; ">f[l][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id[p][q]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">w;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">8</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p</span><span style="color: #000000; ">+</span><span style="color: #000000; ">d[i][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">q</span><span style="color: #000000; ">+</span><span style="color: #000000; ">d[i][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(x</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;x</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">m&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;y</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;y</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;a[x][y]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">a[p][q]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;v[x][y]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&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;r</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;&nbsp;v[x][y]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[r][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">x;&nbsp;f[r][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;r;<br />}<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;change(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;b[][N])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;temp1[N],temp2[N],i,j,x,y,s</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;&nbsp;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">m;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">m;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(b[i][j]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;temp1[</span><span style="color: #000000; ">++</span><span style="color: #000000; ">x]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(x</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;temp2[</span><span style="color: #000000; ">++</span><span style="color: #000000; ">s]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(x</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(y</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">temp1[x]){&nbsp;b[y][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">b[temp1[x]][j];&nbsp;b[temp1[x]][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(x</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">s)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(y</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">temp2[x])&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">m;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{b[i][y]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">b[i][temp2[x]];&nbsp;b[i][temp2[x]]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;dfs(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;s,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[][N],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;sum)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(s</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">ans)&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">s;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;c[N</span><span style="color: #000000; ">*</span><span style="color: #000000; ">N],e[N</span><span style="color: #000000; ">*</span><span style="color: #000000; ">N],id[N][N]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},w</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(v,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(v));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">m;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;&nbsp;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(a[i][j]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;t[a[i][j]]</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">3</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;v[i][j]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[w]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">bfs(i,j,a,id,w);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[w]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[i][j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;b[N][N];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;k</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">w;&nbsp;k</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(c[k]</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">3</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;sum1</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum</span><span style="color: #000000; ">-</span><span style="color: #000000; ">t[e[k]]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">t[e[k]];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(t[e[k]]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">c[k]</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">3</span><span style="color: #000000; ">)&nbsp;&nbsp;sum1</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum1</span><span style="color: #000000; ">+</span><span style="color: #000000; ">(t[e[k]]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">c[k])</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(t[e[k]]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">c[k]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(sum1</span><span style="color: #000000; ">+</span><span style="color: #000000; ">s</span><span style="color: #000000; ">+</span><span style="color: #000000; ">c[k]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">c[k]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">ans)<br />&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;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">m;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;&nbsp;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(id[i][j]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">k)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[i][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;b[i][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[i][j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;change(b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[e[k]]</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">c[k];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs(s</span><span style="color: #000000; ">+</span><span style="color: #000000; ">c[k]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">c[k],b,sum1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[e[k]]</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">c[k];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,j,k;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">m,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">o)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">3</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(t,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(t));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">m;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;&nbsp;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<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;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a[i][j]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t[a[i][j]]</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">o;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(t[i]</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">3</span><span style="color: #000000; ">)&nbsp;sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">t[i]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">t[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,a,sum);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,ans);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div></span></p></div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/159128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-10-26 14:06 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/10/26/159128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>36th ACM/ICPC 北京网赛memo＋一句话解题报告</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/09/18/156139.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Sun, 18 Sep 2011 14:16:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/09/18/156139.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/156139.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/09/18/156139.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/156139.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/156139.html</trackback:ping><description><![CDATA[<div>Beijing Online Memo &amp; Solution Report(Approximate)<br />这份memo我记录的，就发一下吧。本场的所有题都不是我出的，所以我就不发详细解题报告了，只发个一句话版。<br /><br />Memo<br /><span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, STHeiTi, simsun, sans-serif; line-height: 21px; background-color: #ffffff; ">现在是11:57分 开始记录<br />题目排版全是乱的，我们的排版明明是正确的。。但是却发现后台看和前台看是不一样的。<br />伤不起。。&lt;br&gt;哪里去了！！！！<br /></span><span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, STHeiTi, simsun, sans-serif; line-height: 21px; background-color: #ffffff; ">12:01 第一个提交WA return 0<br />12:07 三个提交A题 这道题怎么可能能过呢。。。<br />12:16 G题被搞，by 中山<br />12:17 D题被搞，by SJTU<br />12:19 六大强校就是六大强校，现在过题的三队中山、sjtu、sjtu<br />12:21 sjtu搞了B题<br />12:24 Tsinghua 搞了F题<br />12:26 J题被搞 by ZJUT<br />12:32 sjtu两题！！还是两支队伍<br />12:36 fdu贡献了第一个PE<br />12:48 K题终于可以提问了- -某个神奇的bug。。。<br />12:49 浙大的gao队 3题<br />12:51 ECNU也三题了！ （43,49,50）太虎了。。登顶。。。<br />12:52 E题有人过了 Tsinghua<br />12:57 ZJU 4 题，各种反超问鼎。。<br />13:02 K题被过，by FUDAN<br />13:12 fudan 五题<br />13:13 MLE的fb出现<br />13:29 fudan 6题<br />13:52 吐个槽。。。真心伤不起。。。oj的各种bug。。。<br />13:53 fudan7题，V5<br />14:23 三队七题。。这board有点像后期的board。。各种bug伤不起啊。。。。<br />14:31 I题FB。。。fudan 8题。。这才两个半小时啊。<br />15:00 hust8题，C题FB。。。。太虎了。。<br />15:35 SJTU过了H题，大坑竟然1A。orz！！！<br />15:50 一个0题的HIT的队伍过了A题！！！！！orzzzzzzzzzzz！！！这憋了四个小时终于破了A题的FB。。实现了全场的理论ak。。<br />16:10 SJTU9题 H竟然1A！！！<br />16:30 FDU9题！！！竟然用比标程还短的方法把A题过了！！！<br />16:53 略微吐个槽。。。。。各种999ms 1000ms 2000ms过题。。。伤不起。。。标程真的时间很短；你们真的很能蹭过去。。。<br />16:57 ECNU用随机算法水过了A题。。这。。。。数据水果然伤不起。。。。<br /></span>本场算是有惊无险的度过去了，感谢各位大神来踩。<br /><br /><span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, STHeiTi, simsun, sans-serif; line-height: 21px; background-color: #ffffff; ">A题 模拟+单纯形 （数据改小了，HIT的队伍dfs+剪枝剪过去了。。FDU用SAP过了。。。orz。。。。还有被貌似贪心＋rand()的一份神代码水过了）<br />B题 模拟（好像有点小坑？出题人表示都木有想到）<br />C题 三维计算几何（近似算法迭代是不可搞定的，北大的数据还是蛮强的。。。）<br />D题 高精＋数学<br />E题 树形DP＋背包啥的&nbsp;<br />F题 dp，状态转移显然，注意取模<br />G题 树状数组(MM题)<br />H题 &#8220;水&#8220;的计算几何 + 单调队列(hl 大神没过trick啊=.=...一个山峰肿么办?...)<br />I题 数学（AC大神说是水题）<br />J题 状态dp（网络流过的都是神，完虐标程）<br />K题 概率dp （据说读题很坑？出题和验题人表示木有感觉；样例9组数据，标程.out 10组数据，所以过了sample，这题基本就过了）<br /><br /></span>以上各题都不是我出的哈，不要吐槽本蒟蒻了。拜谢～</div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/156139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-09-18 22:16 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/09/18/156139.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1981 Circle and Points 【定长圆覆盖最多点问题】</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150206.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Tue, 05 Jul 2011 05:14:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150206.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/150206.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/150206.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/150206.html</trackback:ping><description><![CDATA[<div><h2>定长圆覆盖最多点问题</h2><p>    <strong>问题描述，给出二维平面内</strong><strong>N</strong><strong>个点的</strong><strong>(x,y)</strong><strong>坐标，给一固定半径</strong><strong>R</strong><strong>。求一圆，圆心位置任意，要求尽可能多的覆盖平面点集中的点。输出最多的覆盖点数。</strong><strong>&nbsp;</strong></p><p>    <strong>（限制条件，保证无任意两点距离等于</strong><strong>2R</strong><strong>，即无两点连线恰为直径。亦无任意三点同时在一个半径为</strong><strong>R</strong><strong>的圆上。）</strong><strong></strong></p><p>    <strong>朴素算法：由限制条件可知，最后目标圆圆心一定可由某两点唯一确定（即目标圆的圆弧上一定恰有两个平面点集中的点）。具体实现：</strong><strong>C(N,2)</strong><strong>枚举任意两圆，构造可行圆，枚举</strong><strong>N</strong><strong>个点，判断是否在圆上或者圆内（即是否被覆盖）。复杂度</strong><strong>O(N^3)</strong><strong>。</strong><strong></strong></p><p>    <strong>（如果过了就算是水过去的吧，没过就怪常数太大。。</strong><strong>= =||</strong><strong>）</strong><strong></strong></p><p>    <strong>我所知的标准做法：</strong><strong>O(n^2*logn)</strong><strong>的圆上交点扫描法。</strong><strong></strong></p><p>    <strong>转化为圆上的弧最多被覆盖几次的问题。</strong></p><p>    <strong><img src="http://fmn.rrimg.com/fmn048/20101117/2220/b_large_wGq2_2f9c000733545c16.jpg" alt="" /><br />    </strong></p><p>    <strong></strong><strong>直觉可解，圆上某个弧如果被某个圆覆盖过，那么我们把目标圆圆心放在该段弧上时，目标圆一定能把该弧所在圆圆心覆盖（即平面点集中的某点）。</strong><strong></strong></p><p>    <strong>所以，被覆盖次数最多的弧的被覆盖次数即为目标圆（最优）最多能够覆盖的点数。</strong><strong></strong></p><p>    <strong>具体做法：</strong><strong></strong></p><p>    <strong>依旧是</strong><strong>C(N,2)</strong><strong>枚举任意两点，以</strong><strong>BA</strong><strong>为例，此时</strong><strong>i=1,j=0</strong><strong>。</strong><strong></strong></p><p>    <strong>求取</strong><strong>BA</strong><strong>的极角</strong><strong>theta</strong><strong>，利用</strong><strong>atan2</strong><strong>（因变量范围</strong><strong>(-pi,pi]</strong><strong>）。</strong><strong></strong></p><p>    <strong>为方便极角排序，对于负角要</strong><strong>+2pi</strong><strong>。</strong><strong></strong></p><p>    <strong>B</strong><strong>、</strong><strong>A</strong><strong>构造的圆交于</strong><strong>X1</strong><strong>，</strong><strong>X4</strong><strong>两点，求取</strong><strong>X1B</strong><strong>与</strong><strong>BA</strong><strong>的夹角和</strong><strong>X4B</strong><strong>与</strong><strong>AB</strong><strong>的夹角（相同）。</strong><strong></strong></p><p>    <strong>Phi </strong><strong>，</strong><strong>acos(D/2.0/R)</strong><strong>，</strong><strong>D=dis(A,B)</strong><strong>。</strong><strong></strong></p><p>    <strong>以上可得出两圆交点在当前圆上对于圆心的极角。</strong><strong></strong></p><p>    <strong>为方便极角排序，每个极角均加</strong><strong>2pi</strong><strong>，使域扩张到</strong><strong>[0</strong><strong>，</strong><strong>4pi]</strong><strong>，从而防止了跨</strong><strong>0</strong><strong>角的出现。</strong><strong></strong></p><p>    <strong>alpha[t].value=theta &#8211; phi + 2pi,alpha[t].flag = 1(</strong><strong>弧的进入端</strong><strong>)</strong></p><p>    <strong>alpha[t+1].value = theta + phi + 2pi,alpha[t+1].flag = false</strong><strong>（弧的退出端）。</strong><strong></strong></p><p>    <strong>接下来，对于每个圆上的</strong><strong>t</strong><strong>（偶数）个极角进行排序，再顺序扫描，动态更新最大值。</strong><strong></strong></p><p>    <span style="color: #ff0000;"><strong>for(i,0,t)</strong></span></p><p>    <span style="color: #ff0000;"><strong>if(alpha[i].flag)</strong></span></p><p>    <span style="color: #ff0000;"><strong>sum++</strong></span></p><p>    <span style="color: #ff0000;"><strong>else</strong></span></p><p>    <span style="color: #ff0000;"><strong>sum--</strong></span></p><p>    <span style="color: #ff0000;"><strong>if(sum &gt; ans)</strong></span></p><p>    <span style="color: #ff0000;"><strong>ans = sum</strong></span></p><p>    <strong>最后输出答案时，输出ans+1</strong><strong>即可。（因为要算上弧所在圆自身）</strong></p><p>    <strong>复杂度：O(n *(nlogn + t))=O(n^2*logn)</strong></p></div><br />题目链接：<a href="http://poj.org/problem?id=1981">http://poj.org/problem?id=1981</a><br /><a href="http://boj.me/onlinejudge/showproblem.php?problem_id=1679">http://boj.me/onlinejudge/showproblem.php?problem_id=1679</a><br /><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstdio</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cmath</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">algorithm</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;Mn&nbsp;300</span><span style="color: #008000;">//</span><span style="color: #008000;">平面点集中点数</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br /><br /></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;eps&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;1e</span><span style="color: #000000;">-</span><span style="color: #000000;">9</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">精度调高点没跑~</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;pi&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;acos(</span><span style="color: #000000;">-</span><span style="color: #000000;">1.0</span><span style="color: #000000;">);<br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;sqr(x)&nbsp;((x)&nbsp;*&nbsp;(x))</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;R;</span><span style="color: #008000;">//</span><span style="color: #008000;">定长</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;point<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;x,y;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;read()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%lf%lf</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">x,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">y);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;print()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%lf%lf\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,x,y);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;friend&nbsp;dis(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;point&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;point&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;sqrt(sqr(a.x&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;b.x)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;sqr(a.y&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;b.y));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}p[Mn&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">];<br /><br /></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;alpha<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;v;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;flag;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;friend&nbsp;</span><span style="color: #0000ff;">operator</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;alpha&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;alpha&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b)</span><span style="color: #008000;">//</span><span style="color: #008000;">排序专用偏序关系</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a.v&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;b.v;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}alp[Mn&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;Mn&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">];</span><span style="color: #008000;">//</span><span style="color: #008000;">C(N,2)*2的可能交点（可能极角）</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;solve(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n)<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;R&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">本题内为单位圆</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i].read();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;MAX&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;j)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;theta,phi,D;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;dis(p[i],p[j]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(D&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2.0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;R)</span><span style="color: #008000;">//</span><span style="color: #008000;">距离超界直接秒杀</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br /><br /></span><span style="color: #008000;">//</span><span style="color: #008000;">关键部分</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;theta&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;atan2(p[j].y&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;p[i].y,p[j].x&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;p[i].x);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(theta&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;theta&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;pi;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phi&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;acos(D&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">2.0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;R));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alp[t].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;theta&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;phi&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;pi;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alp[t].flag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alp[t&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;theta&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;phi&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;pi;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alp[t&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">].flag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(alp,alp&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;t);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;sum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;t;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(alp[j].flag)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(sum&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;MAX)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sum;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,MAX&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br /><br />}<br /><br /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;n)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;solve(n);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /></span><span style="color: #008000;">//</span><span style="color: #008000;">欢迎围观，请大神轻拍~~~</span></div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/150206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-07-05 13:14 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BOJ 1295 ACM system 【可修改堆】</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150201.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Tue, 05 Jul 2011 05:01:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150201.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/150201.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150201.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/150201.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/150201.html</trackback:ping><description><![CDATA[<div><center>ACM system</center><center><a href="http://boj.me/onlinejudge/login.html">Login and star it!</a></center><center>Submit: 283&nbsp;&nbsp;&nbsp;Accepted:39</center><center>Time Limit: 3000MS&nbsp;&nbsp;Memory Limit: 65535K</center>Description<br />912实验室最近设计了一种能够自动控制进程调度的系统，英文名是Automatic Control Machinery，简称ACM。该系统具有很多优秀的功能，为了方便大家的理解，这里先介绍一下关于进程、进程调度的常识。<br /> 1、	每个进程需要占用1个或多个单位内存空间，然而令人惊叹的是，在912实验室开发的平台上，一个进程只需要占用1个单位内存！<br /> 2、	每个进程用三个参量来表示，编号、权值、内存地址(0x00000000~0xFFFFFFFF)。<br /> 3、	所有的进程都被集中到一个名为&#8220;进程池&#8221;的地方，ACM系统可以实时的从进程池中选取最高优先级的进程。<br /> 4、	我们定义进程之间的优先级如下，如果两个进程的权值不同，权值大的优先级高；如果权值相同，编号小的进程优先级高。<br /> 现在就要介绍下ACM系统的详细功能了，它总共有4种操作：<br /> 1、	Get，返回当前最高优先级的进程信息(编号、权值、内存地址)<br /> 2、	Creat ID W ADDRESS，在进程池中创建一个编号为ID，权值为W，地址为ADDRESS的进程<br /> 3、	Kill ID，无条件的中止编号为ID的进程<br /> 4、	Change ID W，改变编号为ID的进程的权值<br /> 由于ACM系统尚在理论研究阶段，所以我们希望热心的你帮忙实现该系统，以具备上述所说的功能。当然，你的系统应该有一定的健壮性，至少能够对错误的操作给出异常提示。<br /> <br /><br />Input<br />输入包含多组测试数据。<br /> 首先第一行输入一个数T(T&lt;=10)，表示总共有T组测试数据。<br /> 接下来是每组测试数据，第一行是一个数N(N&lt;=100000)，表示总共有N个不同编号(编号从0到N-1)的进程。然后是一个数n(n&amp; lt;=100)，表示ACM系统启动的时候，需要初始化的n个进程。接着n行，都是id、w、address这样的形式出现，表示这n个进程的详细信 息。<br /> 紧接着是一个数M(M&lt;=200000)，表示总共有M个操作。接着M行，描述的是下面四种中的某一种操作：<br /> 1、	Get <br /> 2、	Creat ID W ADDRESS<br /> 3、	Kill ID<br /> 4、	Change ID W<br /> <br /><br />Output<br />首先，输出Case X：其中X代表是第X组数据(具体格式参照样例)。<br /> 对于Get操作，你需要返回最高优先级进程的信息 或 异常提示(进程池中无进程)。<br /> 对于Creat、Kill、Change操作，如果出现了错误操作(新添加进程的编号已经存在了、新添加进程的地址已经被使用了、中止根本不存在的进程、改变不存在进程的权值)，给出异常提示，并忽略该操作；如果上述三种操作都正确，不需要输出任何东西。<br /> 对于所有的异常，只需输出&#8220;ERROR！&#8221;即可。<br /> <br /><br />Sample Input<br /><br />2<br /> 1<br /> 1<br /> 0 3 0xAAAAAAAA<br /> 3<br /> Creat 0 2 0xFFFFFFFF<br /> Kill 0<br /> Get <br /> 3<br /> 2<br /> 0 1 0x11112222<br /> 1 2 0x22221111<br /> 5<br /> Get<br /> Change 2 2<br /> Kill 1<br /> Get<br /> Kill 1<br /> <br /><br />Sample Output<br /><br />Case 1:<br /> ERROR!<br /> ERROR!<br /> Case 2:<br /> 1 2 0x22221111<br /> ERROR!<br /> 0 1 0x11112222<br /> ERROR!<br /> <br /><br />Hint<br />巨大的输入输出，推荐scanf和printf<br /><br />Source<br />humanjustic</div><br />题目链接：<a target=""></a><a href="http://boj.me/onlinejudge/showproblem.php?problem_id=1295">http://boj.me/onlinejudge/showproblem.php?problem_id=1295</a><br /><br /><div><p>题目要求：</p><p>实现某种数据结构，性质如下。</p><p>可用于存储元素，元素有三个属性，编号（整数），权值（整数），地址（十六进制表示的整数）。</p><p>元素有偏序关系，权值大者优先，编号小者优先（二级比较）。</p><p>能够实现如下功能。</p><p>1初始化，可以初始化结构中N个元素（利用三个数值）。</p><p>2插入新元素，可返回错误信息。（编号重复的报错，地址重复的报错）</p><p>3删除已有元素，可返回错误信息。（编号不存在的报错）</p><p>4返回最高优先级元素，可返回错误信息。（结构中为空，即无元素报错）</p><p>5改变元素的权值，可返回错误信息。（对应编号不存在的报错）</p><p>&nbsp;</p><p>    <span style="color: #ff0000;">先说感想：</span></p><p>    <span style="color: #ff0000;">数据结构神马的，要有想象力，但是又不像贪心题和DP题那样需要YY能力。只要YY出能够优化复杂度的结构来即可。（前提是足够的数据结构知识储备和强大的代码能力）</span></p><p>&nbsp;</p><p>    <span style="color: #ff0000;">话说这道题的那个神奇的内存地质。。。十六进制数，让我好好学习了一下scanf、printf读入输出指定格式十六进制数，以及cout的格式输出。编程语言的开创者们真是给想好了各种内部优化，不用小菜我再去纠结格式输出的问题。（不然用字符串存地址，铁定超时啊）</span></p><p>&nbsp;</p><p>Solution：</p><p>直观解，该数据结构为堆。根据CLRS，可实现其build、heapify、increase、maximum、insert、delete等全部操作，这些操作的复杂度均为O(logN)（build除外，O(N * LogN)。</p><p>但问题在于，传统heap无法实现对于特定编号元素的O(LogN)的查找。</p><p>所以配合HASH（两种偷懒的HASH方式，一为int标记数组，二为map映射，分别为O(1)（标记）,O(LogN)（红黑树））。</p><p>&nbsp;</p><p>具体实现：</p><p>&nbsp;</p><p>int to[]，用标记数组记录对应编号元素（数组下标）在堆中的位置（还是数组下标，不过是堆的）</p><p>&nbsp;</p><p>map&lt;unsigned long,int&gt; add，用map将地址映射，用于记录指定地址的存在性</p><p>&nbsp;</p><p>struct node（为了元素的偏序关系才要这个）</p><p>&nbsp;</p><p>（以下每个函数在操作的同时，要维护to数组和add的HASH）</p><p>&nbsp;</p><p>inc函数，对于堆中特定位置的元素，增加其权值到指定值，再逆向维护堆的性质</p><p>&nbsp;</p><p>insert函数，将新加入的元素插在堆尾，再用inc函数增加权值并维护堆性质</p><p>&nbsp;</p><p>heapify函数，从特定位置起，向下正向维护堆性质</p><p>&nbsp;</p><p>del函数，交换堆尾元素与被删元素，再用heapify维护</p><p>&nbsp;</p><p>change函数，如果是权值增加操作则逆向维护堆，反之则正向维护堆</p><p>&nbsp;</p><p>所有函数实现的过程中通过对to数组和add哈希的查找来判断报错与否</p></div><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstdio</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">map</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstring</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iomanip</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;left(i)&nbsp;((i)&nbsp;&lt;&lt;&nbsp;1)</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;right(i)&nbsp;(((i)&nbsp;&lt;&lt;&nbsp;1)&nbsp;+&nbsp;1)</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;parent(i)&nbsp;((i)&nbsp;&gt;&gt;&nbsp;1)</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;WRONG&nbsp;printf("ERROR!\n")</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br /><br />typedef&nbsp;unsigned&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">&nbsp;ul;<br /><br /></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;node<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;num,value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">&nbsp;addr;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;node(){}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;node(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_num,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_value,ul&nbsp;_addr)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_num;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_addr;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;friend&nbsp;</span><span style="color: #0000ff;">operator</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;node&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;node&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;(a.value&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;b.value)&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;(a.value&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;b.value&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;a.num&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;b.num&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;print()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;%d&nbsp;0x%08X\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,num,value,addr);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout.fill('0');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;setw(8)&nbsp;&lt;&lt;&nbsp;HEX&nbsp;&lt;&lt;&nbsp;addr&nbsp;&lt;&lt;&nbsp;'\n';</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">for(int&nbsp;i&nbsp;=&nbsp;31;i&nbsp;&gt;=&nbsp;0;i&nbsp;-=&nbsp;4)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;temp&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;0;j&nbsp;&lt;&nbsp;4;j++)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;+=&nbsp;(((value&nbsp;&gt;&gt;&nbsp;(i&nbsp;-&nbsp;j))&nbsp;&amp;&nbsp;1)&nbsp;*&nbsp;(1&nbsp;&lt;&lt;&nbsp;(4&nbsp;-&nbsp;j)));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%c",(temp&nbsp;&gt;&nbsp;9)&nbsp;?&nbsp;(temp&nbsp;-&nbsp;10&nbsp;+&nbsp;'A')&nbsp;:&nbsp;(temp&nbsp;+&nbsp;'0'));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />};<br /><br /></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;heap<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;map&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ul,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;add;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;to[</span><span style="color: #000000;">100005</span><span style="color: #000000;">];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">map&nbsp;&lt;int&nbsp;,&nbsp;int&gt;&nbsp;to;</span><span style="color: #008000;">//</span><span style="color: #008000;">id&nbsp;to&nbsp;index</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;ele[</span><span style="color: #000000;">100005</span><span style="color: #000000;">];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;size;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;heap(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;N){size&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;N;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)to[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;insert(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;num,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;value,ul&nbsp;addr)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(to[num]&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;add[addr]&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">id&nbsp;existed&nbsp;||&nbsp;addr&nbsp;existed<img src="http://www.cppblog.com/Images/dot.gif" alt="" />.</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">judge</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;size]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;node;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inc(size,num,value,addr);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;del(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pos;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"\t\t\tid&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;to[id]&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(to[id]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">delete&nbsp;doesn't&nbsp;exist</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"\t\t\tpos&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;to[id]&nbsp;&lt;&lt;&nbsp;"&nbsp;id&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;id&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;to[id];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[ele[size]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[id]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"\t\t\tpos&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;to[id]&nbsp;&lt;&lt;&nbsp;"&nbsp;id&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;id&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add[ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;addr]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(ele[pos],ele[size]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;ele[size];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[size]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapify(pos);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;top()</span><span style="color: #008000;">//</span><span style="color: #008000;">empty</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(size&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[</span><span style="color: #000000;">1</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;print();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;heapify(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pos)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;left(pos),r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;right(pos),big;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(l&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;size&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[pos]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[l])<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;big&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;big&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(r&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;size&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[big]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[r])<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;big&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(big&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;pos)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(ele[big],ele[pos]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(to[ele[big]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num],to[ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"&nbsp;---------------------------"&nbsp;&lt;&lt;&nbsp;endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;ele[big]&nbsp;-&gt;&nbsp;num&nbsp;&nbsp;&lt;&lt;&nbsp;"&nbsp;id&nbsp;"&nbsp;&lt;&lt;&nbsp;ele[pos]&nbsp;-&gt;&nbsp;num&nbsp;&lt;&lt;&nbsp;endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;"&nbsp;---------------------------"&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapify(big);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;inc(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pos,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;value,ul&nbsp;ad)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;id;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;addr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ad;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[id]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add[ad]&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos,pt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(pos);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(pt&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">(</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[t]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[pt]))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(ele[t],ele[pt]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(to[ele[t]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num],to[ele[pt]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(t);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;change(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;num,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;value)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(to[num]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pos&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;to[num];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;value)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapify(pos);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;value)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos,pt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(pos);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(pt&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">(</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[t]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[pt]))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(ele[t],ele[pt]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(to[ele[t]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num],to[ele[pt]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(t);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />};<br /><br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;solve()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;N,n,m;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">N);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;heap&nbsp;s(N);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,b;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ul&nbsp;c;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;%d&nbsp;%X</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">c);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.insert(a,b,c);<br /><br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;endl&nbsp;&lt;&lt;"--------------------AA"&nbsp;&lt;&lt;&nbsp;"&nbsp;size&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;s.size&nbsp;&lt;&lt;&nbsp;endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;1;j&nbsp;&lt;=&nbsp;s.size;j++)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.ele[j]&nbsp;-&gt;&nbsp;print();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;"--------------------AA"&nbsp;&lt;&lt;&nbsp;endl&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"option&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;i&nbsp;+&nbsp;1&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;opt[</span><span style="color: #000000;">10</span><span style="color: #000000;">];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%s</span><span style="color: #000000;">"</span><span style="color: #000000;">,opt);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;opt&nbsp;&lt;&lt;&nbsp;"&nbsp;";</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">strcmp(opt,</span><span style="color: #000000;">"</span><span style="color: #000000;">Get</span><span style="color: #000000;">"</span><span style="color: #000000;">))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">s.top())<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRONG;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">strcmp(opt,</span><span style="color: #000000;">"</span><span style="color: #000000;">Creat</span><span style="color: #000000;">"</span><span style="color: #000000;">))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,b;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ul&nbsp;c;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;%d&nbsp;%X</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">c);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("%d&nbsp;%d&nbsp;0x%X\n",a,b,c);</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">s.insert(a,b,c))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRONG;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">strcmp(opt,</span><span style="color: #000000;">"</span><span style="color: #000000;">Kill</span><span style="color: #000000;">"</span><span style="color: #000000;">))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("%d\n",a);</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">s.del(a))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRONG;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">strcmp(opt,</span><span style="color: #000000;">"</span><span style="color: #000000;">Change</span><span style="color: #000000;">"</span><span style="color: #000000;">))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,b;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("%d&nbsp;%d\n",a,b);</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">s.change(a,b))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRONG;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;endl&nbsp;&lt;&lt;"--------------------AA"&nbsp;&lt;&lt;&nbsp;"&nbsp;size&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;s.size&nbsp;&lt;&lt;&nbsp;endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;1;j&nbsp;&lt;=&nbsp;s.size;j++)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.ele[j]&nbsp;-&gt;&nbsp;print();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;"--------------------AA"&nbsp;&lt;&lt;&nbsp;endl&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">data.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdin);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">data3.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdout);<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;while(scanf("%d",&amp;t)&nbsp;==&nbsp;1)</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">t);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;t;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Case&nbsp;%d:\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,i&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;solve();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</span></div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/150201.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-07-05 13:01 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150201.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZOJ 3409 KKV 【高中物理题】</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150199.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Tue, 05 Jul 2011 04:56:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150199.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/150199.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150199.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/150199.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/150199.html</trackback:ping><description><![CDATA[<div><p>    <strong>ZOJ Problem Set &#8211; 3409</strong></p><p align="center">    KKV</p><p>             </p><hr />    <p align="center">    Time Limit: 10 Seconds &nbsp;&nbsp;&nbsp;&nbsp; Memory Limit: 65536 KB &nbsp;&nbsp;&nbsp;&nbsp; Special Judge </p><p>原题链接：<a href="http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3409">http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3409</a></p><p>    <strong>算法：模拟题、高中动量守恒公式套上三维模板、计算机模拟手解一元二次方程</strong></p><p>    <strong>题目大意：你从</strong><strong>(0,0,0)</strong><strong>出发，途中经过</strong><strong>N-1</strong><strong>个点，最后到达第</strong><strong>N</strong><strong>个点。</strong><strong>(N&lt;=40)</strong><strong></strong></p><p>    <strong>这些点均在三维空间中，这</strong><strong>N</strong><strong>个 点的三维坐标均给出。题目背景是太空中的宇宙飞行，故无重力影响，每个点只靠火箭助推器的喷射来改变速度大小和方向。（而且每次动量守恒求解过程中，保证 助推器的速度大小均达到最大。速度根据情况而定）故每个拐点的运动改变方式完全符合动量守恒定律（只不过是三维空间的）。</strong><strong></strong></p><p>    <strong>现给你</strong><strong>M</strong><strong>，总质量，</strong><strong>m1</strong><strong>，不含所有燃料的火箭剩余质量（</strong><strong>1&lt;=M1&lt;M-n*m0</strong><strong>）</strong><strong>,m0</strong><strong>，单块燃料（火箭助推器）的质量，</strong><strong>v0</strong><strong>，每次喷射时火箭助推器的速度。</strong><strong>N</strong><strong>个点的坐标。</strong><strong></strong><strong></strong></p><p>    <strong>现求解，从第</strong><strong>0</strong><strong>个点到第</strong><strong>N-1</strong><strong>个点都有火箭助推器参与的速度改变过程，故问到第</strong><strong>N</strong><strong>点时所花费的总时间为多少。若无解，则输出无解时对应的报错语句。</strong><strong></strong></p><p>    <strong>现给出代码及注释：</strong><strong></strong></p><p>    //解法在注释中给出，分别求解一个一元一次方程和一元二次方程即可</p><p>    <strong>/*</strong></p><p>    <strong>还是在之前模拟一下方程吧。防止看不懂</strong><strong></strong></p><p>    <strong>动量守恒定律基本方程。</strong><strong></strong></p><p>    <strong>m1v1+m2v2=m1v1&#8217;+m2v2&#8217;</strong></p><p>    <strong>此处分别有两次应用（实际上可以规约为一种应用，但是怕挫，就分成两种了）</strong><strong></strong></p><p>    <strong>第一种是初始点</strong><strong>0=(m-m0) * v(x,y,z)+m0 * v0(x,y,z)//v</strong><strong>和</strong><strong>v0</strong><strong>分别为三维速度矢量，</strong><strong>v</strong><strong>为第一次喷射后剩余火箭箭体的速度矢量，</strong><strong>v0</strong><strong>为第一次喷射燃料时燃料的速度矢量（所以这其实是三个方程联立，解法为同时两边平方再相加）</strong><strong></strong></p><p>    <strong>式中各参量分别满足</strong><strong>v0(x)^2+v0(y)^2+v0(z)^2=v0^2//v0</strong><strong>已知</strong><strong></strong></p><p>    <strong>v(x,y,z) = k * vec(x,y,z)//vec(x,y,z)</strong><strong>为第</strong><strong>0</strong><strong>点到第一个点的位移矢量</strong><strong></strong></p><p>    <strong>解得</strong><strong>K^2= M0^2*V0^2/(Vec^2*(m-m0)^2), k= sqrt(K^2)</strong></p><p>    <strong>所有值均已知，代入即可解得</strong><strong>//vec</strong><strong>为</strong><strong>vec</strong><strong>矢量的模长，</strong><strong>v0</strong><strong>为标量</strong><strong></strong></p><p>    <strong>第二种为一般情况，针对第</strong><strong>i</strong><strong>个点（</strong><strong>1&lt;=I&lt;=n-1</strong><strong>）</strong><strong></strong></p><p>    <strong>M&#8217;v&#8217;(x,y,z)=(m&#8217;-m0)v(x,y,z)+m0v0(x,y,z)//</strong><strong>实际上三方程联立</strong><strong></strong></p><p>    <strong>v&#8217;</strong><strong>即为第</strong><strong>i-1</strong><strong>个点的速度矢量，</strong><strong>v</strong><strong>为第</strong><strong>I</strong><strong>个点的速度矢量，</strong><strong>m&#8217;</strong><strong>为第</strong><strong>i-1</strong><strong>个点剩余的火箭质量</strong><strong></strong></p><p>    <strong>v(x,y,z)=k * vec(x,y,z)//vec</strong><strong>为第</strong><strong>i</strong><strong>个点到第</strong><strong>I+1</strong><strong>个点的位移矢量</strong><strong></strong></p><p>    <strong>v0x^2+v0Y^2+v0z^2=|v0|^2</strong></p><p>    <strong>将联立方程组左右平方并加和将常数项移到一侧，从而转化为求解</strong><strong>k</strong><strong>为主元的一元二次方程问题，化归式如下：</strong><strong></strong></p><p>    <strong>(m&#8217;- m0) ^ 2 * |vec| ^ 2 * k ^ 2 &#8211; 2 * M&#8217; * (m&#8217;- m0) * scalar(v&#8217;,vec) * k + m&#8217; ^ 2 * |v&#8217;| ^ 2 - m0 ^ 2 * |V0| ^ 2 = 0</strong></p><p>    <strong>一元二次方参数：</strong><strong></strong></p><p>    <strong>A=(M&#8217;-m0)^2 * |vec| ^ 2</strong></p><p>    <strong>B=-2*M&#8217;*(m&#8217;-m0)*scalar(v&#8217;,vec)</strong></p><p>    <strong>C=M&#8217;^2*|v&#8217;|^2-M0^2*|v0|^2</strong></p><p>    <strong>det = b^2 &#8211; 4 * a * c</strong></p><p>    <strong>判断</strong><strong>det</strong><strong>有解与否即可</strong><strong></strong></p><p>    <strong>有解则可由</strong><strong>v(x,y,z)=k*vec(x,y,z)</strong><strong>知道</strong><strong>v</strong><strong>的矢量及大小</strong><strong></strong></p><p>    <strong>从而算出</strong><strong>ti = |vec| / |v|</strong></p><p>    <strong>将第一段与之后的</strong><strong>n-1</strong><strong>段的时间即可</strong><strong></strong></p><p>    <strong>*/</strong></p></div><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstdio</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cmath</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br /><br /></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;eps&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;1e</span><span style="color: #000000;">-</span><span style="color: #000000;">10</span><span style="color: #000000;">;<br /><br />inline&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;sqr(</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;x){</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;x;}<br /><br /></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;point<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;x,y,z;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;input()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%lf%lf%lf</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">x,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">y,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">z);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}p[</span><span style="color: #000000;">50</span><span style="color: #000000;">];<br /><br /></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;vect</span><span style="color: #008000;">//</span><span style="color: #008000;">矢量定义</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;x,y,z,mod;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;init(point&nbsp;p,point&nbsp;q)&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">矢量初始化并计算模长</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;q.x&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;p.x;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;q.y&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;p.y;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;q.z&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;p.z;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mod&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sqrt(sqr(x)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;sqr(y)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;sqr(z));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;cal()</span><span style="color: #008000;">//</span><span style="color: #008000;">对于速度矢量进行计算速率</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;mod&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sqrt(sqr(x)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;sqr(y)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;sqr(z));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />}vec[</span><span style="color: #000000;">50</span><span style="color: #000000;">],v[</span><span style="color: #000000;">50</span><span style="color: #000000;">];&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">位移矢量和速度矢量</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;scalar(vect&nbsp;a,vect&nbsp;b)&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">点积</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a.x&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;b.x&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;a.y&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;b.y&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;a.z&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;b.z;<br /><br />}<br /><br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;function(</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;a,</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;b,</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;c,</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">mark,</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">k1,</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">k2)<br /><br />{&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">求解二次方程专用函数</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;det&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sqr(b)&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4.0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;c;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">delta</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(det&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;eps&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;fabs(det)&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;eps)&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">delta&lt;0则无解，无解即对应题目中无解情况</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fabs(det)&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;eps)&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">唯一解</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">b&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">2.0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;a);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">二解的话一正解一负解舍弃负解即可（貌似最后算出来delta都等于0？我没测试，大概吧。。。我甚至没去手工模拟一下负解所对应的实际情况是怎样的，就直接否决了，因为负解一定不会符合题意，根据我方程的参数即可知道）</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">-</span><span style="color: #000000;">b&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;sqrt(det))&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">2.0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;a);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">-</span><span style="color: #000000;">b&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;sqrt(det))&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">2.0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;a);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;solve(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n)<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;m,m1,mt,m0,v0,k,t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.0</span><span style="color: #000000;">,temp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%lf%lf%lf%lf</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m1,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m0,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v0);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[</span><span style="color: #000000;">0</span><span style="color: #000000;">].x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p[</span><span style="color: #000000;">0</span><span style="color: #000000;">].y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p[</span><span style="color: #000000;">0</span><span style="color: #000000;">].z&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.0</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i].input();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vec[i&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">].init(p[i&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">],p[i]);&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">位移矢量初始化</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">p[0]&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">对于原点处速度矢量和第一段距离的时间的求解</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&nbsp;(M-m0)*Vx&nbsp;-&nbsp;m0*V0x&nbsp;//其实可以列一个三元一次方程组用行列式解，我嫌麻烦<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&nbsp;(M-m0)*Vy&nbsp;-&nbsp;m0*V0y&nbsp;//也可以用纯几何的点积叉积做，我不会~算了~<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&nbsp;(M-m0)*Vz&nbsp;-&nbsp;m0*V0z<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Vx,Vy,Vz)&nbsp;=&nbsp;k&nbsp;*&nbsp;(Vecx,Vecy,Vecz)&nbsp;//求解对象即为k，因为速度矢量方向确定，但是大小不确定，解出大小即可<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;V0x^2&nbsp;+&nbsp;V0y^2&nbsp;+&nbsp;V0z^2&nbsp;=&nbsp;V0^2&nbsp;//V0作为已知量，要做好未知量的化归转化，才方便求出可行解<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t0&nbsp;=&nbsp;|Vec0|&nbsp;/&nbsp;|V[0]|&nbsp;//标量除法<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;+=&nbsp;t0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;m&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;m0;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">第一次后剩余质量</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sqrt(sqr(m0)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;sqr(v0)&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;sqr(mt)&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;sqr(vec[</span><span style="color: #000000;">0</span><span style="color: #000000;">].mod));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[</span><span style="color: #000000;">0</span><span style="color: #000000;">].x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;vec[</span><span style="color: #000000;">0</span><span style="color: #000000;">].x;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[</span><span style="color: #000000;">0</span><span style="color: #000000;">].y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;vec[</span><span style="color: #000000;">0</span><span style="color: #000000;">].y;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[</span><span style="color: #000000;">0</span><span style="color: #000000;">].z&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;vec[</span><span style="color: #000000;">0</span><span style="color: #000000;">].z;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;vec[</span><span style="color: #000000;">0</span><span style="color: #000000;">].mod&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;v[</span><span style="color: #000000;">0</span><span style="color: #000000;">].cal();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;temp;<br /><br /></span><span style="color: #008000;">//</span><span style="color: #008000;">对于一般点处，求解一般方程</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ti&nbsp;=&nbsp;|Veci|&nbsp;/&nbsp;|V[i]|<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mt&nbsp;*&nbsp;Vx[i&nbsp;-&nbsp;1]&nbsp;=&nbsp;(Mt&nbsp;-&nbsp;m0)&nbsp;*&nbsp;Vx[i]&nbsp;+&nbsp;m0&nbsp;*&nbsp;V0x<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mt&nbsp;*&nbsp;Vy[i&nbsp;-&nbsp;1]&nbsp;=&nbsp;(Mt&nbsp;-&nbsp;m0)&nbsp;*&nbsp;Vy[i]&nbsp;+&nbsp;m0&nbsp;*&nbsp;V0y<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mt&nbsp;*&nbsp;Vz[i&nbsp;-&nbsp;1]&nbsp;=&nbsp;(Mt&nbsp;-&nbsp;m0)&nbsp;*&nbsp;Vz[i]&nbsp;+&nbsp;m0&nbsp;*&nbsp;V0z<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;V[i](x,y,z)&nbsp;=&nbsp;k&nbsp;*&nbsp;Vec[i](x,y,z)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;V0x^2&nbsp;+&nbsp;V0y^2&nbsp;+&nbsp;V0z^2&nbsp;=&nbsp;V0^2<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k^2*|Vec[i]|^2*(Mt-m0)^2&nbsp;-&nbsp;2*Mt(Mt-m0)*k*(scalar(Vec[i],V[i-1]))&nbsp;+&nbsp;Mt^2*|V[i-1]|^2&nbsp;-&nbsp;m0^2*|V0|^2&nbsp;=&nbsp;0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;k1,k2;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;a,b,c;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;mark&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sqr(vec[i].mod)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;sqr(mt&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;m0);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">2.0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;mt&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;(mt&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;m0)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;scalar(vec[i],v[i&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sqr(mt)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;sqr(v[i&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">].cal())&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;sqr(m0)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;sqr(v0);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function(a,b,c,mark,k1,k2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(mark)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(k1&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(k2&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k2;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[i].x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;vec[i].x;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[i].y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;vec[i].y;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[i].z&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;vec[i].z;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;vec[i].mod&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;v[i].cal();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;temp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Another&nbsp;kind&nbsp;of&nbsp;KKV.\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mt&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;m0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%.2lf\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,t);<br /><br />}<br /><br /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">freopen("3409.in","r",stdin);</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;EOF)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;solve(n);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</span></div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/150199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-07-05 12:56 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>