﻿<?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++博客-lzh-随笔分类-ＡＣＭ解题报告</title><link>http://www.cppblog.com/lzh/category/14691.html</link><description>刘政</description><language>zh-cn</language><lastBuildDate>Mon, 25 Apr 2011 17:11:14 GMT</lastBuildDate><pubDate>Mon, 25 Apr 2011 17:11:14 GMT</pubDate><ttl>60</ttl><item><title>最大公约数问题</title><link>http://www.cppblog.com/lzh/archive/2011/04/25/gcd.html</link><dc:creator>lzh525</dc:creator><author>lzh525</author><pubDate>Mon, 25 Apr 2011 14:34:00 GMT</pubDate><guid>http://www.cppblog.com/lzh/archive/2011/04/25/gcd.html</guid><wfw:comment>http://www.cppblog.com/lzh/comments/145000.html</wfw:comment><comments>http://www.cppblog.com/lzh/archive/2011/04/25/gcd.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzh/comments/commentRss/145000.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzh/services/trackbacks/145000.html</trackback:ping><description><![CDATA[ #include<iostream>
using namespace std;

int gcd(int x,int y)
{//欧几里得：辗转相除法
    if(x<y)
		return gcd(y,x);
	else
		return (!y)?x:gcd(y,x%y);
}

//如果一个数能够整除x和y，则必能够同时整除x-y和y(等价)，即f(x,y)=f(x-y,y)
int f(int x,int y)
{
    if(x<y)
		return f(y,x);
	if(0==y)
		return x;
	else
		return f(x-y,y);
}

//对于x,y。若x=k*x1,y=k*y1,则f(x,y)=k*f(x1,y1).另外若x=p*x1,假设p是素数，且y%p！=0,则f(x,y)=f(p*x1,y)=f(x1,y).以素数2处理；
//若x,y都为偶数，f(x,y)=2*f(x/2,y/2)=2*f(x>>1,y>>1)
//若x偶，y奇, 则f(x,y)=f(x>>1,y)
//若x奇，y偶, 则f(x,y)=f(x,y>>1)
//若x,y都为奇数，f(x,y)=f(y,x-y),那么在f(x,y)=f(y,x-y)之后(x-y)是一个偶数，下一步会有除以2的操作，所以最坏情况下的时间复杂度O(log2(max(x,y)))
int f2(int x,int y)
{
    if(x<y)
		return f(y,x);
	if(0==y)
		return x;
	else
	{
	   if(x%2==0)
	   {
	       if(y%2==0)
			   return (f2(x>>1,y>>1)<<1);
		   else
			   return f2(x>>1,y);
	   }
	   else
	   {
	      if(y%2==0)
			  return f2(x,y>>2);
		  else
			  return f2(y,x-y);
	   }

	}
}

int main()
{
    int m,n;
	while(cin>>m>>n)
	{
		printf("%d与%d的最大公约数为:\n",m,n);
	   //cout<<gcd(m,n)<<endl;
		cout<<f2(m,n)<<endl;
	}

	return 0;
}<img src ="http://www.cppblog.com/lzh/aggbug/145000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzh/" target="_blank">lzh525</a> 2011-04-25 22:34 <a href="http://www.cppblog.com/lzh/archive/2011/04/25/gcd.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Check the Check(UVa10196)</title><link>http://www.cppblog.com/lzh/archive/2010/10/24/Check-the-Check.html</link><dc:creator>lzh525</dc:creator><author>lzh525</author><pubDate>Sun, 24 Oct 2010 01:14:00 GMT</pubDate><guid>http://www.cppblog.com/lzh/archive/2010/10/24/Check-the-Check.html</guid><wfw:comment>http://www.cppblog.com/lzh/comments/131034.html</wfw:comment><comments>http://www.cppblog.com/lzh/archive/2010/10/24/Check-the-Check.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzh/comments/commentRss/131034.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzh/services/trackbacks/131034.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 将军....棋盘搜索问题&nbsp;&nbsp;<a href='http://www.cppblog.com/lzh/archive/2010/10/24/Check-the-Check.html'>阅读全文</a><img src ="http://www.cppblog.com/lzh/aggbug/131034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzh/" target="_blank">lzh525</a> 2010-10-24 09:14 <a href="http://www.cppblog.com/lzh/archive/2010/10/24/Check-the-Check.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LC-Display(UVa706)</title><link>http://www.cppblog.com/lzh/archive/2010/10/24/LC_Display.html</link><dc:creator>lzh525</dc:creator><author>lzh525</author><pubDate>Sun, 24 Oct 2010 01:05:00 GMT</pubDate><guid>http://www.cppblog.com/lzh/archive/2010/10/24/LC_Display.html</guid><wfw:comment>http://www.cppblog.com/lzh/comments/131032.html</wfw:comment><comments>http://www.cppblog.com/lzh/archive/2010/10/24/LC_Display.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzh/comments/commentRss/131032.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzh/services/trackbacks/131032.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: //注意数组模板创建的重要性1 #include&lt;stdio.h&gt;  2 #include&lt;string.h&gt;  3 char s[15];  4 char a[5][35]=  5 { "q-qq0qq-qq-qq0qq-qq-qq-qq-qq-q",  6 "|0|q0|q0|q0||0||0q|0qq0||0||0|",  7 "q0qq0qq...&nbsp;&nbsp;<a href='http://www.cppblog.com/lzh/archive/2010/10/24/LC_Display.html'>阅读全文</a><img src ="http://www.cppblog.com/lzh/aggbug/131032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzh/" target="_blank">lzh525</a> 2010-10-24 09:05 <a href="http://www.cppblog.com/lzh/archive/2010/10/24/LC_Display.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>并查集</title><link>http://www.cppblog.com/lzh/archive/2010/10/16/path-press.html</link><dc:creator>lzh525</dc:creator><author>lzh525</author><pubDate>Sat, 16 Oct 2010 07:51:00 GMT</pubDate><guid>http://www.cppblog.com/lzh/archive/2010/10/16/path-press.html</guid><wfw:comment>http://www.cppblog.com/lzh/comments/130135.html</wfw:comment><comments>http://www.cppblog.com/lzh/archive/2010/10/16/path-press.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzh/comments/commentRss/130135.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzh/services/trackbacks/130135.html</trackback:ping><description><![CDATA[<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); 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: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">并查集学习：<br></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; ">并查集：(union-find&nbsp;sets)<br></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #008000; ">一种简单的用途广泛的集合.&nbsp;并查集是若干个不相交集合，能够实现较快的合并和判断元素所在集合的操作，应用很多，如其求无向图的连通分量个数等。最完美的应用当属：实现Kruskar算法求最小生成树。<br></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; ">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;并查集的精髓（即它的三种操作，结合实现代码模板进行理解）：<br></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #008000; ">1、unit(x)&nbsp;把每一个元素初始化为一个集合<br></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #008000; ">初始化后每一个元素的父亲节点是它本身，每一个元素的祖先节点也是它本身（也可以根据情况而变）。<br></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #008000; ">2、find(x)&nbsp;查找一个元素所在的集合<br></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #008000; ">查找一个元素所在的集合，其精髓是找到这个元素所在集合的祖先！这个才是并查集判断和合并的最终依据。<br></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #008000; ">判断两个元素是否属于同一集合，只要看他们所在集合的祖先是否相同即可。<br></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #008000; ">合并两个集合，也是使一个集合的祖先成为另一个集合的祖先，具体见示意图<br></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #008000; ">3、connect(x,y)&nbsp;合并x,y所在的两个集合<br></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #008000; ">合并两个不相交集合操作很简单：<br></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #008000; ">利用find找到其中两个集合的祖先，将一个集合的祖先指向另一个集合的祖先。<br></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;并查集的优化<br></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #008000; ">1、find(x)时&nbsp;路径压缩<br></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #008000; ">寻找祖先时我们一般采用递归查找，但是当元素很多亦或是整棵树变为一条链时，每次find(x)都是O(n)的复杂度，有没有办法减小这个复杂度呢？<br></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #008000; ">答案是肯定的，这就是路径压缩，即当我们经过"递推"找到祖先节点后，"回溯"的时候顺便将它的子孙节点都直接指向祖先，这样以后再次find(x)时复杂度就变成O(1)了，如下图所示；可见，路径压缩方便了以后的查找。<br></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #008000; "><br></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #008000; ">2、connect(x,y)时&nbsp;按秩合并<br></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #008000; ">即合并的时候将元素少的集合合并到元素多的集合中，这样合并之后树的高度会相对较小。<br></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; "><br></span><span style="color: #008080; ">34</span>&nbsp;<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></span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;namesfatherace&nbsp;std;<br></span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; "><br></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;father[</span><span style="color: #000000; ">30001</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: #008080; ">38</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;h[</span><span style="color: #000000; ">30001</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: #008080; ">39</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; "><br></span><span style="color: #008080; ">40</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;Init(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n)<br></span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #000000; ">&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</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br></span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">47</span>&nbsp;<span style="color: #000000; ">}<br></span><span style="color: #008080; ">48</span>&nbsp;<span style="color: #000000; "><br></span><span style="color: #008080; ">49</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;find(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x)<br></span><span style="color: #008080; ">50</span>&nbsp;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(x</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">father[x])<br></span><span style="color: #008080; ">52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[x]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">find(father[x]);<br></span><span style="color: #008080; ">53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;father[x];<br></span><span style="color: #008080; ">54</span>&nbsp;<span style="color: #000000; ">}<br></span><span style="color: #008080; ">55</span>&nbsp;<span style="color: #000000; "><br></span><span style="color: #008080; ">56</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;connect(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;b)<br></span><span style="color: #008080; ">57</span>&nbsp;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x,y;<br></span><span style="color: #008080; ">59</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">find(a);<br></span><span style="color: #008080; ">60</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">find(b);<br></span><span style="color: #008080; ">61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(x</span><span style="color: #000000; ">==</span><span style="color: #000000; ">y)<br></span><span style="color: #008080; ">62</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;;<br></span><span style="color: #008080; ">63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(h[x]</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">h[y])<br></span><span style="color: #008080; ">64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[x]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">y;<br></span><span style="color: #008080; ">65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br></span><span style="color: #008080; ">66</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">67</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(h[x]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">h[y])<br></span><span style="color: #008080; ">68</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h[x]</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[y]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">x;<br></span><span style="color: #008080; ">70</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">71</span>&nbsp;<span style="color: #000000; ">}<br></span><span style="color: #008080; ">72</span>&nbsp;<span style="color: #000000; "><br></span><span style="color: #008080; ">73</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br></span><span style="color: #008080; ">74</span>&nbsp;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">75</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k,a,i,m,n,num,t,first;<br></span><span style="color: #008080; ">76</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Init(</span><span style="color: #000000; ">20</span><span style="color: #000000; ">);<br></span><span style="color: #008080; ">77</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">k;<br></span><span style="color: #008080; ">78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(k</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">79</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">80</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">m</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n;<br></span><span style="color: #008080; ">81</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; ">82</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect(m,n);<br></span><span style="color: #008080; ">83</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">84</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">85</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">86</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">i</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">的父节点为:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">father[i]</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;&nbsp;高度:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">h[i]</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br></span><span style="color: #008080; ">87</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">89</span>&nbsp;<span style="color: #000000; ">}</span></div><img src ="http://www.cppblog.com/lzh/aggbug/130135.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzh/" target="_blank">lzh525</a> 2010-10-16 15:51 <a href="http://www.cppblog.com/lzh/archive/2010/10/16/path-press.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Little Bishops（UVa 861）</title><link>http://www.cppblog.com/lzh/archive/2010/08/25/124684.html</link><dc:creator>lzh525</dc:creator><author>lzh525</author><pubDate>Wed, 25 Aug 2010 07:53:00 GMT</pubDate><guid>http://www.cppblog.com/lzh/archive/2010/08/25/124684.html</guid><wfw:comment>http://www.cppblog.com/lzh/comments/124684.html</wfw:comment><comments>http://www.cppblog.com/lzh/archive/2010/08/25/124684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzh/comments/commentRss/124684.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzh/services/trackbacks/124684.html</trackback:ping><description><![CDATA[<span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">【题目大意】</span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; "><br></span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">　　给定一个n*n的棋盘，求放置k个互不攻击的象的方法数。其中n &lt;= 8，k &lt;= n ^ 2。</span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; "><br></span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">【题目分析】</span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; "><br></span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">　　对于棋盘放车问题可以用组合数学的知识来解决，但是对于含禁区的摆放问题，虽然组合数学给出了经典的棋盘多项式+容斥原理的解法，但是实际中棋盘多项式的求解是很困难的，因此一般需要借助状态压缩动态规划求解。</span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; "><br></span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">　　现在题目中要求出互不攻击的象的方法数，象的攻击路线是斜的，是不是可以考虑采用放车的方法来解呢？将棋盘黑白染色，如果一个象在黑色的格子里面，那么它一定不会攻击到白色的格子，这样的话可以分开计数，然后最后利用乘法原理加起来就行了。把棋盘旋转45度，这样象的攻击路线就是直的了，如果只考虑一种颜色的话，那么问题就转变成了经典的放车问题了，可以利用动态规划解决。</span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; "><br></span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">　　设dp[i][j]表示前i行放了j个车的方法数，c[i]表示第i行可以放置的棋子数量，那么转移方程为：</span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; "><br></span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">　　　　dp[i][j] = dp[i-1][j] + dp[i-1][j-1] * (c[i] - (j - 1))</span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; "><br></span><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">　　需要注意的是c数组应该是增序的，这样才能保证前面的j-1行放了车，对应这一行就有j-1个位</span><div><span  style="color: rgb(75, 75, 75); font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; "><span  style="color: rgb(0, 0, 0); font-family: monospace; line-height: normal; white-space: pre; "><span style="color: rgb(0, 128, 128); "> 1</span> <span style="color: rgb(0, 0, 0); ">#include</span><span style="color: rgb(0, 0, 0); ">&lt;</span><span style="color: rgb(0, 0, 0); ">iostream</span><span style="color: rgb(0, 0, 0); ">&gt;</span><span style="color: rgb(0, 0, 0); ">
</span><span style="color: rgb(0, 128, 128); "> 2</span> <span style="color: rgb(0, 0, 0); ">#include</span><span style="color: rgb(0, 0, 0); ">&lt;</span><span style="color: rgb(0, 0, 0); ">algorithm</span><span style="color: rgb(0, 0, 0); ">&gt;</span><span style="color: rgb(0, 0, 0); ">
</span><span style="color: rgb(0, 128, 128); "> 3</span> <span style="color: rgb(0, 0, 0); "></span><span style="color: rgb(0, 0, 255); ">using</span><span style="color: rgb(0, 0, 0); "> </span><span style="color: rgb(0, 0, 255); ">namespace</span><span style="color: rgb(0, 0, 0); "> std;
</span><span style="color: rgb(0, 128, 128); "> 4</span> <span style="color: rgb(0, 0, 0); "></span><span style="color: rgb(0, 0, 255); ">const</span><span style="color: rgb(0, 0, 0); "> </span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> N </span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); "> </span><span style="color: rgb(0, 0, 0); ">70</span><span style="color: rgb(0, 0, 0); ">;
</span><span style="color: rgb(0, 128, 128); "> 5</span> <span style="color: rgb(0, 0, 0); ">
</span><span style="color: rgb(0, 128, 128); "> 6</span> <span style="color: rgb(0, 0, 0); "></span><span style="color: rgb(0, 0, 255); ">void</span><span style="color: rgb(0, 0, 0); "> init(</span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> n, </span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> </span><span style="color: rgb(0, 0, 0); ">*</span><span style="color: rgb(0, 0, 0); ">c1, </span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> </span><span style="color: rgb(0, 0, 0); ">*</span><span style="color: rgb(0, 0, 0); ">c2)</span><span style="color: rgb(0, 128, 0); ">//</span><span style="color: rgb(0, 128, 0); ">将棋盘分为黑白两个区域，使得相同颜色的才在象的攻击范围内</span><span style="color: rgb(0, 128, 0); ">
</span><span style="color: rgb(0, 128, 128); "> 7</span> <span style="color: rgb(0, 128, 0); "></span><span style="color: rgb(0, 0, 0); ">{
</span><span style="color: rgb(0, 128, 128); "> 8</span> <span style="color: rgb(0, 0, 0); ">    memset(c1,</span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">,</span><span style="color: rgb(0, 0, 255); ">sizeof</span><span style="color: rgb(0, 0, 0); ">(</span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); ">) </span><span style="color: rgb(0, 0, 0); ">*</span><span style="color: rgb(0, 0, 0); "> N);
</span><span style="color: rgb(0, 128, 128); "> 9</span> <span style="color: rgb(0, 0, 0); ">    memset(c2,</span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">,</span><span style="color: rgb(0, 0, 255); ">sizeof</span><span style="color: rgb(0, 0, 0); ">(</span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); ">) </span><span style="color: rgb(0, 0, 0); ">*</span><span style="color: rgb(0, 0, 0); "> N);
</span><span style="color: rgb(0, 128, 128); ">10</span> <span style="color: rgb(0, 0, 0); ">    </span><span style="color: rgb(0, 0, 255); ">for</span><span style="color: rgb(0, 0, 0); "> (</span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> i </span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); "> </span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">; i </span><span style="color: rgb(0, 0, 0); ">&lt;=</span><span style="color: rgb(0, 0, 0); "> n; i</span><span style="color: rgb(0, 0, 0); ">++</span><span style="color: rgb(0, 0, 0); ">)
</span><span style="color: rgb(0, 128, 128); ">11</span> <span style="color: rgb(0, 0, 0); ">    {
</span><span style="color: rgb(0, 128, 128); ">12</span> <span style="color: rgb(0, 0, 0); ">        </span><span style="color: rgb(0, 0, 255); ">for</span><span style="color: rgb(0, 0, 0); "> (</span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> j </span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); "> </span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">; j </span><span style="color: rgb(0, 0, 0); ">&lt;=</span><span style="color: rgb(0, 0, 0); "> n; j</span><span style="color: rgb(0, 0, 0); ">++</span><span style="color: rgb(0, 0, 0); ">)
</span><span style="color: rgb(0, 128, 128); ">13</span> <span style="color: rgb(0, 0, 0); ">        {
</span><span style="color: rgb(0, 128, 128); ">14</span> <span style="color: rgb(0, 0, 0); ">            </span><span style="color: rgb(0, 0, 255); ">if</span><span style="color: rgb(0, 0, 0); ">((i</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">j)</span><span style="color: rgb(0, 0, 0); ">%</span><span style="color: rgb(0, 0, 0); ">2</span><span style="color: rgb(0, 0, 0); ">)</span><span style="color: rgb(0, 128, 0); ">//</span><span style="color: rgb(0, 128, 0); ">白色区域</span><span style="color: rgb(0, 128, 0); ">
</span><span style="color: rgb(0, 128, 128); ">15</span> <span style="color: rgb(0, 128, 0); "></span><span style="color: rgb(0, 0, 0); ">                c2[(i</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">j)</span><span style="color: rgb(0, 0, 0); ">/</span><span style="color: rgb(0, 0, 0); ">2</span><span style="color: rgb(0, 0, 0); ">]</span><span style="color: rgb(0, 0, 0); ">++</span><span style="color: rgb(0, 0, 0); ">;</span><span style="color: rgb(0, 128, 0); ">//</span><span style="color: rgb(0, 128, 0); ">第(i+j)/2斜行有几个白色格子</span><span style="color: rgb(0, 128, 0); ">
</span><span style="color: rgb(0, 128, 128); ">16</span> <span style="color: rgb(0, 128, 0); "></span><span style="color: rgb(0, 0, 0); ">            </span><span style="color: rgb(0, 0, 255); ">else</span><span style="color: rgb(0, 128, 0); ">//</span><span style="color: rgb(0, 128, 0); ">黑色区域</span><span style="color: rgb(0, 128, 0); ">
</span><span style="color: rgb(0, 128, 128); ">17</span> <span style="color: rgb(0, 128, 0); "></span><span style="color: rgb(0, 0, 0); ">                c1[(i</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">j)</span><span style="color: rgb(0, 0, 0); ">/</span><span style="color: rgb(0, 0, 0); ">2</span><span style="color: rgb(0, 0, 0); ">]</span><span style="color: rgb(0, 0, 0); ">++</span><span style="color: rgb(0, 0, 0); ">;</span><span style="color: rgb(0, 128, 0); ">//</span><span style="color: rgb(0, 128, 0); ">第(i+j)/2斜行有几个黑色格子</span><span style="color: rgb(0, 128, 0); ">
</span><span style="color: rgb(0, 128, 128); ">18</span> <span style="color: rgb(0, 128, 0); "></span><span style="color: rgb(0, 0, 0); ">        }
</span><span style="color: rgb(0, 128, 128); ">19</span> <span style="color: rgb(0, 0, 0); ">    }
</span><span style="color: rgb(0, 128, 128); ">20</span> <span style="color: rgb(0, 0, 0); ">}
</span><span style="color: rgb(0, 128, 128); ">21</span> <span style="color: rgb(0, 0, 0); ">
</span><span style="color: rgb(0, 128, 128); ">22</span> <span style="color: rgb(0, 0, 0); "></span><span style="color: rgb(0, 0, 255); ">void</span><span style="color: rgb(0, 0, 0); "> bishops(</span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> n, </span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> dp[N][N], </span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> c[N])</span><span style="color: rgb(0, 128, 0); ">//</span><span style="color: rgb(0, 128, 0); ">计算过程</span><span style="color: rgb(0, 128, 0); ">
</span><span style="color: rgb(0, 128, 128); ">23</span> <span style="color: rgb(0, 128, 0); "></span><span style="color: rgb(0, 0, 0); ">{
</span><span style="color: rgb(0, 128, 128); ">24</span> <span style="color: rgb(0, 0, 0); ">    </span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> i,j;
</span><span style="color: rgb(0, 128, 128); ">25</span> <span style="color: rgb(0, 0, 0); ">    </span><span style="color: rgb(0, 0, 255); ">for</span><span style="color: rgb(0, 0, 0); ">(i</span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">;i</span><span style="color: rgb(0, 0, 0); ">&lt;=</span><span style="color: rgb(0, 0, 0); ">n;i</span><span style="color: rgb(0, 0, 0); ">++</span><span style="color: rgb(0, 0, 0); ">)
</span><span style="color: rgb(0, 128, 128); ">26</span> <span style="color: rgb(0, 0, 0); ">        dp[i][</span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">]</span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">;
</span><span style="color: rgb(0, 128, 128); ">27</span> <span style="color: rgb(0, 0, 0); ">    </span><span style="color: rgb(0, 0, 255); ">for</span><span style="color: rgb(0, 0, 0); ">(i</span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">;i</span><span style="color: rgb(0, 0, 0); ">&lt;=</span><span style="color: rgb(0, 0, 0); ">n;i</span><span style="color: rgb(0, 0, 0); ">++</span><span style="color: rgb(0, 0, 0); ">)
</span><span style="color: rgb(0, 128, 128); ">28</span> <span style="color: rgb(0, 0, 0); ">        </span><span style="color: rgb(0, 0, 255); ">for</span><span style="color: rgb(0, 0, 0); ">(j</span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">;j</span><span style="color: rgb(0, 0, 0); ">&lt;=</span><span style="color: rgb(0, 0, 0); ">c[i];j</span><span style="color: rgb(0, 0, 0); ">++</span><span style="color: rgb(0, 0, 0); ">)
</span><span style="color: rgb(0, 128, 128); ">29</span> <span style="color: rgb(0, 0, 0); ">            dp[i][j] </span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); "> dp[i</span><span style="color: rgb(0, 0, 0); ">-</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">][j]</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">dp[i</span><span style="color: rgb(0, 0, 0); ">-</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">][j</span><span style="color: rgb(0, 0, 0); ">-</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">]</span><span style="color: rgb(0, 0, 0); ">*</span><span style="color: rgb(0, 0, 0); ">(c[i]</span><span style="color: rgb(0, 0, 0); ">-</span><span style="color: rgb(0, 0, 0); ">j</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">);
</span><span style="color: rgb(0, 128, 128); ">30</span> <span style="color: rgb(0, 0, 0); ">}
</span><span style="color: rgb(0, 128, 128); ">31</span> <span style="color: rgb(0, 0, 0); ">
</span><span style="color: rgb(0, 128, 128); ">32</span> <span style="color: rgb(0, 0, 0); "></span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> main()
</span><span style="color: rgb(0, 128, 128); ">33</span> <span style="color: rgb(0, 0, 0); ">{
</span><span style="color: rgb(0, 128, 128); ">34</span> <span style="color: rgb(0, 0, 0); ">    </span><span style="color: rgb(0, 0, 255); ">int</span><span style="color: rgb(0, 0, 0); "> n, k, c1[N], c2[N], dp1[N][N], dp2[N][N], ans,i;
</span><span style="color: rgb(0, 128, 128); ">35</span> <span style="color: rgb(0, 0, 0); ">    
</span><span style="color: rgb(0, 128, 128); ">36</span> <span style="color: rgb(0, 0, 0); ">    </span><span style="color: rgb(0, 0, 255); ">while</span><span style="color: rgb(0, 0, 0); ">(cin</span><span style="color: rgb(0, 0, 0); ">&gt;&gt;</span><span style="color: rgb(0, 0, 0); ">n</span><span style="color: rgb(0, 0, 0); ">&gt;&gt;</span><span style="color: rgb(0, 0, 0); ">k)  
</span><span style="color: rgb(0, 128, 128); ">37</span> <span style="color: rgb(0, 0, 0); ">    {
</span><span style="color: rgb(0, 128, 128); ">38</span> <span style="color: rgb(0, 0, 0); ">        </span><span style="color: rgb(0, 0, 255); ">if</span><span style="color: rgb(0, 0, 0); "> (n</span><span style="color: rgb(0, 0, 0); ">==</span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">&amp;&amp;</span><span style="color: rgb(0, 0, 0); ">k </span><span style="color: rgb(0, 0, 0); ">==</span><span style="color: rgb(0, 0, 0); "> </span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">)
</span><span style="color: rgb(0, 128, 128); ">39</span> <span style="color: rgb(0, 0, 0); ">            </span><span style="color: rgb(0, 0, 255); ">break</span><span style="color: rgb(0, 0, 0); ">;
</span><span style="color: rgb(0, 128, 128); ">40</span> <span style="color: rgb(0, 0, 0); ">        init(n,c1,c2);
</span><span style="color: rgb(0, 128, 128); ">41</span> <span style="color: rgb(0, 0, 0); ">        sort(c1</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">,c1</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">n</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">);
</span><span style="color: rgb(0, 128, 128); ">42</span> <span style="color: rgb(0, 0, 0); ">        sort(c2</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">,c2</span><span style="color: rgb(0, 0, 0); ">+</span><span style="color: rgb(0, 0, 0); ">n);
</span><span style="color: rgb(0, 128, 128); ">43</span> <span style="color: rgb(0, 0, 0); ">        memset(dp1,</span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">,</span><span style="color: rgb(0, 0, 255); ">sizeof</span><span style="color: rgb(0, 0, 0); ">(dp1));
</span><span style="color: rgb(0, 128, 128); ">44</span> <span style="color: rgb(0, 0, 0); ">        memset(dp2,</span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">,</span><span style="color: rgb(0, 0, 255); ">sizeof</span><span style="color: rgb(0, 0, 0); ">(dp2));
</span><span style="color: rgb(0, 128, 128); ">45</span> <span style="color: rgb(0, 0, 0); ">        bishops(n,dp1,c1);
</span><span style="color: rgb(0, 128, 128); ">46</span> <span style="color: rgb(0, 0, 0); ">        bishops(n</span><span style="color: rgb(0, 0, 0); ">-</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">,dp2,c2);
</span><span style="color: rgb(0, 128, 128); ">47</span> <span style="color: rgb(0, 0, 0); ">        ans</span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">;
</span><span style="color: rgb(0, 128, 128); ">48</span> <span style="color: rgb(0, 0, 0); ">        </span><span style="color: rgb(0, 0, 255); ">for</span><span style="color: rgb(0, 0, 0); ">(i</span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">;i</span><span style="color: rgb(0, 0, 0); ">&lt;=</span><span style="color: rgb(0, 0, 0); ">k;i</span><span style="color: rgb(0, 0, 0); ">++</span><span style="color: rgb(0, 0, 0); ">)
</span><span style="color: rgb(0, 128, 128); ">49</span> <span style="color: rgb(0, 0, 0); ">            ans</span><span style="color: rgb(0, 0, 0); ">+=</span><span style="color: rgb(0, 0, 0); ">dp1[n][i]</span><span style="color: rgb(0, 0, 0); ">*</span><span style="color: rgb(0, 0, 0); ">dp2[n</span><span style="color: rgb(0, 0, 0); ">-</span><span style="color: rgb(0, 0, 0); ">1</span><span style="color: rgb(0, 0, 0); ">][k</span><span style="color: rgb(0, 0, 0); ">-</span><span style="color: rgb(0, 0, 0); ">i];
</span><span style="color: rgb(0, 128, 128); ">50</span> <span style="color: rgb(0, 0, 0); ">        cout</span><span style="color: rgb(0, 0, 0); ">&lt;&lt;</span><span style="color: rgb(0, 0, 0); ">ans</span><span style="color: rgb(0, 0, 0); ">&lt;&lt;</span><span style="color: rgb(0, 0, 0); ">endl;
</span><span style="color: rgb(0, 128, 128); ">51</span> <span style="color: rgb(0, 0, 0); ">    }
</span><span style="color: rgb(0, 128, 128); ">52</span> <span style="color: rgb(0, 0, 0); ">    
</span><span style="color: rgb(0, 128, 128); ">53</span> <span style="color: rgb(0, 0, 0); ">    </span><span style="color: rgb(0, 0, 255); ">return</span><span style="color: rgb(0, 0, 0); "> </span><span style="color: rgb(0, 0, 0); ">0</span><span style="color: rgb(0, 0, 0); ">;
</span><span style="color: rgb(0, 128, 128); ">54</span> <span style="color: rgb(0, 0, 0); ">}</span></span></span></div><img src ="http://www.cppblog.com/lzh/aggbug/124684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzh/" target="_blank">lzh525</a> 2010-08-25 15:53 <a href="http://www.cppblog.com/lzh/archive/2010/08/25/124684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Repackaging(UVa10089)</title><link>http://www.cppblog.com/lzh/archive/2010/08/22/Repackaging.html</link><dc:creator>lzh525</dc:creator><author>lzh525</author><pubDate>Sun, 22 Aug 2010 04:53:00 GMT</pubDate><guid>http://www.cppblog.com/lzh/archive/2010/08/22/Repackaging.html</guid><wfw:comment>http://www.cppblog.com/lzh/comments/124276.html</wfw:comment><comments>http://www.cppblog.com/lzh/archive/2010/08/22/Repackaging.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzh/comments/commentRss/124276.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzh/services/trackbacks/124276.html</trackback:ping><description><![CDATA[
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #008080; ">将问题转化为点A（0,0）是否在一个凸多边形内的问题........点是否在由其他点围成的多边形里的问题又转化为斜率的问题........</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #008080; "><br></span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #008080; ">1</span>&nbsp;<span style="color: #000000; ">#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; ">&nbsp;&nbsp;<br></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<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; ">&nbsp;&nbsp;<br></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;&nbsp;<br></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; "></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;&nbsp;&nbsp;<br></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">typedef&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;llint;&nbsp;&nbsp;<br></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">llint&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;maxn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1001</span><span style="color: #000000; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;repackage(llint&nbsp;pkgs[][</span><span style="color: #000000; ">3</span><span style="color: #000000; ">],&nbsp;llint&nbsp;p)&nbsp;&nbsp;<br></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">{&nbsp;&nbsp;<br></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;llint&nbsp;i;<br></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">p;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pkgs[i][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;pkgs[i][</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">转换为二维&nbsp;</span><span style="color: #008000; "><br></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pkgs[i][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;pkgs[i][</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];&nbsp;&nbsp;<br></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;llint&nbsp;x1</span><span style="color: #000000; ">=</span><span style="color: #000000; ">pkgs[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">],&nbsp;y1</span><span style="color: #000000; ">=</span><span style="color: #000000; ">pkgs[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],x2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pkgs[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">],&nbsp;y2</span><span style="color: #000000; ">=</span><span style="color: #000000; ">pkgs[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];&nbsp;&nbsp;<br></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;p;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;llint&nbsp;x&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pkgs[i][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">],&nbsp;y&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pkgs[i][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];&nbsp;&nbsp;<br></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;llint&nbsp;a1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;y1&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x,&nbsp;b1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;x1&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;y,&nbsp;a2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;y2&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x,&nbsp;b2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;x2&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;y;&nbsp;&nbsp;<br></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(a1&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;b1)&nbsp;&nbsp;<br></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(x1&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;y1&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;y</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">如果两点在一条直线上且位于不同项限则（0，0）包含在凸包内</span><span style="color: #008000; "><br></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&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;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(a2&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;b2)&nbsp;&nbsp;<br></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&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;(x2&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;y2&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;y&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></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&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;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&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;(a1&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;b1)<br></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;x,&nbsp;y1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;y;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">保存斜率大的</span><span style="color: #008000; "><br></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&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;(a2&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;b2)<br></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;x,&nbsp;y2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;y;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">保存斜率小的</span><span style="color: #008000; "><br></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&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;(x1</span><span style="color: #000000; ">==</span><span style="color: #000000; ">x2</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">y1</span><span style="color: #000000; ">==</span><span style="color: #000000; ">y2)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">(0,0)点包含在凸包内则&#8220;YES&#8221;</span><span style="color: #008000; "><br></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&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;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; ">&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;(y1&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x2&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;y2&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x1)&nbsp;&nbsp;<br></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">&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; ">&nbsp;(x1&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x2&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;y1&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;y2&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;<br></span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&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;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&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; ">&nbsp;(y1&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x2&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;y2&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x1)<br></span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&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;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br></span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #000000; ">&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; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #000000; ">}&nbsp;&nbsp;<br></span><span style="color: #008080; ">40</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()&nbsp;&nbsp;<br></span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #000000; ">{&nbsp;&nbsp;<br></span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;llint&nbsp;pkgs[maxn][</span><span style="color: #000000; ">3</span><span style="color: #000000; ">],p,i;<br></span><span style="color: #008080; ">43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">p)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; ">44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br></span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(p</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">47</span>&nbsp;<span style="color: #000000; ">&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; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">p;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;&nbsp;<br></span><span style="color: #008080; ">48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">pkgs[i][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">pkgs[i][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">pkgs[i][</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];&nbsp;&nbsp;<br></span><span style="color: #008080; ">49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(repackage(pkgs,p))&nbsp;&nbsp;<br></span><span style="color: #008080; ">50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Yes\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;&nbsp;<br></span><span style="color: #008080; ">52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">No\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br></span><span style="color: #008080; ">54</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;&nbsp;<br></span><span style="color: #008080; ">55</span>&nbsp;<span style="color: #000000; ">}&nbsp;</span></div><img src ="http://www.cppblog.com/lzh/aggbug/124276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzh/" target="_blank">lzh525</a> 2010-08-22 12:53 <a href="http://www.cppblog.com/lzh/archive/2010/08/22/Repackaging.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Marbles(UVa 10090)</title><link>http://www.cppblog.com/lzh/archive/2010/08/22/Marbles.html</link><dc:creator>lzh525</dc:creator><author>lzh525</author><pubDate>Sun, 22 Aug 2010 03:18:00 GMT</pubDate><guid>http://www.cppblog.com/lzh/archive/2010/08/22/Marbles.html</guid><wfw:comment>http://www.cppblog.com/lzh/comments/124257.html</wfw:comment><comments>http://www.cppblog.com/lzh/archive/2010/08/22/Marbles.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzh/comments/commentRss/124257.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzh/services/trackbacks/124257.html</trackback:ping><description><![CDATA[


<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #008080; ">/*刚拿此题时一头雾水，当看完一次同余方程时方才有点头绪.....后来在又在求最值问题上遇到麻烦。最后才在数学推导下才AC此题.....第一次深刻体会到数学对解题的重要性....下面说一下我的解题思路.....</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #008080; ">1.首先通过Gcd函数求出n1,n2的最大公约数g以及满足条件的x,y: &nbsp;n1*x+n2*y=n;（递归运用:x0=1,y0=0;x=y1,y=(x1-n1/n2*y1)）</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><font color="#008080">显然当n不能被g整除时显然没解....这里有一个问题：Gcd函数求出的x,y为什么刚好能使得|x|+|y|最小？？请求数学达人指导</font></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><font color="#008080">2.求出满足条件的m1,m2使得m1*n1+m2*n2=n &nbsp;(1)：由1得,x*n1+y*n2=g (2)....结合（1（2）:m1=</font><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">n</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">*</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">x</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">/</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">g</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">+</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">t</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">*</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">n2</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">/</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">g,m2=</span></span><span style="color: rgb(0, 0, 0); ">n</span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">*</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">y</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">/</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">g</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">-</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">t</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">*</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">n1</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">/</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">g;这里的t是一个参数，但仍能满足（1）式。</span></span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">3.由m1&gt;=0,m2&gt;=0可得他t1=&lt;t&lt;=t2;（注意t的取值必须为整数）</span></span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">4.由c=c1*m1+c2*m==》c=num1+t*(</span></span><span style="color: rgb(0, 0, 0); ">c1</span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">*</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">n2</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">-</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">c2</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">*</span></span><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">n1</span></span>)....因此c的大小取决于<span style="color: rgb(0, 0, 0); ">c1</span><span style="font-size: 13px; "><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">*</span></span></span><span style="font-size: 13px; "><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">n2</span></span></span><span style="font-size: 13px; "><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">-</span></span></span><span style="font-size: 13px; "><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">c2</span></span></span><span style="font-size: 13px; "><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">*</span></span></span><span style="font-size: 13px; "><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); ">n1的正负以及t的值....之后的过程在代码中很明了了。</span></span></span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); "></span></span><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">math.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; "></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: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;Gcd(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;p,</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;q,</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x,</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">y)<br></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;x1,y1;<br></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;g;<br></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(q</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">p)<br></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;(Gcd(q,p,y,x));<br></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(q</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;p;<br></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;g</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Gcd(q,p</span><span style="color: #000000; ">%</span><span style="color: #000000; ">q,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">x1,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">y1);<br></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">y1;<br></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(x1</span><span style="color: #000000; ">-</span><span style="color: #000000; ">p</span><span style="color: #000000; ">/</span><span style="color: #000000; ">q</span><span style="color: #000000; ">*</span><span style="color: #000000; ">y1);<br></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;g;<br></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">}<br></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">{</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #000000; "><font color="#008080"><font color="#000000">23<br></font></font></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;n,c1,c2,n1,n2,x,y,gcd,t1,t2,t,a,b;<br></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">freopen("c:\\in.txt","r",stdin);<br></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;freopen("c:\\8522.out","w",stdout);</span><span style="color: #008000; "><br></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n)<br></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">c1</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n1</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">c2</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n2;<br></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcd</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Gcd(n1,n2,</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></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t1</span><span style="color: #000000; ">=</span><span style="color: #000000; ">ceil(</span><span style="color: #000000; ">-</span><span style="color: #000000; ">n</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)x</span><span style="color: #000000; ">/</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)n2);<br></span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t2</span><span style="color: #000000; ">=</span><span style="color: #000000; ">floor(n</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)y</span><span style="color: #000000; ">/</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)n1);<br></span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">((t1</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">t2)</span><span style="color: #000000; ">||</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">%</span><span style="color: #000000; ">gcd</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">))<br></span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">failed\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">40</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(c1</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n2</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">c2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n1)<br></span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">=</span><span style="color: #000000; ">t1;<br></span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080; ">43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br></span><span style="color: #008080; ">44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">=</span><span style="color: #000000; ">t2;<br></span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x</span><span style="color: #000000; ">/</span><span style="color: #000000; ">gcd</span><span style="color: #000000; ">+</span><span style="color: #000000; ">t</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n2</span><span style="color: #000000; ">/</span><span style="color: #000000; ">gcd;<br></span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b</span><span style="color: #000000; ">=</span><span style="color: #000000; ">n</span><span style="color: #000000; ">*</span><span style="color: #000000; ">y</span><span style="color: #000000; ">/</span><span style="color: #000000; ">gcd</span><span style="color: #000000; ">-</span><span style="color: #000000; ">t</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n1</span><span style="color: #000000; ">/</span><span style="color: #000000; ">gcd;<br></span><span style="color: #008080; ">47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">a</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">b</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br></span><span style="color: #008080; ">48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080; ">49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">50</span>&nbsp;<span style="color: #000000; ">}</span></div><br><img src ="http://www.cppblog.com/lzh/aggbug/124257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzh/" target="_blank">lzh525</a> 2010-08-22 11:18 <a href="http://www.cppblog.com/lzh/archive/2010/08/22/Marbles.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>