﻿<?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++博客-pzz-文章分类-树状数组</title><link>http://www.cppblog.com/panzhizhou/category/19226.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 14 Aug 2013 03:43:35 GMT</lastBuildDate><pubDate>Wed, 14 Aug 2013 03:43:35 GMT</pubDate><ttl>60</ttl><item><title>树状数组和线段树简单题</title><link>http://www.cppblog.com/panzhizhou/articles/nyoj123.html</link><dc:creator>pzz</dc:creator><author>pzz</author><pubDate>Tue, 13 Aug 2013 03:22:00 GMT</pubDate><guid>http://www.cppblog.com/panzhizhou/articles/nyoj123.html</guid><wfw:comment>http://www.cppblog.com/panzhizhou/comments/202518.html</wfw:comment><comments>http://www.cppblog.com/panzhizhou/articles/nyoj123.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/panzhizhou/comments/commentRss/202518.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/panzhizhou/services/trackbacks/202518.html</trackback:ping><description><![CDATA[<div>nyoj123:这个题目是树状数组和线段树的简单题，一般来说树状数组能够结局的问题线段树都能够解决。树状数组编码极其简单。<br />下面是两个代码: 
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; width: 98%; background-color: #eeeeee"><img onclick="this.style.display='none'; Code_Closed_Text_112825.style.display='none'; Code_Open_Image_112825.style.display='inline'; Code_Open_Text_112825.style.display='inline';" id="Code_Closed_Image_112825" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img onclick="this.style.display='none'; Code_Open_Text_112825.style.display='none'; Code_Closed_Image_112825.style.display='inline'; Code_Closed_Text_112825.style.display='inline';" id="Code_Open_Image_112825" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_112825" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff">树状数组</span><span id="Code_Open_Text_112825" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img onclick="this.style.display='none'; Codehighlighter1_0_73_Open_Text.style.display='none'; Codehighlighter1_0_73_Closed_Image.style.display='inline'; Codehighlighter1_0_73_Closed_Text.style.display='inline';" id="Codehighlighter1_0_73_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_0_73_Closed_Text.style.display='none'; Codehighlighter1_0_73_Open_Image.style.display='inline'; Codehighlighter1_0_73_Open_Text.style.display='inline';" id="Codehighlighter1_0_73_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"><span id="Codehighlighter1_0_73_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff">/**/</span><span id="Codehighlighter1_0_73_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;123.cpp<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;*<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;&nbsp;Created&nbsp;on:&nbsp;2013年8月12日<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Author:&nbsp;panzhizhou<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />#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 /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstring</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />#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 /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></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 alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">用树状数组来做</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;a[</span><span style="color: #000000">1000007</span><span style="color: #000000">];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;T,M;<br /><img onclick="this.style.display='none'; Codehighlighter1_231_249_Open_Text.style.display='none'; Codehighlighter1_231_249_Closed_Image.style.display='inline'; Codehighlighter1_231_249_Closed_Text.style.display='inline';" id="Codehighlighter1_231_249_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_231_249_Closed_Text.style.display='none'; Codehighlighter1_231_249_Open_Image.style.display='inline'; Codehighlighter1_231_249_Open_Text.style.display='inline';" id="Codehighlighter1_231_249_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;lowbit(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n)</span><span id="Codehighlighter1_231_249_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_231_249_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;n</span><span style="color: #000000">&amp;</span><span style="color: #000000">(</span><span style="color: #000000">-</span><span style="color: #000000">n);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img onclick="this.style.display='none'; Codehighlighter1_278_351_Open_Text.style.display='none'; Codehighlighter1_278_351_Closed_Image.style.display='inline'; Codehighlighter1_278_351_Closed_Text.style.display='inline';" id="Codehighlighter1_278_351_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_278_351_Closed_Text.style.display='none'; Codehighlighter1_278_351_Open_Image.style.display='inline'; Codehighlighter1_278_351_Open_Text.style.display='inline';" id="Codehighlighter1_278_351_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;add(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;pos,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;value)</span><span id="Codehighlighter1_278_351_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_278_351_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;a[pos]</span><span style="color: #000000">+=</span><span style="color: #000000">value;<br /><img onclick="this.style.display='none'; Codehighlighter1_309_349_Open_Text.style.display='none'; Codehighlighter1_309_349_Closed_Image.style.display='inline'; Codehighlighter1_309_349_Closed_Text.style.display='inline';" id="Codehighlighter1_309_349_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_309_349_Closed_Text.style.display='none'; Codehighlighter1_309_349_Open_Image.style.display='inline'; Codehighlighter1_309_349_Open_Text.style.display='inline';" id="Codehighlighter1_309_349_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(pos</span><span style="color: #000000">&gt;</span><span style="color: #000000">0</span><span style="color: #000000">)</span><span id="Codehighlighter1_309_349_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_309_349_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos</span><span style="color: #000000">-=</span><span style="color: #000000">lowbit(pos);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[pos]</span><span style="color: #000000">+=</span><span style="color: #000000">value;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img onclick="this.style.display='none'; Codehighlighter1_367_449_Open_Text.style.display='none'; Codehighlighter1_367_449_Closed_Image.style.display='inline'; Codehighlighter1_367_449_Closed_Text.style.display='inline';" id="Codehighlighter1_367_449_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_367_449_Closed_Text.style.display='none'; Codehighlighter1_367_449_Open_Image.style.display='inline'; Codehighlighter1_367_449_Open_Text.style.display='inline';" id="Codehighlighter1_367_449_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;sum(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n)</span><span id="Codehighlighter1_367_449_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_367_449_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;_sum</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img onclick="this.style.display='none'; Codehighlighter1_400_433_Open_Text.style.display='none'; Codehighlighter1_400_433_Closed_Image.style.display='inline'; Codehighlighter1_400_433_Closed_Text.style.display='inline';" id="Codehighlighter1_400_433_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_400_433_Closed_Text.style.display='none'; Codehighlighter1_400_433_Open_Image.style.display='inline'; Codehighlighter1_400_433_Open_Text.style.display='inline';" id="Codehighlighter1_400_433_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(n</span><span style="color: #000000">&lt;=</span><span style="color: #000000">M)</span><span id="Codehighlighter1_400_433_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_400_433_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sum</span><span style="color: #000000">+=</span><span style="color: #000000">a[n];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000">+=</span><span style="color: #000000">lowbit(n);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;_sum;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img onclick="this.style.display='none'; Codehighlighter1_461_817_Open_Text.style.display='none'; Codehighlighter1_461_817_Closed_Image.style.display='inline'; Codehighlighter1_461_817_Closed_Text.style.display='inline';" id="Codehighlighter1_461_817_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_461_817_Closed_Text.style.display='none'; Codehighlighter1_461_817_Open_Image.style.display='inline'; Codehighlighter1_461_817_Open_Text.style.display='inline';" id="Codehighlighter1_461_817_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()</span><span id="Codehighlighter1_461_817_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_461_817_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;string&nbsp;s;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">int&nbsp;v;</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;s[</span><span style="color: #000000">10</span><span style="color: #000000">];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;memset(a,0,sizeof(a));</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">M;<br /><img onclick="this.style.display='none'; Codehighlighter1_570_815_Open_Text.style.display='none'; Codehighlighter1_570_815_Closed_Image.style.display='inline'; Codehighlighter1_570_815_Closed_Text.style.display='inline';" id="Codehighlighter1_570_815_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_570_815_Closed_Text.style.display='none'; Codehighlighter1_570_815_Open_Image.style.display='inline'; Codehighlighter1_570_815_Open_Text.style.display='inline';" id="Codehighlighter1_570_815_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">T;i</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span id="Codehighlighter1_570_815_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_570_815_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;cin&gt;&gt;s;</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%s</span><span style="color: #000000">"</span><span style="color: #000000">,s);<br /><img onclick="this.style.display='none'; Codehighlighter1_622_730_Open_Text.style.display='none'; Codehighlighter1_622_730_Closed_Image.style.display='inline'; Codehighlighter1_622_730_Closed_Text.style.display='inline';" id="Codehighlighter1_622_730_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_622_730_Closed_Text.style.display='none'; Codehighlighter1_622_730_Open_Image.style.display='inline'; Codehighlighter1_622_730_Open_Text.style.display='inline';" id="Codehighlighter1_622_730_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(s[</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">==</span><span style="color: #000000">'</span><span style="color: #000000">A</span><span style="color: #000000">'</span><span style="color: #000000">)</span><span id="Codehighlighter1_622_730_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_622_730_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;l,r,v;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;cin&gt;&gt;l&gt;&gt;r&gt;&gt;v;</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">l,</span><span style="color: #000000">&amp;</span><span style="color: #000000">r,</span><span style="color: #000000">&amp;</span><span style="color: #000000">v);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(l</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">v);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(r,v);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br /><img onclick="this.style.display='none'; Codehighlighter1_745_813_Open_Text.style.display='none'; Codehighlighter1_745_813_Closed_Image.style.display='inline'; Codehighlighter1_745_813_Closed_Text.style.display='inline';" id="Codehighlighter1_745_813_Open_Image" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img onclick="this.style.display='none'; Codehighlighter1_745_813_Closed_Text.style.display='none'; Codehighlighter1_745_813_Open_Image.style.display='inline'; Codehighlighter1_745_813_Open_Text.style.display='inline';" id="Codehighlighter1_745_813_Closed_Image" style="display: none" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_745_813_Closed_Text" style="border-top: #808080 1px solid; border-right: #808080 1px solid; border-bottom: #808080 1px solid; border-left: #808080 1px solid; display: none; background-color: #ffffff"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_745_813_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&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">n);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&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">,sum(n));<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></span></div>下面是线段树的代码：<br />
<p>/*<br />&nbsp;* 123_2.cpp<br />&nbsp;*<br />&nbsp;*&nbsp; Created on: 2013年8月13日<br />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Author: panzhizhou<br />&nbsp;*/</p>
<p>&nbsp;</p>
<p>#include&lt;iostream&gt;<br />#include&lt;string&gt;<br />#include&lt;stdio.h&gt;<br />using namespace std;<br />typedef struct Node<br />{<br />&nbsp;int left;<br />&nbsp;int right;<br />&nbsp;int num;<br />}Node;<br />Node node[1000003&lt;&lt;2];<br />int T,M;<br />void build(int root,int l,int r){<br />&nbsp;node[root].left=l;<br />&nbsp;node[root].right=r;<br />&nbsp;node[root].num=0;<br />&nbsp;if(l&lt;r) //最后一次如 2-3 ，就会产生2-2，3-3<br />&nbsp;{<br />&nbsp;&nbsp;int mid=(l+r)&gt;&gt;1;<br />&nbsp;&nbsp;build(root&lt;&lt;1,l,mid);<br />&nbsp;&nbsp;build(root&lt;&lt;1|1,mid+1,r);<br />&nbsp;}<br />}<br />void insert(int root,int b,int e,int v){<br />&nbsp;if(node[root].left&gt;=b&amp;&amp;node[root].right&lt;=e) //如果b,e包含当前root的范围，则可以插入搜索范围截止<br />&nbsp;{<br />&nbsp;&nbsp;node[root].num+=v;<br />&nbsp;&nbsp;return ;<br />&nbsp;}<br />&nbsp;int mid=(node[root].left+node[root].right)&gt;&gt;1;<br />&nbsp;if(e&lt;=mid){<br />&nbsp;&nbsp;insert(root&lt;&lt;1,b,e,v);<br />&nbsp;}<br />&nbsp;else if(b&gt;mid){ //右子树<br />&nbsp;&nbsp;insert(root&lt;&lt;1|1,b,e,v);<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;&nbsp;insert(root&lt;&lt;1,b,mid,v);<br />&nbsp;&nbsp;insert(root&lt;&lt;1|1,mid+1,e,v);<br />&nbsp;}<br />}<br />int Sum(int root,int x){<br />&nbsp;if(node[root].left==node[root].right){<br />&nbsp;&nbsp;return node[root].num;<br />&nbsp;}<br />&nbsp;int sum=node[root].num;<br />&nbsp;int mid=(node[root].left+node[root].right)&gt;&gt;1;<br />&nbsp;&nbsp;&nbsp; if(x&lt;=mid){</p>
<p>&nbsp;&nbsp; sum+=Sum(root&lt;&lt;1,x);<br />&nbsp;}<br />&nbsp;&nbsp;&nbsp; else{<br />&nbsp;&nbsp;&nbsp; &nbsp;sum+=Sum(root&lt;&lt;1|1,x);<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; return sum;<br />}<br />int main()<br />{<br />&nbsp;&nbsp;&nbsp; //string s;<br />&nbsp;&nbsp;&nbsp; char s[11];<br />&nbsp;&nbsp;&nbsp; cin&gt;&gt;T&gt;&gt;M;<br />&nbsp;&nbsp;&nbsp; build(1,1,M);<br />&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;T;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp; //cin&gt;&gt;s;<br />&nbsp;&nbsp;&nbsp;&nbsp; scanf("%s",s);<br />&nbsp;&nbsp;&nbsp;&nbsp; if(s[0]=='A'){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int l,r,v;<br />&nbsp;&nbsp;&nbsp;&nbsp; // cin&gt;&gt;l&gt;&gt;r&gt;&gt;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d%d%d",&amp;l,&amp;r,&amp;v);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insert(1,l,r,v);<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int n;<br />&nbsp;&nbsp;&nbsp;&nbsp; // cin&gt;&gt;n;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d",&amp;n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //cout&lt;&lt;Sum(1,n)&lt;&lt;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\n",Sum(1,n));<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }</p>
<p>}<br /></p><br /></div><img src ="http://www.cppblog.com/panzhizhou/aggbug/202518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/panzhizhou/" target="_blank">pzz</a> 2013-08-13 11:22 <a href="http://www.cppblog.com/panzhizhou/articles/nyoj123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>