﻿<?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++博客-ArcTan-文章分类-ACM</title><link>http://www.cppblog.com/ArcTan/category/18729.html</link><description>dfs</description><language>zh-cn</language><lastBuildDate>Sun, 29 Apr 2012 03:34:26 GMT</lastBuildDate><pubDate>Sun, 29 Apr 2012 03:34:26 GMT</pubDate><ttl>60</ttl><item><title>CF：April Fools Day Contest（20120401）</title><link>http://www.cppblog.com/ArcTan/articles/169845.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Mon, 02 Apr 2012 03:27:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/169845.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/169845.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/169845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/169845.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/169845.html</trackback:ping><description><![CDATA[<div><h4><a href="http://codeforces.com/contest/171/problem/A" title="April Fools Day Contest">171A - Mysterious numbers - 1</a></h4><p>The  easiest way to make the problem statement unusual is to omit it. This  is an extremely convenient approach &#8212; you don&#8217;t have to maintain the  statement in two languages or to worry that it might turn out to be  ambiguous or too long or too scary. 690 people solved this problem, so  evidently we can omit statements even in regular rounds :-)</p><p>As for the problem itself, it required to sum the first number and the reverse of the second number.</p><h4><a href="http://codeforces.com/contest/171/problem/B" title="April Fools Day Contest">171B - A star</a></h4><p>They  say it&#8217;s better to see once than to hear ten times or to read a hundred  times. In this problem we decided to check this and to replace the  traditional textual statement with a single image. Same as in the  previous problem, it did well &#8212; at least 645 participants recognized  star numbers (sequence <a href="http://oeis.org/A003154">http://oeis.org/A003154</a>  in OEIS), the numbers of balls needed to form a six-pointed start of  certain size. After this one had only to code the formula &#8212; <em>S</em><sub><em>n</em></sub>&#8201;=&#8201;6<em>n</em>(<em>n</em>&#8722;1)&#8201;+&#8201;1.</p><h4><a href="http://codeforces.com/contest/171/problem/D" title="April Fools Day Contest">171D - Broken checker</a></h4><p>What  does one do if the statement is unknown and the only source of  information about the problem is the checker? Right &#8212; you just try all  possible functions which convert 5 input values into 3 output values and  see which of them fits :-)</p><h4><a href="http://codeforces.com/contest/171/problem/F" title="April Fools Day Contest">171F - ucyhf</a></h4><p>This  problem finally has a statement! The trick is, it&#8217;s encoded. We decided  to be kind to you and to use the simplest cipher possible &#8212; Caesar  cipher (each letter is shifted the same number of positions in the  alphabet). By a long stretch of imagination one could break the cipher  by hand &#8212; observe frequent letters and short words, deduce possible  values of shift and verify it against the rest of the message. A lazier  one could Goog</p><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"><img id="Code_Closed_Image_112028" onclick="this.style.display='none'; Code_Closed_Text_112028.style.display='none'; Code_Open_Image_112028.style.display='inline'; Code_Open_Text_112028.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_112028" style="display: none" onclick="this.style.display='none'; Code_Open_Text_112028.style.display='none'; Code_Closed_Image_112028.style.display='inline'; Code_Closed_Text_112028.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span id="Code_Closed_Text_112028" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Code_Open_Text_112028" style="display: none"><br /><!--<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; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#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 /><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;n;<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</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<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; ">,</span><span style="color: #000000; ">6</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">6</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</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;</span><span style="color: #000000; ">0</span><span style="color: #000000;">;<br />}<br /></span></span></div><p>le for a tool like <a href="http://www.sccs.swarthmore.edu/users/03/julieg/hw14cipher.html">this one</a> and get the decoded version semi-automatically.</p><p>After  cracking the statement the rest was almost easy &#8212; you had to find a  prime whose reverse is a prime different from the original one (sequence  <a>http://oeis.org/A006567)</a>. 11184-th such number equals 999983, so one could do a brute-force check of all numbers in row.</p><h4><a href="http://codeforces.com/contest/171/problem/E" title="April Fools Day Contest">171E - UNKNOWN LANGUAGE</a></h4><p>A  special contest written by me and no special programming language?  Impossible! I pulled myself up and made only 25% of all problems  esoteric &#8212; that&#8217;s two. There really should be three but the third  interpreter refused to cooperate. Maybe next time&#8230;</p><p>What can one do  if all he knows about the language is its compiler? Just run any code  and see what the compiler says. In this case the compiler said &#8220;DO YOU  EXPECT ME TO FIGURE THIS OUT?&#8221;, and Google should tell you immediately  that the language in question is <a href="http://progopedia.com/language/intercal/">INTERCAL</a>. The problem simplifies to figure out the dialect used and how to output &#8220;INTERCAL&#8221; in it.</p><p>In Codeforces round #96 I gave a problem <a href="http://codeforces.com/contest/133/problem/C" title="Codeforces Beta Round 96 (Div. 2)">133C - Turing Tape</a>  which explained the mechanism of string output in INTERCAL and asked to  write a program which converted a string into an array of numbers which  would print this string. Combine this knowledge with <a href="http://progopedia.com/example/hello-world/257/">Hello, World! example</a> and you get the program you need. Actually, that&#8217;s what I did to write the reference solution.</p> <pre><code>PLEASE DO ,1 &lt;- #8<span> DO </span>,1 SUB #1 &lt;- #110<span> PLEASE DO </span>,1 SUB #2 &lt;- #32<span> DO </span>,1 SUB #3 &lt;- #72<span> DO </span>,1 SUB #4 &lt;- #136<span> DO </span>,1 SUB #5 &lt;- #88<span> DO </span>,1 SUB #6 &lt;- #136<span> DO </span>,1 SUB #7 &lt;- #64<span> DO </span>,1 SUB #8 &lt;- #80<span> PLEASE READ OUT </span>,1<span> PLEASE GIVE UP</span></code></pre><h4><a href="http://codeforces.com/contest/171/problem/C" title="April Fools Day Contest">171C - A Piece of Cake</a></h4><p>The second esoteric problem had a <a href="http://progopedia.com/language/chef/">Chef</a>  program as the statement. You had only to figure out what it does and  do it in any regular language. It turns out that this program reads N  followed by N numbers $a_1, a_2, &#8230;, a_N$ and calculated the sum <em>i</em>&#8201;*&#8201;<em>a</em><sub><em>i</em></sub>.</p><h4><a href="http://codeforces.com/contest/171/problem/G" title="April Fools Day Contest">171G - Mysterious numbers - 2</a></h4><p>This  one was much harder to guess but much easier to code. First two numbers  were the start of a Fibonacci-like sequence, and the third one was the  index of the required number in this sequence.</p></div><br /><br />第一次做CF，看来是没有选好时间啊，呵呵，April Fools Day，把我娱乐愚了。<br />群主说这是个智慧的比赛，我承认，自己智商不行不行~~~~<br />A：<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"><img id="Code_Closed_Image_111953" onclick="this.style.display='none'; Code_Closed_Text_111953.style.display='none'; Code_Open_Image_111953.style.display='inline'; Code_Open_Text_111953.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_111953" style="display: none" onclick="this.style.display='none'; Code_Open_Text_111953.style.display='none'; Code_Closed_Image_111953.style.display='inline'; Code_Closed_Text_111953.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span id="Code_Closed_Text_111953" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Code_Open_Text_111953" style="display: none"><br /><!--<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; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#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: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;down(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;s)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(s)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">=</span><span style="color: #000000; ">10</span><span style="color: #000000; ">*</span><span style="color: #000000; ">t</span><span style="color: #000000; ">+</span><span style="color: #000000; ">s</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000; ">/=</span><span style="color: #000000; ">10</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;t;<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;a,b;<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</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; ">==</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<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; ">,a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">down(b));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&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 />}<br /></span></span></div>B：<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"><img id="Code_Closed_Image_112050" onclick="this.style.display='none'; Code_Closed_Text_112050.style.display='none'; Code_Open_Image_112050.style.display='inline'; Code_Open_Text_112050.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_112050" style="display: none" onclick="this.style.display='none'; Code_Open_Text_112050.style.display='none'; Code_Closed_Image_112050.style.display='inline'; Code_Closed_Text_112050.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span id="Code_Closed_Text_112050" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Code_Open_Text_112050" style="display: none"><br /><!--<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; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#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 /><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;n;<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</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<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; ">,</span><span style="color: #000000; ">6</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">6</span><span style="color: #000000; ">*</span><span style="color: #000000; ">n</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</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;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></span></div>C：<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"><img id="Code_Closed_Image_112117" onclick="this.style.display='none'; Code_Closed_Text_112117.style.display='none'; Code_Open_Image_112117.style.display='inline'; Code_Open_Text_112117.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_112117" style="display: none" onclick="this.style.display='none'; Code_Open_Text_112117.style.display='none'; Code_Closed_Image_112117.style.display='inline'; Code_Closed_Text_112117.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span id="Code_Closed_Text_112117" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Code_Open_Text_112117" style="display: none"><br /><!--<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; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#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 /><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;n,i,sum,a;<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</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;</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; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n&nbsp;;i</span><span style="color: #000000; ">++</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;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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">i</span><span style="color: #000000; ">*</span><span style="color: #000000; ">a;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<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; ">,sum);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&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 />}<br /></span></span></div>D：<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"><img id="Code_Closed_Image_112321" onclick="this.style.display='none'; Code_Closed_Text_112321.style.display='none'; Code_Open_Image_112321.style.display='inline'; Code_Open_Text_112321.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_112321" style="display: none" onclick="this.style.display='none'; Code_Open_Text_112321.style.display='none'; Code_Closed_Image_112321.style.display='inline'; Code_Closed_Text_112321.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span id="Code_Closed_Text_112321" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Code_Open_Text_112321" style="display: none;"><br /><!--<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; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#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 /><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;g[</span><span style="color: #000000; ">6</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">},i;<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</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">i)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<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; ">,g[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&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 />}<br /></span></span></div>G：<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"><img id="Code_Closed_Image_112355" onclick="this.style.display='none'; Code_Closed_Text_112355.style.display='none'; Code_Open_Image_112355.style.display='inline'; Code_Open_Text_112355.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_112355" style="display: none" onclick="this.style.display='none'; Code_Open_Text_112355.style.display='none'; Code_Closed_Image_112355.style.display='inline'; Code_Closed_Text_112355.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span id="Code_Closed_Text_112355" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Code_Open_Text_112355" style="display: none"><br /><!--<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; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#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 /><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;a,b,c;<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; ">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)</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;c</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(c</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="color: #000000; ">=</span><span style="color: #000000; ">b</span><span style="color: #000000; ">-</span><span style="color: #000000; ">a;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<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; ">,b);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&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 />}<br /></span></span></div><br />E和F表示不会啊，再研究研究吧。弱爆了~~~~<br /><br />群主确实很厉害呀，看来今年又果断会被虐了。<br /><br />想象力不行呀，<img src ="http://www.cppblog.com/ArcTan/aggbug/169845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-04-02 11:27 <a href="http://www.cppblog.com/ArcTan/articles/169845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>矩阵胚系统</title><link>http://www.cppblog.com/ArcTan/articles/169719.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 31 Mar 2012 14:55:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/169719.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/169719.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/169719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/169719.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/169719.html</trackback:ping><description><![CDATA[<div>矩阵胚<br />　　矩阵胚的定义是：<br />　　M={S,I}<br />　　其中S为有限集，I为S的一个子集族，满足下面条件：<br />　　1.{}属于I<br />　　2.如果集合X属于I，则X的所有子集都属于I。<br />　　3.如果集合W，V都属于I，且|V|&gt;|W|,则V中存在一个不在W中的集合z，使W并{z}属于I。 I中的集合叫做矩阵胚的独立子集。上面三个定义保证了独立子集具有如下属性：<br />　　1.独立子集至少有一个（空集）<br />　　2.独立子集是&#8220;遗传&#8221;的。<br />　　3.只要一个独立子集不是最大（元素最多）的，我们总可以把它变得更大。<br />　　定义：把S中的元素加非负的权，我们可以得到一个加权矩阵胚。<br />　　定理1：贪心的扩展加权矩阵胚可以得到最优子集。<br />　　证明：设贪心法得到的独立子集是B，最优独立子集为T(如果有多个T，选择使B交T最大的那个)，那么：<br />　　i)如果B=T,则成功<br />　　ii)否则，设x为不在T中的第一个被贪心法选择的元素，则T并x为非独立集（否则与T最大矛盾）。<br />　　设C为T并x的子集中的最小的非独立集，则x属于C(否则C就为T的子集，与属性2矛盾)。这样，我们取C<br />　　中任意不属于B的元素y，又条件3，C-{y}为独立集。<br />　　下面，我们从C-{y}出发构造一个最优独立子集T_1，使B交T_1比B交T更大。<br />　　对于C-{y}，我们把T中不属于其中的元素依次加到里面（根据属性3），则最后我们得到一个T_1,<br />　　其中T_1=T-{y}+{x}。<br />　　下面，我们来说明w(x)=w(y)。<br />　　1.T是最优的，因此w(T_1)&lt;=w(T),即w(x)&lt;=w(y)<br />　　2.假设贪心算法选择x之前选择过的元素集合为X,那么：X为T的子集，且X并{y}也是T的子集。那么，在<br />　　选择x的时候，y也是可以选的。但是贪心算法选择的是x,必有w(x)&gt;=w(y),故w(x)=w(y)<br />　　这样，T_1也是最优独立子集，但是T_1比T多一个在B中的元素x,与T的选择矛盾。故贪心法能够选择最优<br />　　独立子集。<br />　　定理2：如果F关于子集运算是封闭的，而对于任何权函数(F,w),贪心法都适用，则F为某个矩阵胚的<br />　　独立子集族。<br />　　这里略去定理的证明，想知道证明的朋友可以来信问我。<br />　　两个常用的独立子集的例子是：<br />　　1.有限个n维向量集合中个线性无关的向量 。<br />　　2.某个图中没有圈的边集。<br />　　根据定理一，我们如果可以把问题归结成在加权矩阵胚中求最优独立子集的问题（需要验证问题的结构满足矩阵胚<br />　　的三个定义），我们就可以采用贪心法。也就是每次选取权值最优的元素加到独立子集中，最后得到的最大独立子<br />　　集必然是最优的。</div><img src ="http://www.cppblog.com/ArcTan/aggbug/169719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-03-31 22:55 <a href="http://www.cppblog.com/ArcTan/articles/169719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>贝蒂定理</title><link>http://www.cppblog.com/ArcTan/articles/169718.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 31 Mar 2012 14:55:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/169718.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/169718.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/169718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/169718.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/169718.html</trackback:ping><description><![CDATA[<div>贝蒂定理<br />&nbsp;&nbsp; &nbsp;英文翻译为 Betti theorem<br />&nbsp;&nbsp; &nbsp;设a、b是正无理数且 1/a +1/b =1。记P={ [na] | n为任意的正整数}，Q={ [nb] | n 为任意的正整数}，([x]'指的是取x的整数部分)则P与Q是Z+的一个划分，即P&#8745;Q为空集且P&#8746;Q为正整数集合Z+。<br />&nbsp;&nbsp; &nbsp;证明：因为a、b为正且1/a +1/b=1，则a、b&gt;1，所以对于不同的整数n，[na]各不相同，类似对b有相同的结果。因此任一个整数至多在集合P或Q中出现一次。<br />&nbsp;&nbsp; &nbsp;* 现证明P&#8745;Q为空集；(反证法)假设k为P&#8745;Q的一个整数，则存在正整数m、n使得[ma]=[nb]=k。即k &lt; ma、nb&lt;k+1，等价地改写不等式为<br />&nbsp;&nbsp; &nbsp;* m/(k+1)&lt; 1/a &lt; m/k及n/(k+1)&lt; 1/b &lt; n/k。相加起来得 (m+n)/(k+1) &lt; 1 &lt; (m+n)/k，即 k &lt; m+n &lt; k+1。这与m、n为整数有矛盾，所以P&#8745;Q为空集。 现证明Z+=P&#8746;Q；已知P&#8746;Q是Z+的子集，剩下来只要证明Z+是P&#8746;Q的子集。(反证法)假设Z+\(P&#8746;Q)有一个元素k，则存在正整数m、n使得[ma]&lt; k &lt;[(m+1)a]、[nb]&lt; k &lt;[(n+1)b]。 由此得ma &lt; k &#8806;[ (m+1)a]-1&lt;(m+1)a -1，类似地有nb &lt; k &#8806;[ (n+1)b]-1&lt;(n+1)b -1。等价地改写为 m/k &lt; 1/a &lt; (m+1)/(k+1)及n/k &lt; 1/b &lt; (n+1)/(k+1)。两式加起来，得<br />&nbsp;&nbsp; &nbsp;(m+n)/k &lt; 1 &lt; (m+n+2)/(k+1)，即m+n &lt; k &lt; k+1 &lt; m+n+2。这与m, n, k皆为正整数矛盾。所以Z+=P&#8746;Q。<br />&nbsp;&nbsp;&nbsp;</div><img src ="http://www.cppblog.com/ArcTan/aggbug/169718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-03-31 22:55 <a href="http://www.cppblog.com/ArcTan/articles/169718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对于0-1分数规划的Dinkelbach算法的分析</title><link>http://www.cppblog.com/ArcTan/articles/169717.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 31 Mar 2012 14:54:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/169717.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/169717.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/169717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/169717.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/169717.html</trackback:ping><description><![CDATA[<div>对于0-1分数规划的Dinkelbach算法的分析<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 武钢三中 吴豪[译]<br />摘要:<br />0-1分数规划问题是指求出解集{xi|xi=0或1}使目标(c1x1+c2x2+...+cnxn) /(d1x1+d2x2+&#8230;+dnxn)=cx/dx达到最大。对于分数规划问题，Dinkelbach提出了一个算法，它通过解决一个子问题Q(L)来得到原文题的解。这里Q是一个线性的最小化目标函数cx-Ldx，且满足x等于0或1。在本文中，我们证明了Dinkelbach算法在最坏情况下可以在O(log(nM))的时间内解决子问题，这里M=max{max|ci|,max|di|,1}。<br />1．0-1分数规划问题<br /><br />要使两个线性函数的比值最大或最小的问题，我们称作分数规划问题或双曲线问题。分数规划问题在许多领域都可以找到[22]。它在经济学中的应用有些常见的例子，如寻找最优收入比率或者在效益约束下的最佳物资调配问题。另外，系统效率也常常用比率来衡量，如收益/时间、利润/风险和消费/时间。有大量的文章对这类问题做了分析[3，5，12，20，24]。<br /><br /><br />有几类分数规划问题已被广泛地研究。如0-1分数规划问题[1],它包含最优比率生成树问题[4]，最优比率环问题[8，6，19]，分数背包问题[15]，以及分数剪枝问题[10]。在本文中，我们研究0-1分数规划问题，它的描述如下：<br /><br /><br />令c=(c1,c2,&#8230;,cn)和d=(d1,d2,&#8230;,dn)为n维整数向量，那么一个0-1分数规划问题用公式描述如下:<br /><br />FP: 最小化<br />(c1x1+&#8230;cnxn)/(d1x1&#8230;dnxn)=cx/dx<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xi&#8712;{0,1}<br />这里x表示列向量(x1,x2,&#8230;,xn)T .0-1值向量的子集&#937;称作可行域，而x则是&#937;的一个元素，我们称x为可行解。贯穿全文，我们假定对于任意可行解x,dx都是正数。这里我们记C=max{max|ci|,1},D=max{max|di|,1}。那么，显然问题的最优解在区间[-nC,nC]内。<br />对于分数规划问题，有许多算法都能利用下面的线性目标函数解决问题。<br /><br />Q(L): 最小化 cx-Ldx<br /><br />xi&#8712;{0,1}<br />记z(L)为Q(L)的最值。令x*为分数规划的最优解，并且令L*=(cx*)/(dx*)(注：分数规划的最值)。那么下面就容易知道了：<br /><br />z(L) &gt; 0<br />当且仅当<br />L&lt;L*<br /><br />z(L) = 0<br />当且仅当<br />L=L*<br /><br />z(L) &lt; 0<br />当且仅当<br />L&gt;L*<br /><br />此外，Q(L*)的最优解也能使分数规划最优化[7,16,17]。因此，解决分数规划问题在本质上等同于寻找L=L*使z(L)=0。出于这个目的，关于L的函数z(L)具有很多不错的性质：分段线性，凹函数，严格递减，z(-nC)&lt;0，且z(nC)&gt;0。根据上面的性质，显然当我们确定参量L，我们可以检验最值L*是否大于小于或等于当前的L。<br />有一些方法能够产生一系列收敛于L*的参量。其中一种借助于二分搜索[17,21,13]。在两个不同的可行解的目标值不相同的情况下，他们的差距将大于等于1/(nD)^2。这暗示我们，当我们采用二分搜索时，最优值L*可以通过解决子问题Q(L)在最多O(log(2nC/(1/nD)^2))&lt;=O(log(nCD))的时间内得到。<br />在1979年，Megiddo[18]提出了一个巧妙的方法来系统地产生参量序列。他证明了如果子问题Q(L)能够通过O(p(n))的比较和O(q(n))的累加被解决，那么分数规划问题就能用O(p(n)+q(n))的时间被解决。<br />另一种方法理论上类似于牛顿迭代法，他被Isbell、Marlow[14]和Dinkelbach[7]提出（也被称作Dinkelbach算法）。这个算法在[17,21,11]中被讨论（也可能是其他文献）。下一节将对它进行正式的论述。Schaible[21]证明了对于非线性分数规划问题，二分搜索的方法的收敛速度仅仅是线性的，而Dinkelbach的收敛速度却是超线性的。另外，据说Dinkelbach算法在实际应用中强力而有效（参见[13,23]的例子）。然而，Dinkelbach算法对于0-1分数规划问题的最坏时间复杂度却没有被证明。在本文中，我们证明了,Dinkelbach算法最多会在O(log(nCD))的时间内解决子问题。注意它的时间复杂度与普通的二分搜索相同。我们的结论暗示了，如果对于子问题Q(L)存在多项式算法，Dinkelbach算法也能够在多项式时间内解决分数规划问题。另外，即使子问题Q(L)是NP-完全或NP-难的，对于特殊的分数规划我们也能够在多项式时间内出解。<br /><br />2．Dinkelbach算法的论述<br />它本质上是观察直线<br /><br />z=cx&#8217;-Ldx&#8217;<br />于函数z(L)在L=L&#8217;处相切，这里x&#8217;是子问题Q(L&#8217;)的最优解。因此，-dx&#8217;是z(L)在L&#8217;处的斜率。而且很容易看出上面的直线与L轴相交与L=cx&#8217;/dx&#8217;.<br />现在我们来描述Dinkelbach对于分数规划的算法。Dinkelbach算法产生了收敛于L*的参量序列，如图1中细线所示的方式。<br /><br />Dinkelbach算法：<br />步骤1：设L=L1,使 L*&lt;=L1&lt;=nC<br />步骤2：解决子问题Q(L)并得到最优解x<br />步骤3：如果z(L)=0，那么输出x并终止。否则，设L=cx/dx跳到步骤2<br /><br />为了初始化L1,将用到nC，因此充分挖掘拓展问题的结构将能做出更好的选择。<br /><br />&nbsp;<br />0/1规划问题就相当于一个求极值问题，将要求解得数看成一个未知数，然后根据二分查找求得这个未知数的最值。<br /><br /><br /><br />#include&lt;iostream&gt;<br />#include&lt;cmath&gt;<br />#include&lt;algorithm&gt;<br />using namespace std;<br />int n,k,a[1110],b[1110];<br />double low,higth,mid;<br />double s[1005],sum;<br />int cmp(double x,double y)<br />{<br />&nbsp;return x&gt;y;<br />}<br />int main()<br />{<br />&nbsp;//freopen("in.txt","r",stdin);<br />&nbsp;int i;<br />&nbsp;while(cin&gt;&gt;n&gt;&gt;k)<br />&nbsp;{<br />&nbsp; if(k == 0 &amp;&amp; n == 0)<br />&nbsp;&nbsp; break;<br />&nbsp; for(i=1;i&lt;=n;i++)<br />&nbsp;&nbsp; cin&gt;&gt;a[i];<br />&nbsp; for(i=1;i&lt;=n;i++)<br />&nbsp;&nbsp; cin&gt;&gt;b[i];<br />&nbsp; low = 0.0;<br />&nbsp; higth = 100.0;<br />&nbsp; while(higth - low &gt;= 0.001)<br />&nbsp; {<br />&nbsp;&nbsp; mid = (higth+low)/2;<br />&nbsp;&nbsp; for(i=1;i&lt;=n;i++)<br />&nbsp;&nbsp;&nbsp; s[i] = a[i]*100.0-1.0*b[i]*mid;<br />&nbsp;&nbsp; sort(s+1,s+n+1,cmp);<br />&nbsp;&nbsp; sum = 0;<br />&nbsp;&nbsp; for(i=1;i&lt;=n-k;i++)<br />&nbsp;&nbsp;&nbsp; sum += s[i];<br />&nbsp;&nbsp; if(sum&gt;=0)<br />&nbsp;&nbsp;&nbsp; low = mid;<br />&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp; higth = mid;<br />&nbsp; }<br />&nbsp; cout&lt;&lt;(int)(low+0.5)&lt;&lt;endl;<br />&nbsp;}<br />&nbsp;return 0;<br />}<br /></div><img src ="http://www.cppblog.com/ArcTan/aggbug/169717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-03-31 22:54 <a href="http://www.cppblog.com/ArcTan/articles/169717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>zoj题目分类</title><link>http://www.cppblog.com/ArcTan/articles/169716.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 31 Mar 2012 14:53:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/169716.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/169716.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/169716.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/169716.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/169716.html</trackback:ping><description><![CDATA[<div>ZOJ题目分类 <br /><br />初学者题： <br /><br />1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 <br />1334 1337 1338 1350 1365 1382 1383 1394 1402 1405 1414 1494 1514 1622 1715 1730 1755 <br />1760 1763 1796 1813 1879 1889 1904 1915 1949 2001 2022 2099 2104 2108 2172 2176 2201 <br />2208 2321 2345 2351 2376 2388 2405 2417 2433 <br /><br />模拟问题： <br /><br />1006 1009 1012 1016 1019 1023 1026 1028 1038 1042 1045 1051 1056 1057 1058 1061 1065 <br />1066 1068 1072 1073 1078 1087 1088 1097 1098 1099 1103 1111 1121 1124 1126 1128 1133 <br />1138 1146 1152 1154 1160 1175 1178 1187 1194 1207 1222 1224 1244 1259 1267 1274 1275 <br />1277 1278 1279 1281 1282 1294 1295 1300 1308 1317 1324 1339 1351 1362 1392 1393 1397 <br />1398 1399 1400 1402 1432 1434 1444 1452 1475 1487 1493 1497 1517 1526 1527 1530 1531 <br />1552 1569 1573 1592 1601 1610 1623 1631 1641 1652 1657 1659 1682 1692 1700 1702 1707 <br />1708 1712 1728 1732 1737 1746 1747 1750 1752 1754 1758 1764 1768 1774 1797 1799 1804 <br />1807 1811 1822 1824 1831 1834 1837 1838 1842 1844 1845 1854 1858 1862 1870 1881 1884 <br />1889 1896 1906 1921 1951 1969 1978 2000 2022 2040 2046 2047 2051 2072 2084 2101 2112 <br />2131 2133 2138 2148 2153 2156 2160 2164 2172 2178 2184 2185 2187 2189 2193 2196 2201 <br />2204 2208 2211 2212 2220 2229 2233 2239 2240 2261 2262 2269 2277 2288 2301 2309 2311 <br />2312 2316 2320 2321 2322 2328 2330 2350 2389 2405 2410 2414 2420 2421 2483 2508 2560 <br />2569 2572 2593 2613 2617 2680 2681 2731 2732 2743 <br /><br />动态规划： <br /><br />1013 1022 1025 1027 1074 1076 1093 1094 1100 1107 1108 1136 1149 1183 1196 1200 1206 <br />1227 1234 1245 1249 1250 1276 1303 1346 1353 1366 1368 1387 1424 1425 1428 1446 1448 <br />1449 1454 1459 1462 1463 1470 1474 1475 1483 1484 1490 1499 1503 1512 1515 1520 1524 <br />1539 1540 1554 1563 1567 1579 1602 1607 1611 1629 1638 1642 1651 1666 1695 1713 1717 <br />1731 1733 1736 1738 1743 1756 1757 1787 1792 1800 1819 1853 1864 1877 1880 1893 1913 <br />1918 1925 1953 1985 1986 1988 1991 1995 2002 2014 2025 2042 2058 2059 2067 2068 2069 <br />2081 2096 2127 2136 2142 2144 2156 2180 2189 2202 2206 2213 2224 2227 2242 2244 2254 <br />2255 2264 2271 2278 2280 2281 2283 2284 2297 2319 2337 2338 2341 2349 2353 2354 2366 <br />2372 2374 2397 2401 2402 2414 2422 2424 2432 2498 2501 2521 2522 2527 2536 2547 2561 <br />2563 2565 2568 2581 2591 2598 2604 2621 2624 2625 2626 2641 2642 2667 2673 2683 2685 <br />2692 2702 2710 2711 2734 2739 2744 2745 <br /><br />字符串处理问题： <br /><br />1002 1004 1005 1008 1016 1019 1046 1048 1049 1050 1051 1052 1053 1054 1055 1056 1061 <br />1063 1086 1089 1091 1094 1099 1101 1103 1111 1115 1117 1118 1120 1123 1125 1126 1129 <br />1130 1136 1139 1143 1150 1151 1152 1154 1159 1160 1168 1170 1177 1178 1179 1180 1181 <br />1184 1188 1189 1190 1191 1192 1195 1197 1243 1295 1315 1325 1392 1582 1698 1707 1720 <br />1729 1808 1831 1854 1858 1905 1963 1969 1970 1984 <br /><br />搜索问题： <br /><br />1002 1003 1008 1031 1038 1039 1041 1060 1063 1069 1080 1083 1088 1089 1103 1144 1155 <br />1190 1204 1217 1229 1249 1297 1301 1344 1355 1361 1412 1415 1435 1443 1457 1479 1505 <br />1518 1530 1593 1649 1671 1675 1686 1709 1711 1719 1742 1832 1909 1935 1940 1977 1984 <br />2031 2033 2043 2053 2093 2103 2110 2128 2165 2233 2241 2252 2276 2288 2355 2372 2374 <br /><br /><br />2412 2416 2418 2437 2440 2442 2466 2471 2475 2477 2509 2515 2531 2534 2580 2588 2594 <br />2631 2633 2688 <br /><br />数论问题： <br /><br />1007 1028 1088 1113 1133 1160 1222 1278 1284 1312 1314 1385 1489 1526 1530 1569 1577 <br />1596 1601 1652 1657 1712 1797 1842 1889 1906 1951 2000 2022 2028 2060 2095 2105 2156 <br />2189 2212 2233 2277 2288 2305 2316 2320 2330 2360 2371 2400 2410 2414 <br /><br />几何问题： <br /><br />1010 1032 1037 1041 1081 1090 1104 1123 1139 1165 1199 1426 1439 1460 1472 1597 1608 <br />1648 1683 1910 2015 2102 2107 2157 2228 2234 2318 2335 2347 2352 2361 2370 2375 2394 <br />2403 <br /><br />树型结构问题： <br /><br />1011 1038 1043 1062 1141 1159 1167 1203 1319 1335 1387 1406 1481 1511 1542 1586 1610 <br />1635 1674 1700 1752 1788 1805 1809 1900 1944 1955 1959 1965 1990 2243 2425 <br /><br />图表问题： <br /><br />1015 1030 1082 1084 1085 1105 1119 1127 1130 1140 1203 1311 1377 1420 1453 1465 1492 <br />1589 1798 1802 1919 1935 2016 2236 2238 2281 2326 <br /><br />匹配问题： <br /><br />1002 1059 1077 1137 1140 1157 1197 1231 1364 1516 1525 1576 1626 1654 1882 2067 2192 <br />2221 2223 2333 2362 2404 <br /></div><img src ="http://www.cppblog.com/ArcTan/aggbug/169716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-03-31 22:53 <a href="http://www.cppblog.com/ArcTan/articles/169716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hdu题目分类</title><link>http://www.cppblog.com/ArcTan/articles/169715.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 31 Mar 2012 14:52:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/169715.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/169715.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/169715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/169715.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/169715.html</trackback:ping><description><![CDATA[<div>模拟题, 枚举<br />1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 1202 1205 1209 1212(大数取模) 1216（链表）1218 1219 1225 1228 1229 1230 1234 1235 1236 1237 1239 1250<br />1256 1259 1262 1263 1265 1266 1276 1279 1282 1283 1287 1296 1302 1303 1304 1305 1306 1309 1311 1314<br />复杂模拟<br /><br />搜索，递归求解<br />1010 1016 1026 1043(双广) 1044 (BFS+DFS) 1045 1067 1072 1104 1175 1180 1195 1208 1226 1238 1240 1241 1242 1258 1271 1312 1317<br />博奕<br />1079<br /><br />动态规划<br />1003 1024 1025 1028 1051 1058 1059 1069 1074 1078 1080 1081 1085 1087 1114 1158 1159 1160 1171 1176 1181 1203 1224 1227 1231 1244 1248 1253 1254 1283 1300<br /><br />数学，递推，规律<br />1005 1006 1012 1014 1018 1019 1021 1023 1027 1030 1032 1038 1041 1046 1059 1060 1061 1065 1066 1071(微积分) 1097 1098 1099 1100 1108 1110 1112 1124 1130 1131 1132 1134 1141 1143 1152 1155(物理题) 1163 1165 1178 1194 1196(lowbit) 1210 1214 1200 1221 1223 1249 1261 1267 1273 1290 1291 1292 1294 1297 1313 1316<br />数论 <br />1164 1211 1215 1222 1286 1299<br /><br />计算几何<br />1086 1115 1147 <br />贪心<br />1009 1052 1055 1257<br /><br />并查集<br />1198 1213 1232 1272 <br />线段树,离散化<br />1199 1255 <br />图论<br />最短路相关的问题 1142 1162 1217 1301 <br />二分图问题 1054 1068 1150 1151 1281<br />其他<br />1053 (huffman) 1102(MST) 1116（欧拉回路） 1233(MST) 1269（强连通）<br />数据结构<br />1103（堆+模拟）1166（数状树组）1247 1251 1285（Topol） 1298<br />汉诺塔系列<br />1207 <br />最近顶点对 1007<br /><br /><br />1500 DP<br />1501 DP<br />1502 DP or 记忆化<br />1503 DP<br />1504 模拟<br />1505 DP<br />1506 DP<br />1507 2分匹配<br />1508 记忆化容易点<br />1509 模拟<br />1510 DP<br />1511 搜索可以过<br />1512 左偏树<br />1513 DP<br />1514 DP<br />1515 DFS<br />1516 DP<br />1517 博奕<br />1518 搜索<br />1519 DP（不确定）<br />1520 树状DP<br />1521 数学题，母函数什么的。其实都可以过<br />1522 稳定婚姻<br />1523 DP<br />1524 博弈<br />1525 博弈<br />1526 Maxflow<br />1527 博弈<br />1528 2分匹配<br />1529 简单题<br />1530 最大团<br />1531 差分约束<br />1532 Maxflow 入门题<br />1533 KM Or 最小费用流<br />1534 差分约束<br />1535 差分约束<br />1536 博弈<br />1537 模拟 加置换群的理论 CODE可以短些，其实没必要。。。<br />1538 很有意思的题目。据说是Microsoft亚洲总裁面试的题目<br />1539 搜索<br />1540 线段树<br />1541 树状数组<br />1542 离散，线段树<br />1543 线段树<br />1544 简单的<br />1545 DP http://acm.hdu.edu.cn/forum/htm_data/18/0608/2050.html<br />1546 搜索<br />1547 模拟<br />1548 模拟 <br />1551 2分答案<br />1553 <br />1554<br />1555 简单<br />1556 技巧。数学<br />1557 搜索<br />1558 并查 + 线段判交<br />1559 DP<br />1560 减支 + 搜索<br />1561 树状DP<br />1562 暴力 between 1000 and 9999<br />1563 简单<br />1564 博弈。<br />1565 状态DP<br />1566 数学<br />1567 模拟<br />1568 大数<br />1569 最小割<br />1570 数学<br />1571 最段路<br />1572 搜索<br />1573 数学<br />1574 DP<br />1575 2分<br />1576 数论<br />1577 模拟，处理精度<br />1579 记忆化<br />1580 DP<br />1582 搜索 <br />1583 模拟<br />1584 搜索<br />1585 <br />1586<br />1587 简单题目<br />1591 模拟<br />1592 简单<br />1593 数学<br />1594 数学<br />1595 图论<br />1596 图论<br />1597 图论<br />1598 图论<br />1599 图论<br /><br /><br /><br /><br /><br />基础题：1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、1194、1196、1197、1201、1202、1205、1219、1234、1235、1236、1248、1266、1279、1282、1283、1302、1303、1323、1326、1330、1334、1335、1339、1390、1391、1393、1395、1397、1405、1406、1407、1408、1412、1418、1420、1465、1491、1555、1562、1563、1570、1587、1673、1678、1708、1718、1720、1785、1799、1859、1862、1877、1898、1976、1977、1985、1994、2000、2001、2002、2003、2004、2005、2006、2007、2008、2009、2010、2011、2012、2013、2014、2015、2016、2017、2018、2019、2020、2021、2022、2023、2024、2025、2026、2027、2028、2029、2030、2031、2032、2033、2034、2035、2039、2040、2042、2043、2048、2049、2051、2053、2055、2056、2057、2060、2061、2071、2073、2075、2076、2078、2081、2083、2088、2090、2092、2093、2095、2096、2097、2098、2099、2101、2103、2106、2107、2109、2113、2114、2115、2123、2131、2132、2133、2135、2136、2137、2138、2139、2143、2148、2153、2156、2161、2162、2164、2178、2186、2192、2200、2201、2212、2304、2309、2317、2401、2500、2502、2503、2504、2519、2520、2521、2523、2524、2535、2537、2539、2547、2548、2549、2550、2551、2552、2555、2560、2561、2562、2566、2567、2568、2700、2710、<br /><br /><br />DP：1003、1024、1029、1069、1074、1087、1114、1159、1160、1171、1176、1203、1231、1257、1260、1284、1421、1789、1978、2059、2084、2159、2191、2544、2571、2602、2709、<br /><br />搜索：1010、1015、1016、1026、1072、1075、1175、1180、1181、1238、1239、1240、1241、1242、1253、1254、1312、1372、1548、1597、1671、1677、1728、1800、1983、2102、2141、2553、2563、2605、2612、2614、1616、2717<br /><br />贪心：1009、1045、1049、1050、1051、1052、1257、1800、2037、2111、2124、2187、2391、2570<br /><br />数学题：1018、1065、1071、1115、1141、1162、1212、1220、1492、1593、1701、1722、1798、1840、1999、2036、2080、2086、2089、2105、2108、2134、2303、2393、2438、2529、2547、2548、2552、2554、2601、2603、2701、<br /><br />递推：1133、1143、1207、1249、1267、1284、1290、1297、1396、1992、1995、1996、2013、2014、2044、2045、2046、2047、2050、2064、2065、2067、2068、2070、2077、2085、2151、2154、2160、2190、2501、2512、2563、2569、2709、2716、<br /><br />字符串：1020、1039、1043、1062、1073、1075、1088、1113、1161、1200、1251、1256、1288、1321、1328、1379、1804、1860、1982、1984、2017、2024、2025、2026、2027、2043、2052、2054、2072、2074、2087、2131、2137、2140、2163、2203、2206、2352、2500、2549、2564、2565、2567、2572、2609、2607、2707、2708、2719、2721、2723、<br /><br />大数：1002、1042、1133、1250、1297、1715、1753、1865、2100、<br /><br />胡搞：1022、1027、1030、1035、1128、1165、1209、1210、1215、1222、1228、1229、1230、1237、1259、1276、1286、1337、1342、1361、1370、1506、1577、1597、1702、1716、1727、1868、1870、1896、1981、1986、1987、1988、1997、1998、1999、2058、2062、2089、2090、2094、2104、2116、2117、2135、2175、2183、2184、2197、2303、2368、2370、2374、2511、2522、2527、2600、2615、2703、2711、2714、2715、2725、<br /><br />博弈：1077、1404、1517、1524、1525、1527、1536、1564、1729、1730、1846、1847、1848、1849、1850、2147、2149、2176、2177、2188<br /><br />母函数：1085、1171、1398、2079、2082、2110、2152、2189、2566、<br /><br />hash：1264、1280、1425、1496、1800、2522、2600、<br /><br /></div><img src ="http://www.cppblog.com/ArcTan/aggbug/169715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-03-31 22:52 <a href="http://www.cppblog.com/ArcTan/articles/169715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj题目分类</title><link>http://www.cppblog.com/ArcTan/articles/169714.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 31 Mar 2012 14:52:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/169714.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/169714.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/169714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/169714.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/169714.html</trackback:ping><description><![CDATA[<div>pku题目分类 <br /><br />麻烦题： <br /><br />1697, 1712, 1713, 1720, 1729, 1765, 1772, 1858, 1872, 1960, 1963, 2050, 2122, 2162, 2219, <br />2237, <br /><br />简单题目： <br /><br />1000, 1003, 1004, 1005, 1007, 1046, 1207, 1226, 1401, 1504, 1552, 1607, 1657, 1658, 1674, 1799, <br />1862, 1906, 1922, 1929, 1931, 1969, 1976, 2000, 2005, 2017, 2027, 2070, 2101, 2105, 2109, 2116, <br />2136, 2160, 2190, 2232, 2234, 2275, 2301, 2350, 2363, 2389, 2393, 2413, 2419, <br /><br />推荐： <br /><br />1063, 1064, 1131, 1140, 1715, 2163, <br /><br />杂题： <br /><br />1014, 1218, 1316, 1455, 1517, 1547, 1580, 1604, 1663, 1678, 1749, 1804, 2013, 2014, 2056, 2059, <br />2100, 2188, 2189, 2218, 2229, 2249, 2290, 2302, 2304, 2309, 2313, 2316, 2323, 2326, 2368, 2369, <br />2371, 2402, 2405, 2407, <br /><br />推荐： <br /><br />1146, 1147, 1148, 1171, 1389, 1433, 1468, 1519, 1631, 1646, 1672, 1681, 1700, 1701, 1705, 1728, <br />1735, 1736, 1752, 1754, 1755, 1769, 1781, 1787, 1796, 1797, 1833, 1844, 1882, 1933, 1941, 1978, <br />2128, 2166, 2328, 2383, 2420, <br /><br />高精度： <br /><br />1001, 1220, 1405, 1503, <br /><br />排序： <br /><br />1002, 1318, 1877, 1928, 1971, 1974, 1990, 2001, 2002, 2092, 2379, 2388, 2418, <br /><br />推荐： <br /><br />1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 2377, 2380, <br /><br /><br />搜索 <br /><br />容易： <br /><br />1128, 1166, 1176, 1231, 1256, 1270, 1321, 1543, 1606, 1664, 1731, 1742, 1745, 1847, 1915, 1950, <br />2038, 2157, 2182, 2183, 2381, 2386, 2426, <br /><br />不易： <br /><br />1024, 1054, 1117, 1167, 1708, 1746, 1775, 1878, 1903, 1966, 2046, 2197, 2349, <br /><br />推荐： <br /><br />1011, 1190, 1191, 1416, 1579, 1632, 1639, 1659, 1680, 1683, 1691, 1709, 1714, 1753, 1771, 1826, <br />1855, 1856, 1890, 1924, 1935, 1948, 1979, 1980, 2170, 2288, 2331, 2339, 2340, <br /><br />数据结构 <br /><br />容易： <br /><br />1182, 1656, 2021, 2023, 2051, 2153, 2227, 2236, 2247, 2352, 2395, <br /><br />不易： <br /><br />1145, 1177, 1195, 1227, 1661, 1834, <br /><br />推荐： <br /><br />1330, 1338, 1451, 1470, 1634, 1689, 1693, 1703, 1724, 1988, 2004, 2010, 2119, 2274, <br /><br />动态规划 <br /><br />容易： <br /><br />1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322, 1414, 1456, <br />1458, 1609, 1644, 1664, 1690, 1699, 1740, 1742, 1887, 1926, 1936, 1952, 1953, 1958, 1959, 1962, <br />1975, 1989, 2018, 2029, 2033, 2063, 2081, 2082, 2181, 2184, 2192, 2231, 2279, 2329, 2336, 2346, <br />2353, 2355, 2356, 2385, 2392, 2424, <br /><br />不易： <br /><br />1019, 1037, 1080, 1112, 1141, 1170, 1192, 1239, 1655, 1695, 1707, 1733, 1737, 1837, 1850, 1920, <br />1934, 1937, 1964, 2039, 2138, 2151, 2161, 2178, <br /><br />推荐： <br /><br />1015, 1635, 1636, 1671, 1682, 1692, 1704, 1717, 1722, 1726, 1732, 1770, 1821, 1853, 1949, 2019, <br />2127, 2176, 2228, 2287, 2342, 2374, 2378, 2384, 2411, <br /><br />字符串： <br /><br />1488, 1598, 1686, 1706, 1747, 1748, 1750, 1760, 1782, 1790, 1866, 1888, 1896, 1951, 2003, 2121, <br />2141, 2145, 2159, 2337, 2359, 2372, 2406, 2408, <br /><br />贪心： <br /><br />1042, 1065, 1230, 1323, 1477, 1716, 1784, <br /><br />图论 <br /><br />容易： <br /><br />1161, 1164, 1258, 1175, 1308, 1364, 1776, 1789, 1861, 1939, 1940, 1943, 2075, 2139, 2387, 2394, <br />2421, <br /><br />不易： <br /><br />1041, 1062, 1158, 1172, 1201, 1275, 1718, 1734, 1751, 1904, 1932, 2173, 2175, 2296, <br /><br />网络流： <br /><br />1087, 1273, 1698, 1815, 2195, <br /><br />匹配： <br /><br />1274, 1422, 1469, 1719, 2060, 2239, <br /><br />Euler： <br /><br /><br />1237, 1637, 1394, 2230, <br /><br />推荐： <br /><br />2049, 2186, <br /><br />计算几何 <br /><br />容易： <br /><br />1319, 1654, 1673, 1675, 1836, 2074, 2137, 2318, <br /><br />不易： <br /><br />1685, 1687, 1696, 1873, 1901, 2172, 2333, <br /><br />凸包： <br /><br />1113, 1228, 1794, 2007, 2187, <br /><br />模拟 <br /><br />容易： <br /><br />1006, 1008, 1013, 1016, 1017, 1169, 1298, 1326, 1350, 1363, 1676, 1786, 1791, 1835, 1970, 2317, <br />2325, 2390, <br /><br />不易： <br /><br />1012, 1082, 1099, 1114, 1642, 1677, 1684, 1886, <br /><br />数学 <br /><br />容易： <br /><br />1061, 1091, 1142, 1289, 1305, 1306, 1320, 1565, 1665, 1666, 1730, 1894, 1914, 2006, 2042, 2142, <br />2158, 2174, 2262, 2305, 2321, 2348, <br /><br />不易： <br /><br />1067, 1183, 1430, 1759, 1868, 1942, 2167, 2171, 2327, <br /><br />推荐： <br /><br />1423, 1450, 1640, 1702, 1710, 1721, 1761, 1830, 1930, 2140,</div><img src ="http://www.cppblog.com/ArcTan/aggbug/169714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-03-31 22:52 <a href="http://www.cppblog.com/ArcTan/articles/169714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj练习题目</title><link>http://www.cppblog.com/ArcTan/articles/169712.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 31 Mar 2012 14:51:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/169712.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/169712.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/169712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/169712.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/169712.html</trackback:ping><description><![CDATA[<div>初期:<br />一.基本算法:<br />(1)枚举. (poj1753,poj2965)<br />(2)贪心(poj1328,poj2109,poj2586)<br />(3)递归和分治法.<br />(4)递推.<br />(5)构造法.(poj3295)<br />(6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)<br /><br />二.图算法:<br />(1)图的深度优先遍历和广度优先遍历.<br />(2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra)<br />(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)<br />(3)最小生成树算法(prim,kruskal)<br />(poj1789,poj2485,poj1258,poj3026)<br />(4)拓扑排序 (poj1094)<br />(5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020)<br />(6)最大流的增广路算法(KM算法). (poj1459,poj3436)<br />三.数据结构.<br />(1)串 (poj1035,poj3080,poj1936)<br />(2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299)<br />(3)简单并查集的应用.<br />(4)哈希表和二分查找等高效查找法(数的Hash,串的Hash)<br />(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)<br />(5)哈夫曼树(poj3253)<br />(6)堆<br />(7)trie树(静态建树、动态建树) (poj2513)<br />四.简单搜索<br />(1)深度优先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)<br />(2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414)<br />(3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)<br /><br /><br /><br />五.动态规划<br />(1)背包问题. (poj1837,poj1276)<br />(2)型如下表的简单DP(可参考lrj的书 page149):<br />1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)<br />2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列)<br />(poj3176,poj1080,poj1159)<br />3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)<br />六.数学<br />(1)组合数学:<br />1.加法原理和乘法原理.<br />2.排列组合.<br />3.递推关系.<br />(POJ3252,poj1850,poj1019,poj1942)<br />(2)数论.<br />1.素数与整除问题<br />2.进制位.<br />3.同余模运算.<br />(poj2635, poj3292,poj1845,poj2115)<br />(3)计算方法.<br />1.二分法求解单调函数相关知识.(poj3273,poj3258,poj1905,poj3122)<br />七.计算几何学.<br />(1)几何公式.<br />(2)叉积和点积的运用(如线段相交的判定,点到线段的距离等). (poj2031,poj1039)<br />(3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交)<br />(poj1408,poj1584)<br />(4)凸包. (poj2187,poj1113)<br />中级:<br />一.基本算法:<br />(1)C++的标准模版库的应用. (poj3096,poj3007)<br />(2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706)<br />二.图算法:<br />(1)差分约束系统的建立和求解. (poj1201,poj2983)<br />(2)最小费用最大流(poj2516,poj2516,poj2195)<br />(3)双连通分量(poj2942)<br />(4)强连通分支及其缩点.(poj2186)<br />(5)图的割边和割点(poj3352)<br />(6)最小割模型、网络流规约(poj3308, )<br />三.数据结构.<br />(1)线段树. (poj2528,poj2828,poj2777,poj2886,poj2750)<br />(2)静态二叉检索树. (poj2482,poj2352)<br />(3)树状树组(poj1195,poj3321)<br />(4)RMQ. (poj3264,poj3368)<br />(5)并查集的高级应用. (poj1703,2492)<br />(6)KMP算法. (poj1961,poj2406)<br />四.搜索<br />(1)最优化剪枝和可行性剪枝<br />(2)搜索的技巧和优化 (poj3411,poj1724)<br />(3)记忆化搜索(poj3373,poj1691)<br /><br />五.动态规划<br />(1)较为复杂的动态规划(如动态规划解特别的施行商问题等)<br />(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)<br />(2)记录状态的动态规划. (POJ3254,poj2411,poj1185)<br />(3)树型动态规划(poj2057,poj1947,poj2486,poj3140)<br />六.数学<br />(1)组合数学:<br />1.容斥原理.<br />2.抽屉原理.<br />3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026).<br />4.递推关系和母函数.<br />(2)数学.<br />1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222)<br />2.概率问题. (poj3071,poj3440)<br />3.GCD、扩展的欧几里德(中国剩余定理) (poj3101)<br />(3)计算方法.<br />1.0/1分数规划. (poj2976)<br />2.三分法求解单峰(单谷)的极值.<br />3.矩阵法(poj3150,poj3422,poj3070)<br />4.迭代逼近(poj3301)<br />(4)随机化算法(poj3318,poj2454)<br />(5)杂题.<br />(poj1870,poj3296,poj3286,poj1095)<br />七.计算几何学.<br />(1)坐标离散化.<br />(2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用).<br />(poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)<br />(3)多边形的内核(半平面交)(poj3130,poj3335)<br />(4)几何工具的综合应用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)<br />高级:<br />一.基本算法要求:<br />(1)代码快速写成,精简但不失风格<br />(poj2525,poj1684,poj1421,poj1048,poj2050,poj3306)<br />(2)保证正确性和高效性. poj3434<br />二.图算法:<br />(1)度限制最小生成树和第K最短路. (poj1639)<br />(2)最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解)<br />(poj3155, poj2112,poj1966,poj3281,poj1087,poj2289,poj3216,poj2446<br />(3)最优比率生成树. (poj2728)<br />(4)最小树形图(poj3164)<br />(5)次小生成树.<br />(6)无向图、有向图的最小环<br />三.数据结构.<br />(1)trie图的建立和应用. (poj2778)<br />(2)LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法<br />(RMQ+dfs)).(poj1330)<br />(3)双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移的<br />目的). (poj2823)<br />(4)左偏树(可合并堆).<br />(5)后缀树(非常有用的数据结构,也是赛区考题的热点).<br />(poj3415,poj3294)<br />四.搜索<br />(1)较麻烦的搜索题目训练(poj1069,poj3322,poj1475,poj1924,poj2049,poj3426)<br />(2)广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广<br /><br />搜、A*算法. (poj1768,poj1184,poj1872,poj1324,poj2046,poj1482)<br />(3)深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向<br /><br />搜索或者是轮换搜索、IDA*算法. (poj3131,poj2870,poj2286)<br />五.动态规划<br />(1)需要用数据结构优化的动态规划.<br />(poj2754,poj3378,poj3017)<br />(2)四边形不等式理论.<br />(3)较难的状态DP(poj3133)<br />六.数学<br />(1)组合数学.<br />1.MoBius反演(poj2888,poj2154)<br />2.偏序关系理论.<br />(2)博奕论.<br />1.极大极小过程(poj3317,poj1085)<br />2.Nim问题.<br />七.计算几何学.<br />(1)半平面求交(poj3384,poj2540)<br />(2)可视图的建立(poj2966)<br />(3)点集最小圆覆盖.<br />(4)对踵点(poj2079)<br />八.综合题.<br />(poj3109,poj1478,poj1462,poj2729,poj2048,poj3336,poj3315,poj2148,poj1263)</div><img src ="http://www.cppblog.com/ArcTan/aggbug/169712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-03-31 22:51 <a href="http://www.cppblog.com/ArcTan/articles/169712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hdu练习题目</title><link>http://www.cppblog.com/ArcTan/articles/169713.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Sat, 31 Mar 2012 14:51:00 GMT</pubDate><guid>http://www.cppblog.com/ArcTan/articles/169713.html</guid><wfw:comment>http://www.cppblog.com/ArcTan/comments/169713.html</wfw:comment><comments>http://www.cppblog.com/ArcTan/articles/169713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ArcTan/comments/commentRss/169713.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ArcTan/services/trackbacks/169713.html</trackback:ping><description><![CDATA[<div>模拟题, 枚举<br />1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 1202 1205 1209 1212(大数取模) 1216（链表）1218 1219 1225 1228 1229 1230 1234 1235 1236 1237 1239 1250<br />1256 1259 1262 1263 1265 1266 1276 1279 1282 1283 1287 1296 1302 1303 1304 1305 1306 1309 1311 1314<br />复杂模拟<br /><br />搜索，递归求解<br />1010 1016 1026 1043(双广) 1044 (BFS+DFS) 1045 1067 1072 1104 1175 1180 1195 1208 1226 1238 1240 1241 1242 1258 1271 1312 1317<br /><br />博奕<br />1079<br /><br />动态规划<br />1003 1024 1025 1028 1051 1058 1059 1069 1074 1078 1080 1081 1085 1087 1114 1158 1159 1160 1171 1176 1181 1203 1224 1227 1231 1244 1248 1253 1254 1283 1300<br /><br />数学，递推，规律<br />1005 1006 1012 1014 1018 1019 1021 1023 1027 1030 1032 1038 1041 1046 1059 1060 1061 1065 1066 1071(微积分) 1097 1098 1099 1100 1108 1110 1112 1124 1130 1131 1132 1134 1141 1143 1152 1155(物理题) 1163 1165 1178 1194 1196(lowbit) 1210 1214 1200 1221 1223 1249 1261 1267 1273 1290 1291 1292 1294 1297 1313 1316<br />数论 <br />1164 1211 1215 1222 1286 1299<br /><br />计算几何<br />1086 1115 1147 <br />贪心<br />1009 1052 1055 1257<br /><br />并查集<br />1198 1213 1232 1272 <br />线段树,离散化<br />1199 1255 <br />图论<br />最短路相关的问题 1142 1162 1217 1301 <br />二分图问题 1054 1068 1150 1151 1281<br />其他<br />1053 (huffman) 1102(MST) 1116（欧拉回路） 1233(MST) 1269（强连通）<br />数据结构<br />1103（堆+模拟）1166（数状树组）1247 1251 1285（Topol） 1298<br />汉诺塔系列<br />1207 <br />最近顶点对 1007<br /><br /><br />1500 DP<br />1501 DP<br />1502 DP or 记忆化<br />1503 DP<br />1504 模拟<br />1505 DP<br />1506 DP<br />1507 2分匹配<br />1508 记忆化容易点<br />1509 模拟<br />1510 DP<br />1511 搜索可以过<br />1512 左偏树<br />1513 DP<br />1514 DP<br />1515 DFS<br />1516 DP<br />1517 博奕<br />1518 搜索<br />1519 DP（不确定）<br />1520 树状DP<br />1521 数学题，母函数什么的。其实都可以过<br />1522 稳定婚姻<br />1523 DP<br />1524 博弈<br />1525 博弈<br />1526 Maxflow<br />1527 博弈<br />1528 2分匹配<br />1529 简单题<br />1530 最大团<br />1531 差分约束<br />1532 Maxflow 入门题<br />1533 KM Or 最小费用流<br />1534 差分约束<br />1535 差分约束<br />1536 博弈<br />1537 模拟 加置换群的理论 CODE可以短些，其实没必要。。。<br />1538 很有意思的题目。据说是Microsoft亚洲总裁面试的题目<br />1539 搜索<br />1540 线段树<br />1541 树状数组<br />1542 离散，线段树<br />1543 线段树<br />1544 简单的<br />1545 DP http://acm.hdu.edu.cn/forum/htm_data/18/0608/2050.html<br />1546 搜索<br />1547 模拟<br />1548 模拟 <br />1551 2分答案<br />1553 <br />1554<br />1555 简单<br />1556 技巧。数学<br />1557 搜索<br />1558 并查 + 线段判交<br />1559 DP<br />1560 减支 + 搜索<br />1561 树状DP<br />1562 暴力 between 1000 and 9999<br />1563 简单<br />1564 博弈。<br />1565 状态DP<br />1566 数学<br />1567 模拟<br />1568 大数<br />1569 最小割<br />1570 数学<br />1571 最段路<br />1572 搜索<br />1573 数学<br />1574 DP<br />1575 2分<br />1576 数论<br />1577 模拟，处理精度<br />1579 记忆化<br />1580 DP<br />1582 搜索 <br />1583 模拟<br />1584 搜索<br />1585 <br />1586<br />1587 简单题目<br />1591 模拟<br />1592 简单<br />1593 数学<br />1594 数学<br />1595 图论<br />1596 图论<br />1597 图论<br />1598 图论<br />1599 图论<br /><br /><br /><br /><br /><br />基础题：1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、1194、1196、1197、1201、1202、1205、1219、1234、1235、1236、1248、1266、1279、1282、1283、1302、1303、1323、1326、1330、1334、1335、1339、1390、1391、1393、1395、1397、1405、1406、1407、1408、1412、1418、1420、1465、1491、1555、1562、1563、1570、1587、1673、1678、1708、1718、1720、1785、1799、1859、1862、1877、1898、1976、1977、1985、1994、2000、2001、2002、2003、2004、2005、2006、2007、2008、2009、2010、2011、2012、2013、2014、2015、2016、2017、2018、2019、2020、2021、2022、2023、2024、2025、2026、2027、2028、2029、2030、2031、2032、2033、2034、2035、2039、2040、2042、2043、2048、2049、2051、2053、2055、2056、2057、2060、2061、2071、2073、2075、2076、2078、2081、2083、2088、2090、2092、2093、2095、2096、2097、2098、2099、2101、2103、2106、2107、2109、2113、2114、2115、2123、2131、2132、2133、2135、2136、2137、2138、2139、2143、2148、2153、2156、2161、2162、2164、2178、2186、2192、2200、2201、2212、2304、2309、2317、2401、2500、2502、2503、2504、2519、2520、2521、2523、2524、2535、2537、2539、2547、2548、2549、2550、2551、2552、2555、2560、2561、2562、2566、2567、2568、2700、2710、<br /><br /><br />DP：1003、1024、1029、1069、1074、1087、1114、1159、1160、1171、1176、1203、1231、1257、1260、1284、1421、1789、1978、2059、2084、2159、2191、2544、2571、2602、2709、<br /><br />搜索：1010、1015、1016、1026、1072、1075、1175、1180、1181、1238、1239、1240、1241、1242、1253、1254、1312、1372、1548、1597、1671、1677、1728、1800、1983、2102、2141、2553、2563、2605、2612、2614、1616、2717<br /><br />贪心：1009、1045、1049、1050、1051、1052、1257、1800、2037、2111、2124、2187、2391、2570<br /><br />数学题：1018、1065、1071、1115、1141、1162、1212、1220、1492、1593、1701、1722、1798、1840、1999、2036、2080、2086、2089、2105、2108、2134、2303、2393、2438、2529、2547、2548、2552、2554、2601、2603、2701、<br /><br />递推：1133、1143、1207、1249、1267、1284、1290、1297、1396、1992、1995、1996、2013、2014、2044、2045、2046、2047、2050、2064、2065、2067、2068、2070、2077、2085、2151、2154、2160、2190、2501、2512、2563、2569、2709、2716、<br /><br />字符串：1020、1039、1043、1062、1073、1075、1088、1113、1161、1200、1251、1256、1288、1321、1328、1379、1804、1860、1982、1984、2017、2024、2025、2026、2027、2043、2052、2054、2072、2074、2087、2131、2137、2140、2163、2203、2206、2352、2500、2549、2564、2565、2567、2572、2609、2607、2707、2708、2719、2721、2723、<br /><br />大数：1002、1042、1133、1250、1297、1715、1753、1865、2100、<br /><br />胡搞：1022、1027、1030、1035、1128、1165、1209、1210、1215、1222、1228、1229、1230、1237、1259、1276、1286、1337、1342、1361、1370、1506、1577、1597、1702、1716、1727、1868、1870、1896、1981、1986、1987、1988、1997、1998、1999、2058、2062、2089、2090、2094、2104、2116、2117、2135、2175、2183、2184、2197、2303、2368、2370、2374、2511、2522、2527、2600、2615、2703、2711、2714、2715、2725、<br /><br />博弈：1077、1404、1517、1524、1525、1527、1536、1564、1729、1730、1846、1847、1848、1849、1850、2147、2149、2176、2177、2188<br /><br />母函数：1085、1171、1398、2079、2082、2110、2152、2189、2566、<br /><br />hash：1264、1280、1425、1496、1800、2522、2600、<br /><br /></div><img src ="http://www.cppblog.com/ArcTan/aggbug/169713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ArcTan/" target="_blank">wangs</a> 2012-03-31 22:51 <a href="http://www.cppblog.com/ArcTan/articles/169713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>