﻿<?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++博客-某科学的魂魄妖梦的笔记-最新评论</title><link>http://www.cppblog.com/youmukonpaku/CommentsRSS.aspx</link><description>C++/C#/Java均可
DirectX/OpenGL也ok</description><language>zh-cn</language><pubDate>Thu, 04 Oct 2012 04:27:00 GMT</pubDate><lastBuildDate>Thu, 04 Oct 2012 04:27:00 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: Marcool 海淀区区赛试题 四个国王</title><link>http://www.cppblog.com/youmukonpaku/archive/2016/01/08/192752.html#212632</link><dc:creator>renja</dc:creator><author>renja</author><pubDate>Fri, 08 Jan 2016 12:55:00 GMT</pubDate><guid>http://www.cppblog.com/youmukonpaku/archive/2016/01/08/192752.html#212632</guid><description><![CDATA[#include &lt;stdio.h&gt;<br>#include &lt;string.h&gt;<br>#define MAX 2147483648<br>using namespace std;<br>int n, m, king_number;<br>long long dp[100][1000], dp_tmp[100][1000], ans = 0;<br>bool flag[10];<br>void READY(int x)<br>{<br>     memset(flag, false, sizeof(flag));<br>     int cnt = n;<br>     while (x != 0)<br>     {<br>         if (x % 2 == 0)<br>             flag[cnt] = true;<br>         x /= 2;<br>         cnt--;<br>     }<br>}<br>void Deep_Fisrt_Search(int x, int y, int z, long long std_dp, bool left)<br>{<br>     if (z &gt; king_number)<br>         return ;<br>     if (x == n + 1)<br>     {<br>         dp_tmp[y][z] += std_dp;<br>         if (dp_tmp[y][z] &gt; 2147483647)<br>             dp_tmp[y][z] = MAX;<br>         return ;<br>     }<br>     Deep_Fisrt_Search(x + 1, y * 2, z, std_dp, false); <br>     if(! left &amp;&amp; ! flag[x] &amp;&amp; !(x - 1 &gt;= 1 &amp;&amp; flag[x - 1]) &amp;&amp; ! (x + 1 &lt;= n &amp;&amp; flag[x + 1])) <br>         Deep_Fisrt_Search(x + 1, y * 2 + 1, z + 1, std_dp, true); <br>     return ;<br>}<br>int main()<br>{<br>     scanf(&quot;%d %d %d&quot;, &amp;n, &amp;m, &amp;king_number);<br>     memset(dp, 0, sizeof(dp));<br>     dp[0][0] = 1;<br>     int end = 1;<br>     for (int i = 1; i &lt;= n; i++)<br>         end *= 2;<br>     end --;<br>     for (int i = 1; i &lt;= m; i++)<br>     {<br>         memset(dp_tmp, 0, sizeof(dp_tmp));<br>         for (int j = 0; j &lt;= end; j++)<br>         {<br>             READY(j);<br>             for (int k = 0; k &lt;= king_number; k++)<br>             {<br>                 if (dp[j][k] == 0)<br>                     continue;<br>                 Deep_Fisrt_Search(1, 0, k, dp[j][k], false);<br>             }<br>         }<br>         memcpy(dp, dp_tmp, sizeof(dp)); <br>     }<br>     for (int i = 0; i &lt;= end; i++)<br>     {<br>         ans += dp[i][king_number];<br>         if (ans &gt; 2147483647)<br>         {<br>             printf(&quot;2147483648\n&quot;);<br>             return 0;<br>         }<br>     }<br>     printf(&quot;%lld\n&quot;, ans);<br>     return 0;<br>}<img src ="http://www.cppblog.com/youmukonpaku/aggbug/212632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/youmukonpaku/" target="_blank">renja</a> 2016-01-08 20:55 <a href="http://www.cppblog.com/youmukonpaku/archive/2016/01/08/192752.html#212632#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>