﻿<?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++博客-Tim's Programming Space</title><link>http://www.cppblog.com/zxytim/</link><description>Tim's Programming Space</description><language>zh-cn</language><lastBuildDate>Sat, 04 Apr 2026 08:24:57 GMT</lastBuildDate><pubDate>Sat, 04 Apr 2026 08:24:57 GMT</pubDate><ttl>60</ttl><item><title>CEOI2010-The Alliances</title><link>http://www.cppblog.com/zxytim/archive/2010/07/15/120429.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Thu, 15 Jul 2010 03:19:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/07/15/120429.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/120429.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/07/15/120429.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/120429.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/120429.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: The AlliancesIn a fantasy world, there is a large island of a rectangular shape.The sides of the island happen to be exactly R miles and C mileslong, and the whole island is divided into a grid ...&nbsp;&nbsp;<a href='http://www.cppblog.com/zxytim/archive/2010/07/15/120429.html'>阅读全文</a><img src ="http://www.cppblog.com/zxytim/aggbug/120429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-07-15 11:19 <a href="http://www.cppblog.com/zxytim/archive/2010/07/15/120429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HNOI2010-弹飞绵羊-(splay维护括号序列 或 动态树)</title><link>http://www.cppblog.com/zxytim/archive/2010/07/09/119905.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Fri, 09 Jul 2010 13:00:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/07/09/119905.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/119905.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/07/09/119905.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/119905.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/119905.html</trackback:ping><description><![CDATA[听说有版权问题不能贴题目？。那就只能先忍一忍了。<br>题目抽象为：我们有一个由有根树构成的森林，对这个森林进行两种操作：<br>把某棵子树拔下来接到某一棵树（可能还是那个子树原来所在的树）的某个节点下面，询问某个节点在树中的深度。<br><br>因为把一棵边权为1的树的括号序列拿出来，树上某两点的距离就是在括号序列中两点间没匹配括号的个数（有左括号右括号选择的区别，具体分析处理）。当然，既然是对一群树操作，那就直接用动态树就行了。<br><br>于是就去学了动态树。发现其实不算很难（1.指时间复杂度均摊logn的算法，还有基于轻重边剖分的严格logn的算法 2.如果你对splay熟的话），写起来也就基本上就是一棵splay，也算比较好写的。。（以后就告别路径剖分了。。太麻烦了。。复杂度也没动态树好。。）<br><br>以下所说的动态树都是基于splay的时间复杂度均摊logn的动态树。<br><br>动态树的主要思想就是：类似轻重边剖分一样，把整棵树划分成若干实边(solid edge)和虚边(dashed edge)，但这个都是根据你的需要来设定的，不像轻重边一样每个点往下都必须有一条重边（单独的叶子节点算长度为0的重边），而是每次把你所需要操作的点到根的边都改为实边(expose操作)，且每个点往下的实边数不超过1。修改沿途如果有一个点已经有了实边边那么就把它原来的实边改成虚边。这样每次对一个点操作都是在一条实路径上(solid path)。对于每一条实路径，都用一棵splay来维护就行了。（splay可以乱转乱拔乱接太爽了。。- -!当然是在一定规则下的乱。。）<br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">/*</span><span style="color: #008000;"><br>&nbsp;*&nbsp;$File:&nbsp;bounce.cpp<br>&nbsp;*&nbsp;$Date:&nbsp;Fri&nbsp;Jul&nbsp;09&nbsp;20:59:27&nbsp;2010&nbsp;+0800<br>&nbsp;*&nbsp;$Author:&nbsp;Tim<br>&nbsp;*&nbsp;$Solution:&nbsp;Dynamic&nbsp;Tree&nbsp;with&nbsp;Splay&nbsp;Tree&nbsp;implementation<br>&nbsp;*&nbsp;$Time&nbsp;complexity:&nbsp;O(mlogn)&nbsp;,&nbsp;per&nbsp;operation&nbsp;amorized&nbsp;O(logn);<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstdio</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstdlib</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstring</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cassert</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;MAXN&nbsp;200005</span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br><br><br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;SplayNode<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;fa,&nbsp;lt,&nbsp;rt,&nbsp;size;<br>};<br>SplayNode&nbsp;node[MAXN&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;functions&nbsp;below&nbsp;are&nbsp;belong&nbsp;to&nbsp;splay&nbsp;tree<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;we&nbsp;can&nbsp;see&nbsp;that,&nbsp;this&nbsp;splay&nbsp;tree&nbsp;is&nbsp;quite<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;simple,&nbsp;and&nbsp;just&nbsp;'splay'&nbsp;function<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;and&nbsp;size&nbsp;maintaining&nbsp;supported.<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;but&nbsp;that&nbsp;what&nbsp;all&nbsp;we&nbsp;need&nbsp;to<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;solve&nbsp;this&nbsp;problem</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Renew(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">x)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;node[x].size&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[node[x].lt].size&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;node[node[x].rt].size&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>}<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;RightRotate(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;lc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[x].lt,&nbsp;fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[x].fa;<br>&nbsp;&nbsp;&nbsp;&nbsp;node[x].lt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[lc].rt;&nbsp;node[node[x].lt].fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;x;<br>&nbsp;&nbsp;&nbsp;&nbsp;node[lc].rt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;x;&nbsp;node[x].fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;lc;<br>&nbsp;&nbsp;&nbsp;&nbsp;node[lc].fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fa;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(x&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;node[fa].lt)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[fa].lt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;lc;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[fa].rt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;lc;<br>&nbsp;&nbsp;&nbsp;&nbsp;Renew(x);<br>&nbsp;&nbsp;&nbsp;&nbsp;Renew(lc);<br>}<br><br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;LeftRotate(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;rc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[x].rt,&nbsp;fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[x].fa;<br>&nbsp;&nbsp;&nbsp;&nbsp;node[x].rt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[rc].lt;&nbsp;node[node[x].rt].fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;x;<br>&nbsp;&nbsp;&nbsp;&nbsp;node[rc].lt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;x;&nbsp;node[x].fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;rc;<br>&nbsp;&nbsp;&nbsp;&nbsp;node[rc].fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fa;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(x&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;node[fa].lt)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[fa].lt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;rc;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[fa].rt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;rc;<br>&nbsp;&nbsp;&nbsp;&nbsp;Renew(x);<br>&nbsp;&nbsp;&nbsp;&nbsp;Renew(rc);<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;splay(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;FA&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;fa,&nbsp;Fa;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;((fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[x].fa)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;FA)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;((Fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[fa].fa)&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;FA)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(x&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;node[fa].lt)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightRotate(fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LeftRotate(fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</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;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(x&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;node[fa].lt)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(fa&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;node[Fa].lt)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightRotate(Fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightRotate(fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightRotate(fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LeftRotate(Fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(fa&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;node[Fa].rt)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LeftRotate(Fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LeftRotate(fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LeftRotate(fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightRotate(Fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;end&nbsp;splay</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;root;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;query_rank(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;splay(id);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;node[node[id].lt].size&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;father[MAXN&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n;<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Init()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;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;k;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&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;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">k);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(k&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[i].size&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;node[n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">].size&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;split(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;isolate&nbsp;id&nbsp;and&nbsp;the&nbsp;node&nbsp;right&nbsp;after&nbsp;it&nbsp;on&nbsp;the&nbsp;solid&nbsp;path&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;and&nbsp;return&nbsp;that&nbsp;node</span><span style="color: #008000;"><br></span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;splay(id);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(node[id].rt)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;rc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[id].rt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[id].rt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[rc].fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[id].size&nbsp;</span><span style="color: #000000;">-=</span><span style="color: #000000;">&nbsp;node[rc].size;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;rc;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Link(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;fa)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;let&nbsp;fa&nbsp;be&nbsp;the&nbsp;father&nbsp;of&nbsp;id,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;we&nbsp;assume&nbsp;that&nbsp;before&nbsp;this,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;id&nbsp;is&nbsp;the&nbsp;head&nbsp;of&nbsp;a&nbsp;solid&nbsp;path,<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;and&nbsp;fa&nbsp;is&nbsp;the&nbsp;tail&nbsp;of&nbsp;a&nbsp;solid&nbsp;path,<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;this&nbsp;was&nbsp;done&nbsp;by&nbsp;function&nbsp;'cut'&nbsp;and&nbsp;'split'</span><span style="color: #008000;"><br></span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;splay(id);<br>&nbsp;&nbsp;&nbsp;&nbsp;assert(</span><span style="color: #000000;">!</span><span style="color: #000000;">node[id].lt);<br>&nbsp;&nbsp;&nbsp;&nbsp;splay(fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;assert(</span><span style="color: #000000;">!</span><span style="color: #000000;">node[fa].rt);<br>&nbsp;&nbsp;&nbsp;&nbsp;node[fa].rt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;node[fa].size&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;node[id].size;<br>&nbsp;&nbsp;&nbsp;&nbsp;node[id].fa&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fa;<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;get_head(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x)<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;get&nbsp;the&nbsp;head&nbsp;of&nbsp;the&nbsp;solid&nbsp;path&nbsp;which&nbsp;x&nbsp;is&nbsp;in.</span><span style="color: #008000;"><br></span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(node[x].fa)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[x].fa;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(node[x].lt)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node[x].lt;<br>&nbsp;&nbsp;&nbsp;&nbsp;splay(x);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;x;<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;expose(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;turn&nbsp;the&nbsp;edges&nbsp;between&nbsp;id&nbsp;and&nbsp;the&nbsp;root&nbsp;of&nbsp;the&nbsp;tree&nbsp;id&nbsp;is&nbsp;in<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;all&nbsp;into&nbsp;solid&nbsp;edges.&nbsp;with&nbsp;this&nbsp;operation,&nbsp;we&nbsp;can&nbsp;query&nbsp;what<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;we&nbsp;want&nbsp;conveniently&nbsp;in&nbsp;a&nbsp;splay&nbsp;tree.</span><span style="color: #008000;"><br></span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;get_head(id);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">father[id])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;split(father[id]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link(id,&nbsp;father[id]);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;query_depth(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;expose(id);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;query_rank(id)&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;cut(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id)<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;this&nbsp;function&nbsp;isolated&nbsp;the&nbsp;subtree&nbsp;rooted&nbsp;id</span><span style="color: #008000;"><br></span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;expose(id);<br>&nbsp;&nbsp;&nbsp;&nbsp;split(father[id]);<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;modify_father(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;fa)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;cut(id);<br>&nbsp;&nbsp;&nbsp;&nbsp;split(fa);<br>&nbsp;&nbsp;&nbsp;&nbsp;father[id]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fa;<br>&nbsp;&nbsp;&nbsp;&nbsp;Link(id,&nbsp;fa);<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Solve()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;m,&nbsp;cmd,&nbsp;id,&nbsp;k;<br>&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(m&nbsp;</span><span style="color: #000000;">--</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">cmd,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">id);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(cmd&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&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;">,&nbsp;query_depth(id));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</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;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">k);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(k&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modify_father(id,&nbsp;k);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">bounce.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">bounce.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br>&nbsp;&nbsp;&nbsp;&nbsp;Init();<br>&nbsp;&nbsp;&nbsp;&nbsp;Solve();<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></div>
<br><br><img src ="http://www.cppblog.com/zxytim/aggbug/119905.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-07-09 21:00 <a href="http://www.cppblog.com/zxytim/archive/2010/07/09/119905.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NOI2007 货币兑换(cash) -- 动态规划维护凸壳</title><link>http://www.cppblog.com/zxytim/archive/2010/04/28/113854.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Wed, 28 Apr 2010 06:39:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/04/28/113854.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/113854.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/04/28/113854.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/113854.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/113854.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;货币兑换&nbsp; 问题描述&nbsp; &nbsp;&nbsp; 小 Y 最近在一家金券交易所工作。该金券交易所只发行交易两种金券：A 纪 念券（以下简称 A 券）和 B 纪念券（以下简称 B 券）。每个持有金券的顾客都有 一个自己的帐户。金券的数目可以是一个实数。&nbsp; &nbsp;&nbsp; 每天随着市场的起伏波动，两种金券都有自己当时的价值，即每一单位金券 当天可以兑...&nbsp;&nbsp;<a href='http://www.cppblog.com/zxytim/archive/2010/04/28/113854.html'>阅读全文</a><img src ="http://www.cppblog.com/zxytim/aggbug/113854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-04-28 14:39 <a href="http://www.cppblog.com/zxytim/archive/2010/04/28/113854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>男人8题-Tony's Tour-PKU1739-基于连通性状态压缩的动态规划。。</title><link>http://www.cppblog.com/zxytim/archive/2010/04/10/112172.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Sat, 10 Apr 2010 05:59:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/04/10/112172.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/112172.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/04/10/112172.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/112172.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/112172.html</trackback:ping><description><![CDATA[http://acm.pku.edu.cn/JudgeOnline/problem?id=1739<br>基于连通性状态压缩的动态规划(名字真长- -！)其实不算太难，以前都被它吓住了。<br>hyf教了一次后，印象极其深刻，回路、路径条数啥的从此再也不用向美国（雾）进口了。<br>简要的说：f[i][j][k]表示在（i，j）这个格子的时候，m+1个插头的情况是k，然后根据(i,j)左边和上边插头（括号？）的情况进行连接，然后转移到下一个格子。一个合法的状态是一个括号表达式，有左括号，右括号和空格，且左右括号匹配。一个左括号和一个相应的右括号表示这两个地方的路径是连在一起的。转移的时候分情况讨论。<br>处理的时候先把所有合法的状态都dfs出来，转移的时候就方便了。。<br>PS：居然惊喜地进入了status第一页？！。。。<br>#include &lt;iostream&gt;<br>#include &lt;cstdio&gt;<br>#include &lt;cstdlib&gt;<br>#include &lt;cstring&gt;<br>#define MAXN 8<br>#define BLANK 0<br>#define LEFT 1<br>#define RIGHT 2<br>#define MAXSTATE 174420<br>#define MAXSTATEAMOUNT 835<br>#define MAX(a,b) ((a) &gt; (b) ? (a) : (b))<br>#define ll long long<br><br>using namespace std;<br><br>int n,m;<br>char map[MAXN+1][MAXN+1];<br>int nState = 0;<br>int State[MAXSTATEAMOUNT+1];<br>int id[MAXSTATE+1];<br>int Tx, Ty, FinalState;<br>ll f[MAXN+1][MAXN+1][MAXSTATEAMOUNT+1];<br>ll ans;<br>void Reset(){<br>&nbsp;&nbsp;&nbsp;&nbsp; nState = 0, Tx = -1;<br>&nbsp;&nbsp;&nbsp;&nbsp; memset(f, 0, sizeof(f));<br>&nbsp;&nbsp;&nbsp;&nbsp; ans = 0;<br>}<br><br>bool Init(){<br>&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d%d",&amp;n,&amp;m);<br>&nbsp;&nbsp;&nbsp;&nbsp; if (!n) return false;<br>&nbsp;&nbsp;&nbsp;&nbsp; Reset();<br>&nbsp;&nbsp;&nbsp;&nbsp; for (int i = n-1; i&gt;=0; i--){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%s", map[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Tx == -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = m-1; j&gt;=0; j--)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (map[i][j] == '.'){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tx = i, Ty = j;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j&lt;m; j++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (map[i][j] == '.') map[i][j] = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[i][j] = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>}<br><br>void dfs(int pos, int r_bracket, int state){<br>&nbsp;&nbsp;&nbsp;&nbsp; if (pos &lt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; State[nState] = state;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id[state] = nState;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d: ", nState);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i&lt;=m; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d ", buffer[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nState ++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; if (pos &gt;= r_bracket) // blank<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dfs(pos - 1, r_bracket, (state &lt;&lt; 2));<br>&nbsp;&nbsp;&nbsp;&nbsp; if (pos &gt; r_bracket) // right bracket<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dfs(pos - 1, r_bracket + 1, (state &lt;&lt; 2) | RIGHT);<br>&nbsp;&nbsp;&nbsp;&nbsp; if (r_bracket) // left bracket<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dfs(pos - 1, r_bracket - 1, (state &lt;&lt; 2) | LEFT);<br>}<br><br>#define MASK 3<br>#define Get(state, p) (((state) &gt;&gt; (p&lt;&lt;1)) &amp; MASK)<br><br>inline bool OK(int i, int j, int state){<br>&nbsp;&nbsp;&nbsp;&nbsp; if (Get(state, j) == 1 &amp;&amp; Get(state, j+1) == 2 &amp;&amp; !(i == Tx &amp;&amp; j == Ty)) return false;<br>&nbsp;&nbsp;&nbsp;&nbsp; for (int k = 0; k&lt;j; k++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((map[i][k] || map[i+1][k]) &amp;&amp; Get(state, k)) return false;<br>&nbsp;&nbsp;&nbsp;&nbsp; if (((j &amp;&amp; map[i][j-1]) || (map[i][j])) &amp;&amp; Get(state, j)) return false;<br>&nbsp;&nbsp;&nbsp;&nbsp; for (int k = j+1; k&lt;=m; k++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((i &amp;&amp; map[i-1][k-1]) || (map[i][k-1])) &amp;&amp; Get(state, k)) return false;<br>&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>}<br><br>inline int Modify(int state, int p, int v){<br>&nbsp;&nbsp;&nbsp; return state - (((state &gt;&gt; (p &lt;&lt; 1)) &amp; MASK) &lt;&lt; (p &lt;&lt; 1)) + (v &lt;&lt; (p &lt;&lt; 1));<br>}<br><br>inline int FindRight(int p, int state){<br>&nbsp;&nbsp;&nbsp; int cnt = 0, t;<br>&nbsp;&nbsp;&nbsp; for (int i = p; i&lt;=m; i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = Get(state,i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (t == 1) cnt++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (t == 2) cnt--;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cnt == 0) return i;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return -1;<br>}<br><br>inline int FindLeft(int p, int state){<br>&nbsp;&nbsp;&nbsp; int cnt = 0, t;<br>&nbsp;&nbsp;&nbsp; for (int i = p; i&gt;=0; i--){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = Get(state, i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (t == 2) cnt++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (t == 1) cnt--;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cnt == 0) return i;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return -1;<br>}<br><br>void Solve(){<br>&nbsp;&nbsp;&nbsp;&nbsp; dfs(m, 0, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp; f[0][0][id[(1 &lt;&lt; 2) + (2 &lt;&lt; (2 * m))]] = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp; FinalState = (1 &lt;&lt; (2 * Ty)) + (2 &lt;&lt; (2 * (Ty+1)));<br>&nbsp;&nbsp;&nbsp;&nbsp; int p, q, tmp, tmp2, state, v, i, j, k;<br>&nbsp;&nbsp;&nbsp;&nbsp; ll *a;<br>&nbsp;&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; n; i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (j = 0; j &lt; m; j++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = f[i][j+1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (k = 0; k &lt; nState; k++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((v = f[i][j][k])){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; state = State[k];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p = Get(state, j), q = Get(state, j+1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (p == 0 &amp;&amp; q == 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!map[i][j]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp = Modify(Modify(state, j, 1), j+1, 2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (OK(i, j+1, tmp))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[id[tmp]] += v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[k] += v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if(p == 0){ // conditions below ensured map[i][j] is empty, because there exists at least one bracket on one side of the grid (i,j)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (OK(i, j+1, state))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[k] += v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp = Modify(Modify(state, j, q), j+1, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (OK(i, j+1, tmp))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[id[tmp]] += v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if (q == 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (OK(i, j+1, state))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[k] += v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp = Modify(Modify(state, j, 0), j+1, p);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (OK(i, j+1, tmp))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[id[tmp]] += v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp = Modify(Modify(state, j, 0), j+1, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (p == 1 &amp;&amp; q == 1){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp2 = Modify(tmp, FindRight(j+1, state), 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (OK(i, j+1, tmp2))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[id[tmp2]] += v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if (p == 2 &amp;&amp; q == 2){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp2 = Modify(tmp, FindLeft(j, state), 2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (OK(i, j+1, tmp2))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[id[tmp2]] += v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if (p == 1 &amp;&amp; q == 2){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (i == Tx &amp;&amp; j == Ty &amp;&amp; state == FinalState){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%I64d\n", v);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if (p == 2 &amp;&amp; q == 1){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (OK(i, j+1, tmp))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[id[tmp]] += v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int k = 0; k &lt; nState; k++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Get(State[k], m) == 0 &amp;&amp; OK(i+1, 0, tmp = (State[k] &lt;&lt; 2)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f[i+1][0][id[tmp]] += f[i][m][k];<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; printf("%I64d\n", ans);<br>}<br><br>int main(){<br>&nbsp;&nbsp;&nbsp; while (Init())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Solve();<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br><br><br> <img src ="http://www.cppblog.com/zxytim/aggbug/112172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-04-10 13:59 <a href="http://www.cppblog.com/zxytim/archive/2010/04/10/112172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SCTSC2010-资料下载</title><link>http://www.cppblog.com/zxytim/archive/2010/04/10/112149.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Sat, 10 Apr 2010 03:16:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/04/10/112149.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/112149.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/04/10/112149.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/112149.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/112149.html</trackback:ping><description><![CDATA[<a href="http://d.namipan.com/d/1d015405c37f1b310d80af62e6bb5697f9367b00b7732d01" target="_blank">http://d.namipan.com/d/1d015405c37f1b310d80af62e6bb5697f9367b00b7732d01</a><br>
。。上边这个链接如果有人<span href="http://www.oibh.org/bbs/tag.php?name=%CF%C2%D4%D8" onclick="tagshow(event)" class="t_tag">下载</span>就会保留7天。。。7天没人下就没了。。<br>欲购从速。。。<br>orz一切神牛。。<br> <img src ="http://www.cppblog.com/zxytim/aggbug/112149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-04-10 11:16 <a href="http://www.cppblog.com/zxytim/archive/2010/04/10/112149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习笔记-Splay</title><link>http://www.cppblog.com/zxytim/archive/2010/04/09/112068.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Fri, 09 Apr 2010 06:43:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/04/09/112068.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/112068.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/04/09/112068.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/112068.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/112068.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 很久以前有且写过一次splay。。。然后被它要记父亲的旋转囧到。。然后从此就再也没写过。。这几天刚省选完没事做，就准备再写一下。在sqybi神牛的文章的指导下很快又回忆起了splay的操作。。于是从头开始YY一个splay。。。总体感觉比treap要难写。。（Treap性价比真的很高），但要比treap强大许多。。。感觉上splay完全可以代替线段树了。。只是常数太大了。。做了两道splay的题：...&nbsp;&nbsp;<a href='http://www.cppblog.com/zxytim/archive/2010/04/09/112068.html'>阅读全文</a><img src ="http://www.cppblog.com/zxytim/aggbug/112068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-04-09 14:43 <a href="http://www.cppblog.com/zxytim/archive/2010/04/09/112068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SCTSC2010-序列操作</title><link>http://www.cppblog.com/zxytim/archive/2010/04/08/111925.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Thu, 08 Apr 2010 02:17:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/04/08/111925.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/111925.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/04/08/111925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/111925.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/111925.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 序列操作&nbsp;【题目描述】lxhgww最近收到了一个01序列，序列里面包含了n个数，这些数要么是0，要么是1，现在对于这个序列有五种变换操作和询问操作：0 a b 把[a, b]区间内的所有数全变成01 a b 把[a, b]区间内的所有数全变成12 a b 把[a,b]区间内的所有数全部取反，也就是说把所有的0变成1，把所有的1变成03 a b 询问[a, b]...&nbsp;&nbsp;<a href='http://www.cppblog.com/zxytim/archive/2010/04/08/111925.html'>阅读全文</a><img src ="http://www.cppblog.com/zxytim/aggbug/111925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-04-08 10:17 <a href="http://www.cppblog.com/zxytim/archive/2010/04/08/111925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SCTSC2010-传送带</title><link>http://www.cppblog.com/zxytim/archive/2010/04/08/111924.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Thu, 08 Apr 2010 02:06:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/04/08/111924.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/111924.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/04/08/111924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/111924.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/111924.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 传送带&nbsp;【题目描述】在一个2维平面上有两条传送带，每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P，在CD上的移动速度为Q，在平面上的移动速度R。现在lxhgww想从A点走到D点，他想知道最少需要走多长时间【输入】输入数据第一行是4个整数，表示A和B的坐标，分别为Ax，Ay，Bx，By第二行是4个整数，表示...&nbsp;&nbsp;<a href='http://www.cppblog.com/zxytim/archive/2010/04/08/111924.html'>阅读全文</a><img src ="http://www.cppblog.com/zxytim/aggbug/111924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-04-08 10:06 <a href="http://www.cppblog.com/zxytim/archive/2010/04/08/111924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SCTSC2010-字符串</title><link>http://www.cppblog.com/zxytim/archive/2010/04/08/111922.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Thu, 08 Apr 2010 01:54:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/04/08/111922.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/111922.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/04/08/111922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/111922.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/111922.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><span style="FONT-SIZE: 24pt; FONT-FAMILY: 黑体">字符串<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">【题目描述】</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang=EN-US>lxhgww</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最近接到了一个生成字符串的任务，任务需要他把</span><span lang=EN-US>n</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个</span><span lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>m</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个</span><span lang=EN-US>0</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">组成字符串，但是任务还要求在组成的字符串中，在任意的前</span><span lang=EN-US>k</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个字符中，</span><span lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的个数不能少于</span><span lang=EN-US>0</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的个数。现在</span><span lang=EN-US>lxhgww</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">想要知道满足要求的字符串共有多少个，聪明的程序员们，你们能帮助他吗？</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">【输入】</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输入数据是一行，包括</span><span lang=EN-US>2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个数字</span><span lang=EN-US>n</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>m</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">【输出】</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输出数据是一行，包括</span><span lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个数字，表示满足要求的字符串数目，这个数可能会很大，只需输出这个数除以</span><span lang=EN-US>20100403</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的余数</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">【样例输入】</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><span lang=EN-US>2 2</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">【样例输出】</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><span lang=EN-US>2</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">【数据范围】</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">对于</span><span lang=EN-US style="mso-font-kerning: 0pt">30%</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">的数据，保证</span><span lang=EN-US style="mso-font-kerning: 0pt">1&lt;=m&lt;=n&lt;=1000<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">对于</span><span lang=EN-US style="mso-font-kerning: 0pt">100%</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">的数据，保证</span><span lang=EN-US style="mso-font-kerning: 0pt">1&lt;=m&lt;=n&lt;=1000000<o:p></o:p></span></p>
=================================================================<br>。。。这题是最悲剧的一题。。。以前做过原题。。。然后考试的时候紧张的啥都不知道了。。。数学不过关啊！！T_T<br>一种推导是这样的：<br>总的01串的数量为C(n+m,n)，考虑除去不符合条件的。<br>对于一个不符合条件的01串，一定有某个位置使得0的个数第一次超过1的个数，比如：<br>1010011010<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>设该位置是p，在1~p中1的个数为a，0的个数为a+1<br>则在p~n+m中，1的个数为n-a，0的个数为m-a-1<br>如果对p~n+m中的0和1取反，则在p~n+m中，1的个数为m-a-1，0的个数为n-a<br>对于这样一个变换后的串，共有m-1个1，n+1个0。<br>由于每一个不符合条件的有n个1，m个0的01串都可以唯一确定对应一个有m-1个1，n+1个0的01串，<br>并且每一个有m-1个1，n+1个0的01串一定有一个位置开始0的个数第一次多于1的个数，把这个位置之后的串取反后得到的01串可以唯一确定对应一个有n个1，m个0的不符合条件的01串，所以这两种串是一一对应的。<br>所以不符合条件的串的个数为C(n+m,n+1)<br>所以最后的答案为C(n+m,n) - C(n+m,n+1)<br>PS：算这个的时候可以分解质因数（hyf神牛神做法），也可以用逆元解决除法的问题。因为<span lang=EN-US>20100403是质数，所以逆元就可以不用解方程算了，直接取a^(p-2)次方即可。<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;ll&nbsp;long&nbsp;long</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MOD&nbsp;20100403</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MAXN&nbsp;2100000</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></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><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_107_137_Open_Image onclick="this.style.display='none'; Codehighlighter1_107_137_Open_Text.style.display='none'; Codehighlighter1_107_137_Closed_Image.style.display='inline'; Codehighlighter1_107_137_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_107_137_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_107_137_Closed_Text.style.display='none'; Codehighlighter1_107_137_Open_Image.style.display='inline'; Codehighlighter1_107_137_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_107_137_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_107_137_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;C(n+m,n)&nbsp;-&nbsp;C(n+m,n+1)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>ll&nbsp;n,&nbsp;m;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>ll&nbsp;fact[MAXN</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_190_312_Open_Image onclick="this.style.display='none'; Codehighlighter1_190_312_Open_Text.style.display='none'; Codehighlighter1_190_312_Closed_Image.style.display='inline'; Codehighlighter1_190_312_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_190_312_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_190_312_Closed_Text.style.display='none'; Codehighlighter1_190_312_Open_Image.style.display='inline'; Codehighlighter1_190_312_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>ll&nbsp;PowerMod(ll&nbsp;a,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b)</span><span id=Codehighlighter1_190_312_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_190_312_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(b&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;ll&nbsp;t&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;PowerMod(a,&nbsp;b</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;t)&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;MOD;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(b</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;t&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;a)&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;MOD;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;t;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_326_358_Open_Image onclick="this.style.display='none'; Codehighlighter1_326_358_Open_Text.style.display='none'; Codehighlighter1_326_358_Closed_Image.style.display='inline'; Codehighlighter1_326_358_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_326_358_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_326_358_Closed_Text.style.display='none'; Codehighlighter1_326_358_Open_Image.style.display='inline'; Codehighlighter1_326_358_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>ll&nbsp;Rev(ll&nbsp;a)</span><span id=Codehighlighter1_326_358_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_326_358_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;PowerMod(a,&nbsp;MOD</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_371_393_Open_Image onclick="this.style.display='none'; Codehighlighter1_371_393_Open_Text.style.display='none'; Codehighlighter1_371_393_Closed_Image.style.display='inline'; Codehighlighter1_371_393_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_371_393_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_371_393_Closed_Text.style.display='none'; Codehighlighter1_371_393_Open_Image.style.display='inline'; Codehighlighter1_371_393_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Init()</span><span id=Codehighlighter1_371_393_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_371_393_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;n&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;m;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_414_479_Open_Image onclick="this.style.display='none'; Codehighlighter1_414_479_Open_Text.style.display='none'; Codehighlighter1_414_479_Closed_Image.style.display='inline'; Codehighlighter1_414_479_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_414_479_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_414_479_Closed_Text.style.display='none'; Codehighlighter1_414_479_Open_Image.style.display='inline'; Codehighlighter1_414_479_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>ll&nbsp;C(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m)</span><span id=Codehighlighter1_414_479_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_414_479_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;fact[n]&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;Rev(fact[m])&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;MOD&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;Rev(fact[n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">m])&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;MOD;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_493_646_Open_Image onclick="this.style.display='none'; Codehighlighter1_493_646_Open_Text.style.display='none'; Codehighlighter1_493_646_Closed_Image.style.display='inline'; Codehighlighter1_493_646_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_493_646_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_493_646_Closed_Text.style.display='none'; Codehighlighter1_493_646_Open_Image.style.display='inline'; Codehighlighter1_493_646_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Solve()</span><span id=Codehighlighter1_493_646_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_493_646_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fact[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(ll&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</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">m;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fact[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(fact[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;i)&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;MOD;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;((C(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">m,n)&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;C(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">m,n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;MOD&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;MOD)&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;MOD;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_659_774_Open_Image onclick="this.style.display='none'; Codehighlighter1_659_774_Open_Text.style.display='none'; Codehighlighter1_659_774_Closed_Image.style.display='inline'; Codehighlighter1_659_774_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_659_774_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_659_774_Closed_Text.style.display='none'; Codehighlighter1_659_774_Open_Image.style.display='inline'; Codehighlighter1_659_774_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()</span><span id=Codehighlighter1_659_774_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_659_774_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">string.in</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,stdin);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">string.out</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">w</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,stdout);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Init();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Solve();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
</span>
<img src ="http://www.cppblog.com/zxytim/aggbug/111922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-04-08 09:54 <a href="http://www.cppblog.com/zxytim/archive/2010/04/08/111922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SCTSC2010-股票交易</title><link>http://www.cppblog.com/zxytim/archive/2010/04/08/111920.html</link><dc:creator>TimTopCoder</dc:creator><author>TimTopCoder</author><pubDate>Thu, 08 Apr 2010 01:37:00 GMT</pubDate><guid>http://www.cppblog.com/zxytim/archive/2010/04/08/111920.html</guid><wfw:comment>http://www.cppblog.com/zxytim/comments/111920.html</wfw:comment><comments>http://www.cppblog.com/zxytim/archive/2010/04/08/111920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zxytim/comments/commentRss/111920.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxytim/services/trackbacks/111920.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 股票交易&nbsp;【题目描述】最近lxhgww又迷上了投资股票，通过一段时间的观察和学习，他总结出了股票行情的一些规律。通过一段时间的观察，lxhgww预测到了未来T天内某只股票的走势，第i天的股票买入价为每股APi，第i天的股票卖出价为每股BPi（数据保证对于每个i，都有APi&gt;=BPi），但是每天不能无限制地交易，于是股票交易所规定第i天的一次买入至多只能购买ASi股，...&nbsp;&nbsp;<a href='http://www.cppblog.com/zxytim/archive/2010/04/08/111920.html'>阅读全文</a><img src ="http://www.cppblog.com/zxytim/aggbug/111920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxytim/" target="_blank">TimTopCoder</a> 2010-04-08 09:37 <a href="http://www.cppblog.com/zxytim/archive/2010/04/08/111920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>