锘??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久精品国产综合一区 ,久久综合色区,国产午夜精品理论片久久http://www.shnenglu.com/ArcTan/category/19189.htmldfszh-cnFri, 11 Jan 2013 21:37:45 GMTFri, 11 Jan 2013 21:37:45 GMT60浜岀淮綰挎鏍?瀛愮煩闃靛拰http://www.shnenglu.com/ArcTan/articles/196862.htmlwangswangsSun, 30 Dec 2012 13:11:00 GMThttp://www.shnenglu.com/ArcTan/articles/196862.htmlhttp://www.shnenglu.com/ArcTan/comments/196862.htmlhttp://www.shnenglu.com/ArcTan/articles/196862.html#Feedback0http://www.shnenglu.com/ArcTan/comments/commentRss/196862.htmlhttp://www.shnenglu.com/ArcTan/services/trackbacks/196862.html
N*N鐨勭煩闃甸噷錛屼袱縐嶇鎿嶄綔
A x y w錛宎[x][y]鍔犱笂w
S x1 y1 x2 y2錛?x1,y1)鍒?x2,y2)榪欎釜灝忕煩闃甸噷鎵鏈夋暟鐨勫拰

浜岀淮綰挎鏍?涓緇村x浜屽垎錛屾瘡涓妭鐐逛篃鏄竴涓嚎孌墊爲錛屽y浜屽垎銆?br />
struct node{
    
int l,r,m;
    
int sum;
    
int num;
    
int pos;//treeX閲屾瘡涓妭鐐圭殑綰挎鏍戝湪treeY閲岀殑浣嶇疆
}treeX[maxn*2],treeY[maxn*2][maxn*2];
int N;
int a[maxn][maxn];
int s[maxn][maxn];//s[i][j]琛ㄧず錛?錛?錛夊埌(i,j)瀛愮煩闃電殑鍜?/span>

void buildY(int cnt,int ll,int rr,int root,int l,int r)
{
    treeY[cnt][root].l 
= l;
    treeY[cnt][root].r 
= r;
    treeY[cnt][root].sum 
= s[rr][r]-s[rr][l-1]-s[ll-1][r]+s[ll-1][l-1];
    
if (l<r)
    {
        buildY(cnt,ll,rr,
2*root,l,(l+r)/2);
        buildY(cnt,ll,rr,
2*root+1,(l+r)/2+1,r);
    }
    
return ;
}
void buildX(int cnt,int root,int l,int r)
{
    buildY(cnt,l,r,
1,1,N);
    treeX[root].l 
= l;
    treeX[root].r 
= r;
    treeX[root].sum 
= s[r][N]-s[l-1][N];
    treeX[root].pos 
= cnt;
    
if (l<r)
    {
        buildX(cnt
+1,2*root,l,(l+r)/2);
        buildX(cnt
+2,2*root+1,(l+r)/2+1,r);
    }
    
return ;
}
int searchY(int cnt,int root,int l,int r)
{
    
if (l<=treeY[cnt][root].l && r>=treeY[cnt][root].r)
        
return treeY[cnt][root].sum;
    
int sum_l = 0, sum_r = 0;
    
int mid = (treeY[cnt][root].r + treeY[cnt][root].l)/2;
    
if (l<=mid)
        sum_l 
= searchY(cnt,2*root,l,r);
    
if (r>mid)
        sum_r 
= searchY(cnt,2*root+1,l,r);
    
return sum_l + sum_r;
}
int searchX(int root,int ll,int rr,int l,int r)
{
    
if (ll<=treeX[root].l && rr>=treeX[root].r)
        
return searchY(treeX[root].pos,1,l,r);
    
int sum_l = 0,sum_r = 0;
    
int mid = (treeX[root].l+treeX[root].r)/2;
    
if (ll<=mid)
        sum_l 
= searchX(2*root,ll,rr,l,r);
    
if (rr>mid)
        sum_r 
= searchX(2*root+1,ll,rr,l,r);
    
return sum_l + sum_r;
}

void addY(int cnt,int root,int y,int w)
{
    treeY[cnt][root].sum 
+= w;
    
if (treeY[cnt][root].l ==treeY[cnt][root].r)
        
return ;
    
int mid = (treeY[cnt][root].l + treeY[cnt][root].r)/2;
   
// puts("y");
    if (y<=mid)
        addY(cnt,
2*root,y,w);
    
else
        addY(cnt,
2*root+1,y,w);
    
return ;
}
void addX(int root,int x,int y,int w)
{
    treeX[root].sum 
+= w;
    addY(treeX[root].pos,
1,y,w);
    
if (treeX[root].l == treeX[root].r)
        
return ;
   
// puts("x");
    int mid = (treeX[root].l+treeX[root].r)/2;
    
if (x<=mid)
        addX(
2*root,x,y,w);
    
else
        addX(
2*root+1,x,y,w);
}

C鍜孋++寮卞晩錛岃鍐欎釜妯$増鐨勩?br />


wangs 2012-12-30 21:11 鍙戣〃璇勮
]]>
Trie鏍?/title><link>http://www.shnenglu.com/ArcTan/articles/187920.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Wed, 22 Aug 2012 01:26:00 GMT</pubDate><guid>http://www.shnenglu.com/ArcTan/articles/187920.html</guid><wfw:comment>http://www.shnenglu.com/ArcTan/comments/187920.html</wfw:comment><comments>http://www.shnenglu.com/ArcTan/articles/187920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ArcTan/comments/commentRss/187920.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ArcTan/services/trackbacks/187920.html</trackback:ping><description><![CDATA[<div><div class="0oa80my" id="blog_text"><p style="text-indent: 2em">Trie鏍戝氨鏄瓧絎︽爲錛屽叾鏍稿績鎬濇兂灝辨槸絀洪棿鎹㈡椂闂?/p> <p style="text-indent: 2em">涓句釜綆鍗曠殑渚嬪瓙銆?/p> <p style="text-indent: 2em">緇欎綘100000涓暱搴︿笉瓚呰繃10鐨勫崟璇嶃傚浜庢瘡涓涓崟璇嶏紝鎴戜滑瑕佸垽鏂粬鍑烘病鍑虹幇榪囷紝濡傛灉鍑虹幇浜嗭紝絎竴嬈″嚭鐜扮鍑犱釜浣嶇疆銆?/p> <p style="text-indent: 2em">榪欓褰撶劧鍙互鐢╤ash鏉ワ紝浣嗘槸鎴戣浠嬬粛鐨勬槸trie鏍戙傚湪鏌愪簺鏂歸潰瀹冪殑鐢ㄩ旀洿澶с傛瘮濡傝瀵逛簬鏌愪竴涓崟璇嶏紝鎴戣璇㈤棶瀹冪殑鍓嶇紑鏄惁鍑虹幇榪囥傝繖鏍穐ash灝變笉濂芥悶浜嗭紝鑰岀敤trie榪樻槸寰堢畝鍗曘?/p> <p style="text-indent: 2em">鐜板湪鍥炲埌渚嬪瓙涓紝濡傛灉鎴戜滑鐢ㄦ渶鍌葷殑鏂規硶錛屽浜庢瘡涓涓崟璇嶏紝鎴戜滑閮借鍘繪煡鎵懼畠鍓嶉潰鐨勫崟璇嶄腑鏄惁鏈?瀹冦傞偅涔堣繖涓畻娉曠殑澶嶆潅搴﹀氨鏄疧(n^2)銆傛樉鐒跺浜?00000鐨勮寖鍥撮毦浠ユ帴鍙椼傜幇鍦ㄦ垜浠崲涓濊礬鎯熾傚亣璁炬垜瑕佹煡璇㈢殑鍗曡瘝鏄痑bcd錛岄偅涔堝湪浠栧墠闈㈢殑鍗?璇嶄腑錛屼互b錛宑錛宒錛宖涔嬬被寮澶寸殑鎴戞樉鐒朵笉蹇呰冭檻銆傝屽彧瑕佹壘浠寮澶寸殑涓槸鍚﹀瓨鍦╝bcd灝卞彲浠ヤ簡銆傚悓鏍風殑錛屽湪浠寮澶翠腑鐨勫崟璇嶄腑錛屾垜浠彧瑕佽冭檻浠浣滀負 絎簩涓瓧姣嶇殑……榪欐牱涓涓爲鐨勬ā鍨嬪氨娓愭笎娓呮櫚浜?#8230;…</p> <p style="text-indent: 2em">鍋囪鏈塨錛宎bc錛宎bd錛宐cd錛宎bcd錛宔fg錛宧ii榪?涓崟璇嶏紝鎴戜滑鏋勫緩鐨勬爲灝辨槸榪欐牱鐨勩?/p> <p style="text-indent: 2em"> </p> <div> <p><a target="_blank" ><img src="http://epic.32o.cn/attachments/month_0707/z200777202049.JPG" border="0" alt="" /></a></p> <p style="text-indent: 2em">瀵逛簬姣忎竴涓妭鐐癸紝浠庢牴閬嶅巻鍒頒粬鐨勮繃紼嬪氨鏄竴涓崟璇嶏紝濡傛灉榪欎釜鑺傜偣琚爣璁頒負綰㈣壊錛屽氨琛ㄧず榪欎釜鍗曡瘝瀛樺湪錛屽惁鍒欎笉瀛樺湪銆?/p> <p style="text-indent: 2em">閭d箞錛屽浜庝竴涓崟璇嶏紝鎴戝彧瑕侀『鐫浠栦粠璺熻蛋鍒板搴旂殑鑺傜偣錛屽啀鐪嬭繖涓妭鐐規槸鍚﹁鏍囪涓虹孩鑹插氨鍙互鐭ラ亾瀹冩槸鍚﹀嚭鐜拌繃浜嗐傛妸榪欎釜鑺傜偣鏍囪涓虹孩鑹詫紝灝辯浉褰撲簬鎻掑叆浜嗚繖涓崟璇嶃?/p> <p style="text-indent: 2em">榪欐牱涓鏉ユ垜浠闂拰鎻掑叆鍙互涓璧峰畬鎴愶紝鎵鐢ㄦ椂闂翠粎浠呬負鍗曡瘝闀垮害錛屽湪榪欎竴涓牱渚嬶紝渚挎槸10銆?/p> <p style="text-indent: 2em">鎴戜滑鍙互鐪嬪埌錛宼rie鏍戞瘡涓灞傜殑鑺傜偣鏁版槸26^i綰у埆鐨勩傛墍浠ヤ負浜嗚妭鐪佺┖闂淬傛垜浠敤鍔ㄦ侀摼琛紝鎴栬呯敤鏁扮粍鏉ユā鎷熷姩鎬併傜┖闂寸殑鑺辮垂錛屼笉浼氳秴榪囧崟璇嶆暟×鍗曡瘝闀垮害銆?/p> </div></div></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_092522" onclick="this.style.display='none'; Code_Closed_Text_092522.style.display='none'; Code_Open_Image_092522.style.display='inline'; Code_Open_Text_092522.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" height="16" width="11" align="top"><img id="Code_Open_Image_092522" style="display: none" onclick="this.style.display='none'; Code_Open_Text_092522.style.display='none'; Code_Closed_Image_092522.style.display='inline'; Code_Closed_Text_092522.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" height="16" width="11" align="top"><span id="Code_Closed_Text_092522" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Code_Open_Text_092522" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include</span><span style="color: #000000; "><</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include</span><span style="color: #000000; "><</span><span style="color: #000000; ">math.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> MAX 26</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> TrieNode{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> cnt;<br />    </span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> TrieNode </span><span style="color: #000000; ">*</span><span style="color: #000000; ">next[MAX];<br />} Tree[</span><span style="color: #000000; ">10000</span><span style="color: #000000; ">];<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> tot </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /><br /></span><span style="color: #008000; ">/*</span><span style="color: #008000; ">鍒濆鍖?/span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> InitTrieRoot(TrieNode </span><span style="color: #000000; ">**</span><span style="color: #000000; ">pRoot)<br />{<br />    </span><span style="color: #000000; ">*</span><span style="color: #000000; ">pRoot </span><span style="color: #000000; ">=</span><span style="color: #000000; "> NULL;<br />}<br /><br /></span><span style="color: #008000; ">/*</span><span style="color: #008000; ">鍒涘緩鏂扮粨鐐?/span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />TrieNode </span><span style="color: #000000; ">*</span><span style="color: #000000; ">CreateTrieNode()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i;<br />    TrieNode </span><span style="color: #000000; ">*</span><span style="color: #000000; ">p;<br /><br />    p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">&</span><span style="color: #000000; ">Tree[tot</span><span style="color: #000000; ">++</span><span style="color: #000000; ">];<br />    p</span><span style="color: #000000; ">-></span><span style="color: #000000; ">cnt </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; "> ; i </span><span style="color: #000000; "><</span><span style="color: #000000; "> MAX ; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />    {<br />        p</span><span style="color: #000000; ">-></span><span style="color: #000000; ">next[i] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> NULL;<br />    }<br /><br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> p;<br />}<br /><br /></span><span style="color: #008000; ">/*</span><span style="color: #008000; ">鎻掑叆</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> InsertTrie(TrieNode </span><span style="color: #000000; ">**</span><span style="color: #000000; ">pRoot , </span><span style="color: #0000FF; ">char</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">s)<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i , k;<br />    TrieNode </span><span style="color: #000000; ">*</span><span style="color: #000000; ">p;<br /><br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">(p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">pRoot))<br />    {<br />        p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">pRoot </span><span style="color: #000000; ">=</span><span style="color: #000000; "> CreateTrieNode();<br />    }<br />    i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(s[i])<br />    {<br />        k </span><span style="color: #000000; ">=</span><span style="color: #000000; "> s[i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">] </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 style="color: #008000; ">//</span><span style="color: #008000; ">紜畾branch</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(p</span><span style="color: #000000; ">-></span><span style="color: #000000; ">next[k])<br />            p</span><span style="color: #000000; ">-></span><span style="color: #000000; ">next[k]</span><span style="color: #000000; ">-></span><span style="color: #000000; ">cnt</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />        </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />            p</span><span style="color: #000000; ">-></span><span style="color: #000000; ">next[k] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> CreateTrieNode();<br />        p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> p</span><span style="color: #000000; ">-></span><span style="color: #000000; ">next[k];<br />    }<br />}<br /><br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">鏌ユ壘</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> SearchTrie(TrieNode </span><span style="color: #000000; ">**</span><span style="color: #000000; ">pRoot , </span><span style="color: #0000FF; ">char</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">s)<br />{<br />    TrieNode </span><span style="color: #000000; ">*</span><span style="color: #000000; ">p;<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i , k;<br /><br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">(p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">pRoot))<br />    {<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    }<br />    i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(s[i])<br />    {<br />        k </span><span style="color: #000000; ">=</span><span style="color: #000000; "> s[i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">] </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; ">;<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(p</span><span style="color: #000000; ">-></span><span style="color: #000000; ">next[k] </span><span style="color: #000000; ">==</span><span style="color: #000000; "> NULL)    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />        p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> p</span><span style="color: #000000; ">-></span><span style="color: #000000; ">next[k];<br />    }<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> p</span><span style="color: #000000; ">-></span><span style="color: #000000; ">cnt;<br />}<br /><br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">char</span><span style="color: #000000; "> s[</span><span style="color: #000000; ">11</span><span style="color: #000000; ">];<br /><br />    TrieNode </span><span style="color: #000000; ">*</span><span style="color: #000000; ">Root </span><span style="color: #000000; ">=</span><span style="color: #000000; "> NULL;<br />    InitTrieRoot(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">Root);<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(gets(s) </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> s[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">])<br />    {<br />        InsertTrie(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">Root , s);<br />    }<br /><br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(gets(s) </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> s[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">])<br />    {<br />        printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, SearchTrie(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">Root , s));<br />    }<br /><br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></span></div><br /><br /><img src ="http://www.shnenglu.com/ArcTan/aggbug/187920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ArcTan/" target="_blank">wangs</a> 2012-08-22 09:26 <a href="http://www.shnenglu.com/ArcTan/articles/187920.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>poj 1182椋熺墿閾?騫舵煡闆嗙殑搴旂敤)http://www.shnenglu.com/ArcTan/articles/185248.htmlwangswangsThu, 26 Jul 2012 13:51:00 GMThttp://www.shnenglu.com/ArcTan/articles/185248.htmlhttp://www.shnenglu.com/ArcTan/comments/185248.htmlhttp://www.shnenglu.com/ArcTan/articles/185248.html#Feedback0http://www.shnenglu.com/ArcTan/comments/commentRss/185248.htmlhttp://www.shnenglu.com/ArcTan/services/trackbacks/185248.html
struct node{
      
int father;鏍硅妭鐐?br />      int relation;涓庢牴鑺傜偣鍏崇郴:0 鍚岀被錛?鍚冩牴鑺傜偣錛?琚悆
} line[maxn];

int find(int x)
{
      
if (x!=line[x].father)
      {
            
int tmp=line[x].father;
            line[x].father
=find(tmp);
            
//鎵捐寰嬶紝姹傚嚭鍏紡
            num[x]=(line[x].relation+line[tmp].relation) % 3;        
       }
      returen line[x].father;
}
void union(int x,int y,int d)
{
      
int fx=find(x);
      
int fy=find(y);
      line[fx].father
=fy;
       
//鎵捐寰嬶紝姹傚嚭鍏紡
      line[fx].relation=(line[y].relation-line[x].relation+2+d) % 3;    
      
return ;
}

Thinking && Coding錛侊紒錛?br />
#include <cstdio>
#include 
<cstdlib>
#include 
<cstring>
#include 
<cmath>
#include 
<ctime>
#include 
<cassert>
#include 
<iostream>
#include 
<sstream>
#include 
<fstream>
#include 
<map>
#include 
<set>
#include 
<vector>
#include 
<queue>
#include 
<algorithm>
#define min(x,y) (x<y?x:y)
#define max(x,y) (x>y?x:y)
#define swap(t,x,y) (t=x,x=y,y=t)
#define clr(list) memset(list,0,sizeof(list))
#define maxn 50005
using namespace std;
int father[maxn];
int num[maxn];
int find(int x)
{
    
if (x!=father[x])
    {
        
int tmp=father[x];
        father[x]
=find(father[x]);
        num[x]
=(num[x]+num[tmp]) % 3;
    }
    
return father[x];
}
void union_set(int x,int y,int d)
{
    
int fx=find(x);
    
int fy=find(y);
    father[fx]
=fy;
    num[fx]
=(num[y]-num[x]+2+d) % 3;
    
return ;
}
int main()
{
    
int n,m;
    scanf(
"%d%d",&n,&m);

    
int ans=0;
    
int flag=0;
    
for (int i=1; i<=n; i++)
        father[i]
=i,num[i]=0;
    
for (int i=1; i<=m; i++)
    {
        
int d,x,y;
        scanf(
"%d%d%d",&d,&x,&y);
        
if (x>|| y>n)
        {
            ans
++;
            
continue;
        }
        
if (d==2 && x==y)
        {
            ans
++;
            
continue;
        }
        
int fx=find(x);
        
int fy=find(y);
        
if (d==2 && fx==fy)
        {
            
if ((num[x]-num[y]+3)%3!=1)
                ans
++;
            
continue;
        }
        
if (d==1 && fx==fy && num[x]!=num[y])
        {
            ans
++;
            
continue;
        }
        union_set(x,y,d);
    }
    printf(
"%d\n",ans);
    
return 0;
}







wangs 2012-07-26 21:51 鍙戣〃璇勮
]]>
騫舵煡闆嗗熀紜鍜岀殑搴旂敤http://www.shnenglu.com/ArcTan/articles/185217.htmlwangswangsThu, 26 Jul 2012 11:28:00 GMThttp://www.shnenglu.com/ArcTan/articles/185217.htmlhttp://www.shnenglu.com/ArcTan/comments/185217.htmlhttp://www.shnenglu.com/ArcTan/articles/185217.html#Feedback0http://www.shnenglu.com/ArcTan/comments/commentRss/185217.htmlhttp://www.shnenglu.com/ArcTan/services/trackbacks/185217.html   騫舵煡闆嗭紝騫茬殑灝辨槸“騫?#8221;鍜?#8220;鏌?#8221;涓や歡浜嬨傚緢澶氫笌闆嗗悎鐩稿叧鐨勬搷浣滈兘鍙互鐢ㄥ茍鏌ラ泦楂樻晥鐨勮В鍐熾?br />
       int Find(int x)
       {
          if (tree[x].parent != x)
          {
              tree[x].parent = Find(tree[x].parent);
          }
          return tree[x].parent;
       }

       void Merge(int a, int b, int p, int q, int d)
       {
          if (tree[q].depth > tree[p].depth) tree[p].parent = q;
          else
          {
              tree[q].parent = p;
              if (tree[p].depth == tree[q].depth) tree[p].depth++;
          }
       }


       鍏朵腑Find()鍑芥暟鐢ㄤ簡璺緞鍘嬬緝浼樺寲錛岃孧erge()鍑芥暟鐢ㄤ簡鍚彂寮忓悎騫剁殑浼樺寲(涓漢鎰熻鏈変簡璺緞鍘嬬緝錛屽惎鍙戝紡鍚堝茍浼樺寲鐨勬晥鏋滃茍涓嶆槑鏄撅紝鑰岀粡甯稿洜涓洪鐩拰浠g爜鐨勯檺鍒訛紝鍚彂寮忓悎騫朵細琚垜浠渷鐣?銆?/div>
      鏈変釜闂錛屽浣曟眰鑺傜偣鍒拌窡鑺傜偣鐨勮窛紱伙紵

 

wangs 2012-07-26 19:28 鍙戣〃璇勮
]]>poj 3468 綰挎鏍?/title><link>http://www.shnenglu.com/ArcTan/articles/184993.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Wed, 25 Jul 2012 02:54:00 GMT</pubDate><guid>http://www.shnenglu.com/ArcTan/articles/184993.html</guid><wfw:comment>http://www.shnenglu.com/ArcTan/comments/184993.html</wfw:comment><comments>http://www.shnenglu.com/ArcTan/articles/184993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ArcTan/comments/commentRss/184993.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ArcTan/services/trackbacks/184993.html</trackback:ping><description><![CDATA[<a ><a></a></a><a >http://poj.org/problem?id=3468</a><br /><br />綰挎鏁扮殑鏋勯狅紝鏌ヨ錛屼慨鏀癸紒<br />struct node{<br />   int l,r,m;<br />   long long sum;//褰撳墠鍖洪棿鐨勫拰<br />   long long add;//鍖洪棿闇瑕佸姞涓婄殑鏁板?br />}<br /><br />棰樻剰錛?br />      緇欏畾n涓暟瀛桝1,A2,..,An錛孮涓搷浣溿?br />      C x y z,鎶婂尯闂磝 y鍐呯殑鏁伴兘鍔犱笂z<br />      Q x y錛屾眰鍖洪棿x y鍐呮墍鏈夋暟鐨勫拰銆?br />鎬葷粨錛?br />      鍩虹浠g爜涓瀹氳瀵癸紝璋冭瘯浜嗗崐澶╋紝鏈鍚庡彂鐜版槸swap(x,y,t)鍐欓敊浜嗭紒錛侊紒錛?br />      WA浜嗕竴嬈★紝鏁版嵁鏄痩ong long鎵嶈錛岃鍒嗘瀽娓呮鏁版嵁鑼冨洿錛侊紒錛?br /><div><img src="data:image/png;base64,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" alt="" /></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstdlib</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">ctime</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cassert</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">sstream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">fstream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">map</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #0000FF; ">set</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">vector</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">queue</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> min(x,y) (x<y?x:y)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> max(x,y) (x>y?x:y)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> swap(x,y,t) (t=x,x=y,y=t)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> clr(list) memset(list,0,sizeof(list))</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> LL long long</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> maxn 200005</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> std;<br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> node{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> l,r,m;<br />    LL sum;<br />    LL add;<br />} tree[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">maxn];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> a[maxn];<br />LL build(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> l,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> r,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> root)<br />{<br />    tree[root].l</span><span style="color: #000000; ">=</span><span style="color: #000000; ">l;<br />    tree[root].r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">r;<br />    tree[root].m</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">r)</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />    tree[root].add</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (l</span><span style="color: #000000; ">==</span><span style="color: #000000; ">r)<br />    {<br />        tree[root].sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[l];<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> tree[root].sum;<br />    }<br />    </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> sum_l</span><span style="color: #000000; ">=</span><span style="color: #000000; ">build(l,(l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">r)</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />    </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> sum_r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">build((l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">r)</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,r,root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />    tree[root].sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum_l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">sum_r;<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> tree[root].sum;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> insert(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> l,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> r,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> add,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> root)<br />{<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (l</span><span style="color: #000000; "><=</span><span style="color: #000000; ">tree[root].l </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> r</span><span style="color: #000000; ">>=</span><span style="color: #000000; ">tree[root].r)<br />    {<br />        tree[root].add</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">add;<br />        tree[root].sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">add </span><span style="color: #000000; ">*</span><span style="color: #000000; "> (tree[root].r</span><span style="color: #000000; ">-</span><span style="color: #000000; ">tree[root].l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    }<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (tree[root].add) </span><span style="color: #008000; ">//</span><span style="color: #008000; ">鍚戜笅鏇存柊</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    {<br />        tree[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root].sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">tree[root].add </span><span style="color: #000000; ">*</span><span style="color: #000000; "> (tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">].r</span><span style="color: #000000; ">-</span><span style="color: #000000; ">tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">].l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />        tree[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root].add</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">tree[root].add;<br />        tree[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">tree[root].add </span><span style="color: #000000; ">*</span><span style="color: #000000; "> (tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].r</span><span style="color: #000000; ">-</span><span style="color: #000000; ">tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />        tree[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].add</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">tree[root].add;<br />        tree[root].add</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    }<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (l</span><span style="color: #000000; "><=</span><span style="color: #000000; ">tree[root].m)<br />        insert(l,r,add,root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (r</span><span style="color: #000000; ">></span><span style="color: #000000; ">tree[root].m)<br />        insert(l,r,add,root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />    tree[root].sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">].sum</span><span style="color: #000000; ">+</span><span style="color: #000000; ">tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].sum;   </span><span style="color: #008000; ">//</span><span style="color: #008000; ">榪欓噷鍥炴函鍟?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br />LL search(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> l,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> r,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> root)<br />{<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (l</span><span style="color: #000000; "><=</span><span style="color: #000000; ">tree[root].l </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> r</span><span style="color: #000000; ">>=</span><span style="color: #000000; ">tree[root].r)<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> tree[root].sum;<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (tree[root].add)  </span><span style="color: #008000; ">//</span><span style="color: #008000; ">鍚戜笅鏇存柊</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    {<br />        tree[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root].sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">tree[root].add </span><span style="color: #000000; ">*</span><span style="color: #000000; "> (tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">].r</span><span style="color: #000000; ">-</span><span style="color: #000000; ">tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">].l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />        tree[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root].add</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">tree[root].add;<br />        tree[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">tree[root].add </span><span style="color: #000000; ">*</span><span style="color: #000000; "> (tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].r</span><span style="color: #000000; ">-</span><span style="color: #000000; ">tree[root</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />        tree[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].add</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">tree[root].add;<br />        tree[root].add</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    }<br />    LL sum_l</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,sum_r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (l</span><span style="color: #000000; "><=</span><span style="color: #000000; ">tree[root].m)<br />        sum_l</span><span style="color: #000000; ">=</span><span style="color: #000000; ">search(l,r,</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root);<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (r</span><span style="color: #000000; ">></span><span style="color: #000000; ">tree[root].m)<br />        sum_r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">search(l,r,</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> sum_l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">sum_r;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> n,m;<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> x,y,z;<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> tmp;<br />    </span><span style="color: #0000FF; ">char</span><span style="color: #000000; "> ch;<br />    scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">n,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">m);<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; "><=</span><span style="color: #000000; ">n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        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; ">&</span><span style="color: #000000; ">a[i]);<br />    build(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,n,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br /><br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; "><=</span><span style="color: #000000; ">m;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />    {<br />        scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\n%c</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">ch);<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (ch</span><span style="color: #000000; ">==</span><span style="color: #000000; ">'</span><span style="color: #000000; ">C</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)<br />        {<br />            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; ">&</span><span style="color: #000000; ">x,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">y,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">z);<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (x</span><span style="color: #000000; ">></span><span style="color: #000000; ">y)<br />                swap(x,y,tmp);<br />            insert(x,y,z,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />        }<br />        </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />        {<br />            scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">x,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">y);<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (x</span><span style="color: #000000; ">></span><span style="color: #000000; ">y)<br />                swap(x,y,tmp);<br />            printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%I64d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,search(x,y,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">));<br />        }<br />    }<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></div><br /><br /><img src ="http://www.shnenglu.com/ArcTan/aggbug/184993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ArcTan/" target="_blank">wangs</a> 2012-07-25 10:54 <a href="http://www.shnenglu.com/ArcTan/articles/184993.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>hdu 2419 (STL錛歴et multiset)http://www.shnenglu.com/ArcTan/articles/183352.htmlwangswangsSat, 14 Jul 2012 05:08:00 GMThttp://www.shnenglu.com/ArcTan/articles/183352.htmlhttp://www.shnenglu.com/ArcTan/comments/183352.htmlhttp://www.shnenglu.com/ArcTan/articles/183352.html#Feedback0http://www.shnenglu.com/ArcTan/comments/commentRss/183352.htmlhttp://www.shnenglu.com/ArcTan/services/trackbacks/183352.html宸窛澶ぇ錛屽ソ濂藉姫鍔涘惂錛侊紒錛?br />
綆楁硶錛屾暟鎹粨鏋勶紝C++錛孲TL銆傞渶瑕佸幓瀛︾殑鍟婏紝涓嬪崍寮濮嬪鍚у鍚?br />
鍥劇殑鎿嶄綔錛屼嬌鐢ㄩ泦鍚堟潵緇存姢錛屾妸鎿嶄綔搴忓垪鍊掕繃鏉ョ湅錛屽壊杈瑰垯鐪嬪仛涓や釜闆嗗悎鐨勫悎騫躲?br />
STL 鐨剆et鍜宮ultiset 寰堝己澶у晩錛岀涓鐢⊿TL鍐欎笢瑗?br />
wangs ,浣犺鍔姏浜嗭紝澶х墰涔嬭礬錛岃繙鐫鍛€?br />
#include <cstdlib>
#include 
<cctype>
#include 
<cstring>
#include 
<cstdio>
#include 
<cmath>
#include 
<algorithm>
#include 
<vector>
#include 
<string>
#include 
<iostream>
#include 
<sstream>
#include 
<map>
#include 
<set>
#include 
<queue>
#include 
<stack>
#include 
<fstream>
#include 
<numeric>
#include 
<iomanip>
#include 
<bitset>
#include 
<list>
#include 
<stdexcept>
#include 
<functional>
#include 
<utility>
#include 
<ctime>
#include 
<cmath>
#include 
<climits>

using namespace std;

typedef pair
<intint> PII;
const int MAXN = 20010, MAXM = 60010, MAXQ = 300010;
int value[MAXN], query[MAXQ][3];
multiset
<PII> e;
multiset
<int> v[MAXN];
int pre[MAXN];

int root(int a)
{
    
if(pre[a] != a)
        pre[a] 
= root(pre[a]);
    
return pre[a];
}

int unionSet(int a, int b)
{
    multiset
<int>::iterator it;
    a 
= root(a), b = root(b);
    
if(a == b)
        
return 0;
    
if(v[a].size() > v[b].size())
        swap(a, b);
    
for    (it = v[a].begin(); it != v[a].end(); it++)
        v[b].insert(
*it);
    v[a].clear();
    pre[a] 
= b;
    
return 0;
}

int update(int a, int x)
{
    
int ta = a;
    a 
= root(a);
    v[a].erase(v[a].find(value[ta]));
    v[a].insert(x);
    value[ta] 
= x;
    
return 0;
}

int main()
{
    
int n, m, q;
    
int a, b;
    
int i,u;
    
int cas=0;
    
char ch[3];
    
double ct = 0, sum = 0;
    multiset
<PII>::iterator it;
    multiset
<int>::iterator tp;
    
while(scanf("%d%d%d",&n,&m,&q)==3)
    {
        e.clear();
        
for (i = 1; i <= n; i++)
            v[i].clear();

        
for (i = 1; i <= n; i++)
        {
            scanf(
"%d"&value[i]);
            pre[i] 
= i;
        }
        
for (i = 0; i < m; i++)
        {
            scanf(
"%d%d"&a, &b);
            
if(a > b)
                swap(a, b);
            e.insert(PII(a, b));
        }

        
for (i = 0; i < q; i++)
        {
            scanf(
"%s"&ch);
            scanf(
"%d%d"&query[i][1], &query[i][2]);

            query[i][
0= ch[0];
            
if(ch[0== 'E')
            {
                
if(query[i][1> query[i][2])
                    swap(query[i][
1], query[i][2]);

                it 
= e.find(PII(query[i][1], query[i][2]));
                e.erase(it);
            }
            
else if(ch[0== 'U')
                swap(value[query[i][
1]], query[i][2]);
        }

        
for (i = 1; i <= n; i++)
            v[i].insert(value[i]);
        
for (it = e.begin(); it != e.end(); it++)
            unionSet(it
->first, it->second);

   
//     for (it = e.begin(); it != e.end(); it++)
    
//        printf("%d %d\n",it->first, it->second);

        ct
=0;
        sum
=0;

        
for(int i = q - 1; i >= 0; i--)
        {
            
if(query[i][0== 'E')
                unionSet(query[i][
1], query[i][2]);
            
else if(query[i][0== 'U')
                update(query[i][
1], query[i][2]);
            
else
            {
                ct 
+= 1;
                u 
= root(query[i][1]);
                tp 
= v[u].lower_bound(query[i][2]);
                
if(tp != v[u].end())
                    sum 
+= *tp;
          
//      printf("%d %d\n",u,*tp);
            }
        }
        printf(
"Case %d: %0.3lf\n",++cas,(double)sum/ct);
    }
    
return 0;
}


wangs 2012-07-14 13:08 鍙戣〃璇勮
]]>
poj2832(鍗曡皟闃熷垪)----鍘熸潵灝辨槸璐績鍟婏紒錛侊紒http://www.shnenglu.com/ArcTan/articles/172774.htmlwangswangsWed, 25 Apr 2012 14:48:00 GMThttp://www.shnenglu.com/ArcTan/articles/172774.htmlhttp://www.shnenglu.com/ArcTan/comments/172774.htmlhttp://www.shnenglu.com/ArcTan/articles/172774.html#Feedback0http://www.shnenglu.com/ArcTan/comments/commentRss/172774.htmlhttp://www.shnenglu.com/ArcTan/services/trackbacks/172774.html
windows,鎵懼嚭鍖洪棿鐨勬渶澶ф渶灝忓厓绱狅紝鍗曡皟闃熷垪鐨勭粡鍏稿簲鐢ㄥ槢銆?br />搴旇璇達紝璐績鐨勬濇兂錛屾柟娉曪紝鍗曡皟闃熷垪鏄疄鐜扮殑鎶鏈墠濂藉惂銆?br />poj2832
涓嬈C錛岃澶氱悊瑙i棶棰樼殑鏈川鍟婏紒錛侊紒
#include<stdio.h>
#include
<string.h>
#include
<math.h>
int n,k;
int a[1000005],q[1000005];
int main()
{
    
int i,head,tail;
    printf(
"%d\n",(30<<1)*3);
    
while (scanf("%d%d",&n,&k)==2)
    {
        
for (i=1; i<=n ; i++)
            scanf(
"%d",&a[i]);
        head
=1;
        tail
=0;
        memset(q,
0,sizeof(q));
        
for (i=1; i<=n ; i++ )
        {
            
while (head<=tail&&a[q[tail]]>=a[i])
                tail
--;
            tail
++;
            q[tail]
=i;
            
while (q[head]<=i-k)
                head
++;
            
if (i>=k)
                printf(
"%d ",a[q[head]]);
        }
        printf(
"\n");
        head
=1;
        tail
=0;
        memset(q,
0,sizeof(q));
        
for (i=1; i<=n ; i++ )
        {
            
while (head<=tail&&a[q[tail]]<=a[i])
                tail
--;
            tail
++;
            q[tail]
=i;
            
while (q[head]<=i-k)
                head
++;
            
if (i>=k)
                printf(
"%d ",a[q[head]]);
        }
        printf(
"\n");
    }
    
return 0;
}
棰濓紝榪欎釜pascal鐨勪唬鐮佸ソ鐔熸倝鍟婏細
var
  n
,k,i,head,tail:longint;
  a,q:array[0..1000001] of longint;

begin
  readln(n
,k);
  for i:=1 to n do
    read(a
[i]);
  head:=1;tail:=0;
  for i:=1 to n do
    begin
      while (head<
=tail) and (a[q[tail]]>=a[i]) do dec(tail);
      inc(tail);
      q[tail]:=i;
      while q[head]<=i-k do inc(head);
      if i>=k then write(a[q[head]],' ');
    end;
  writeln;
  fillchar(q,sizeof(q),0);
  head:=1;tail:=0;
  for i:=1 to n do
    begin
      while (head<
=tail) and (a[q[tail]]<=a[i]) do dec(tail);
      inc(tail);
      q[tail]:=i;
      while q[head]<=i-k do inc(head);
      if i>=k then write(a[q[head]],' ');
    end;
  writeln;
end.
灞呯劧鑳芥病鏈塸ascal???




wangs 2012-04-25 22:48 鍙戣〃璇勮
]]>
poj 2082(鍗曡皟鏍?鏁板鍛蟲湁鐐歸噸鍝?/title><link>http://www.shnenglu.com/ArcTan/articles/172662.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Tue, 24 Apr 2012 13:06:00 GMT</pubDate><guid>http://www.shnenglu.com/ArcTan/articles/172662.html</guid><wfw:comment>http://www.shnenglu.com/ArcTan/comments/172662.html</wfw:comment><comments>http://www.shnenglu.com/ArcTan/articles/172662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ArcTan/comments/commentRss/172662.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ArcTan/services/trackbacks/172662.html</trackback:ping><description><![CDATA[<div>poj 2082<br />     榪欎釜棰樼洰姣旇緝鍧戠埞錛岀畝鍗曠殑闂璁╀粬緇欏彊榪扮殑娣卞ゥ鏃犳瘮錛侊籍錛幫紒錛侊紒錛佹暟瀛︾悊瑙h兘鍔涘綋鐒墮噸瑕佸晩錛?br />銆銆鎼炴竻棰樻剰鍚庯紝鎯沖埌鐨勫氨鏄激錛頒簡錛屾劅瑙夋湁涓洓杈瑰艦涓嶇瓑寮忓湪閲岄潰鍙互鐢ㄣ傘傘傝椽蹇冩硶搴旇涔熸槸姝g‘鐨勫晩錛屼笉榪囦竴鐩達擠錛★紝涔熶笉鐭ラ亾鎬庝箞鍥炰簨銆傝濂藉ソ鐮旂┒鐮旂┒鍗曡皟鏍堬紝鍗曡皟闃熷垪浜嗐傘傘傘傚憸鍛滃憸鍖?br />銆銆錛鳳肌浜嗘棤鏁版錛屽崟璋冩爤涓嬈★肌錛o紒<br /><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include</span><span style="color: #000000; "><</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include</span><span style="color: #000000; "><</span><span style="color: #000000; ">math.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> n;<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> stack[</span><span style="color: #000000; ">50005</span><span style="color: #000000; ">],pos[</span><span style="color: #000000; ">50005</span><span style="color: #000000; ">],sum;<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> ans,w,h;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i,top;<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (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; ">&</span><span style="color: #000000; ">n)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&&</span><span style="color: #000000; ">n</span><span style="color: #000000; ">!=-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />    {<br />        sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;top</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; "><=</span><span style="color: #000000; ">n ;i</span><span style="color: #000000; ">++</span><span style="color: #000000; "> )<br />        {<br />            scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%I64d%I64d</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; ">h);<br />            <br />            </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (top</span><span style="color: #000000; ">></span><span style="color: #000000; ">0</span><span style="color: #000000; ">&&</span><span style="color: #000000; ">h</span><span style="color: #000000; "><=</span><span style="color: #000000; ">stack[top])<br />            {<br />                </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (ans</span><span style="color: #000000; "><</span><span style="color: #000000; ">(sum</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pos[top</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; ">stack[top])<br />                    ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(sum</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pos[top</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; ">stack[top];<br />                top</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />            }<br />            sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">w;<br />            top</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />            stack[top]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">h;<br />            pos[top]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum;<br />        }<br />        </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (top</span><span style="color: #000000; ">></span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />        {<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (ans</span><span style="color: #000000; "><</span><span style="color: #000000; ">(sum</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pos[top</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; ">stack[top])<br />                ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(sum</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pos[top</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; ">stack[top];<br />            top</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />        }<br />        printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%I64d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,ans);<br />    }<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}</span></div><span style="color: #000000; "></span></div></div><img src ="http://www.shnenglu.com/ArcTan/aggbug/172662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ArcTan/" target="_blank">wangs</a> 2012-04-24 21:06 <a href="http://www.shnenglu.com/ArcTan/articles/172662.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>poj3250(鍗曡皟鏍堝崟璋冮槦鍒?--http://www.shnenglu.com/ArcTan/articles/172657.htmlwangswangsTue, 24 Apr 2012 12:57:00 GMThttp://www.shnenglu.com/ArcTan/articles/172657.htmlhttp://www.shnenglu.com/ArcTan/comments/172657.htmlhttp://www.shnenglu.com/ArcTan/articles/172657.html#Feedback0http://www.shnenglu.com/ArcTan/comments/commentRss/172657.htmlhttp://www.shnenglu.com/ArcTan/services/trackbacks/172657.html
http://hi.baidu.com/oichampion/blog/item/ed51694a0e1256d9d1c86ae4.html

榪欎釜棰樼洰錛鳳肌浜嗕竴涓嬪崍浜嗭紝鍝庡搸錛屽緱鐮旂┒鐮旂┒鍗曡皟鏍堝拰鍗曡皟闃熷垪鍘伙紒
鎬葷粨錛氬鍙戠幇闂鐨勬湰璐ㄣ?br />鏁板鏈川錛侊紒錛?br />
#include<stdio.h>
#include
<string.h>
#include
<math.h>
long long stack[80008];
int main()
{
    
int i,n,top;
    
long long x,ans;
    
while (scanf("%d",&n)==1)
    {
        top
=0;ans=0;
        
for (i=1; i<=n ; i++ )
        {
            scanf(
"%I64d",&x);
            
while (top&&x>=stack[top])
                top
--;
            ans
+=top;
            top
++;
            stack[top]
=x;
        }
        printf(
"%I64d\n",ans);
    }
    
return 0;
}


wangs 2012-04-24 20:57 鍙戣〃璇勮
]]>
poj 3494錛堝崟璋冩爤-姹傜煩闃甸潰縐級鏁版嵁鍘嬬緝鎶宸?/title><link>http://www.shnenglu.com/ArcTan/articles/172625.html</link><dc:creator>wangs</dc:creator><author>wangs</author><pubDate>Tue, 24 Apr 2012 09:07:00 GMT</pubDate><guid>http://www.shnenglu.com/ArcTan/articles/172625.html</guid><wfw:comment>http://www.shnenglu.com/ArcTan/comments/172625.html</wfw:comment><comments>http://www.shnenglu.com/ArcTan/articles/172625.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ArcTan/comments/commentRss/172625.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ArcTan/services/trackbacks/172625.html</trackback:ping><description><![CDATA[棰濓紝浠婂ぉ鐨勬剰澶栨敹鑾峰氨鏄崟璋冩爤銆?br />榪樻湁涓崟璋冮槦鍒楋紝寰楃湅鐪嬩簡錛?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include</span><span style="color: #000000; "><</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include</span><span style="color: #000000; "><</span><span style="color: #000000; ">math.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> n,m;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> a[</span><span style="color: #000000; ">2005</span><span style="color: #000000; ">],stack[</span><span style="color: #000000; ">2005</span><span style="color: #000000; ">],pos[</span><span style="color: #000000; ">2005</span><span style="color: #000000; ">],ans;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> GetAns()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i,top;<br />    top</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    stack[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">pos[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">; i</span><span style="color: #000000; "><=</span><span style="color: #000000; ">n ; i</span><span style="color: #000000; ">++</span><span style="color: #000000; "> )<br />    {<br />        </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (top</span><span style="color: #000000; ">&&</span><span style="color: #000000; ">a[i]</span><span style="color: #000000; "><=</span><span style="color: #000000; ">stack[top])<br />        {<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (ans</span><span style="color: #000000; "><</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pos[top</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; ">stack[top])<br />                ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pos[top</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; ">stack[top];<br />            top</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />        }<br />        top</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />        stack[top]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[i];<br />        pos[top]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;<br />    }<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (top)<br />    {<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (ans</span><span style="color: #000000; "><</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pos[top</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; ">stack[top])<br />            ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pos[top</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; ">stack[top];<br />        top</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />    }<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i,j,x;<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">m,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">n)</span><span style="color: #000000; ">==</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)<br />    {<br />        memset(a,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(a));<br />        ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">; i</span><span style="color: #000000; "><=</span><span style="color: #000000; ">m ; i</span><span style="color: #000000; ">++</span><span style="color: #000000; "> )<br />        {<br />            </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">; j</span><span style="color: #000000; "><=</span><span style="color: #000000; ">n ; j</span><span style="color: #000000; ">++</span><span style="color: #000000; "> )<br />            {<br />                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; ">&</span><span style="color: #000000; ">x);<br />                </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (x)<br />                    a[j]</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />                </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />                    a[j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />            }<br />            GetAns();<br />        }<br />        printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,ans);<br />    }<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></div><br />sdu鐨勬紲炶鐨刾oj3050璇ョ湅鐪嬩簡錛?img src ="http://www.shnenglu.com/ArcTan/aggbug/172625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ArcTan/" target="_blank">wangs</a> 2012-04-24 17:07 <a href="http://www.shnenglu.com/ArcTan/articles/172625.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>poj 2796(鍗曡皟鏍?榪炵畫鍜屾渶澶?http://www.shnenglu.com/ArcTan/articles/172623.htmlwangswangsTue, 24 Apr 2012 08:53:00 GMThttp://www.shnenglu.com/ArcTan/articles/172623.htmlhttp://www.shnenglu.com/ArcTan/comments/172623.htmlhttp://www.shnenglu.com/ArcTan/articles/172623.html#Feedback0http://www.shnenglu.com/ArcTan/comments/commentRss/172623.htmlhttp://www.shnenglu.com/ArcTan/services/trackbacks/172623.html
榪欎釜涓嶆槸special judge涔堬紵
鎬葷粨錛氫互鍚庤棰樿璇繪竻妤氾紝鐞嗚В鏄庣櫧錛屼笉鑳芥湁姝т箟鍟婏紒
#include<stdio.h>
#include
<string.h>
#include
<math.h>
int pos[100005],n;
long long stack[100005],sum[100005];
int main()
{
    
int i,s,t,top;
    
long long a,ans;
    
while (scanf("%d",&n)==1)
    {
        top
=0;stack[0]=0;pos[0]=0;sum[0]=0;
        ans
=0;s=t=0;
        
for (i=1;i<=n ;i++ )
        {
            scanf(
"%I64d",&a);
            sum[i]
=sum[i-1]+a;
            
while (top&&a<=stack[top])
            {
                
if (ans<(sum[i-1]-sum[pos[top-1]])*stack[top])
                {
                    ans
=(sum[i-1]-sum[pos[top-1]])*stack[top];
                    s
=pos[top-1]+1;t=i-1;
                }
                top
--;
            }
            top
++;
            stack[top]
=a;
            pos[top]
=i;
        }
        
while (top)
        {
            
if (ans<=(sum[n]-sum[pos[top-1]])*stack[top])  //榪欓噷鏄?lt;=鎵嶈繃鐨勶紝涓嶆槸special judge涔堬紵鎬庝箞鍥炰簨鍛紝寰楀ソ濂界湅鎳傞鐩晩錛?/span>
            {
                ans
=(sum[n]-sum[pos[top-1]])*stack[top];
                s
=pos[top-1]+1;t=n;
            }
            top
--;
        }
        printf(
"%I64d\n%d %d\n",ans,s,t);
    }
    
return 0;
}

紿佺劧鍙戠幇鑷繁鍠滄鍐欏崟璋冩爤浜嗭紝鍛靛懙錛岃繖涓笓棰樺ソ涓滆タ銆?br />鎰熻阿sdu鐨勫濂囩鎻愪緵緇冧範涓撻錛侊紒錛丱RZ




wangs 2012-04-24 16:53 鍙戣〃璇勮
]]>
poj1694(鍗曡皟鏍?姹傜煩褰㈡渶澶ч潰縐?http://www.shnenglu.com/ArcTan/articles/172613.htmlwangswangsTue, 24 Apr 2012 07:32:00 GMThttp://www.shnenglu.com/ArcTan/articles/172613.htmlhttp://www.shnenglu.com/ArcTan/comments/172613.htmlhttp://www.shnenglu.com/ArcTan/articles/172613.html#Feedback0http://www.shnenglu.com/ArcTan/comments/commentRss/172613.htmlhttp://www.shnenglu.com/ArcTan/services/trackbacks/172613.html瀛楃涓茶鍏ヨ繕鏄湁闂鍟婏紝榪欎釜涓嶈錛屽緱鐪嬫竻妤氳緭鍏ュ悗鍦ㄥ啓錛?br />涓嬈★肌錛o細
#include<stdio.h>
#include
<string.h>
#include
<math.h>
int n,m,ans;
int a[1005],stack[1005],pos[1005];
int GetAns()
{
    
int i,top;
    top
=0;
    stack[
0]=pos[0]=0;
    
for (i=1;i<=n ;i++ )
    {
        
while (top>0&&a[i]<=stack[top])
        {
            
if (ans<(i-1-pos[top-1])*stack[top])
                ans
=(i-1-pos[top-1])*stack[top];
            top
--;
        }
        top
++;
        stack[top]
=a[i];
        pos[top]
=i;
    }
    
while (top>0)
    {
        
if (ans<(n-pos[top-1])*stack[top])
            ans
=(n-pos[top-1])*stack[top];
        top
--;
    }
}
int main()
{
    
int cas,i,j;
    
char ch[2];
    scanf(
"%d",&cas);
    
while (cas--)
    {
        memset(a,
0,sizeof(a));
        ans
=0;
        scanf(
"%d%d",&m,&n);
        
for (i=0;i<m ;i++ )
        {
            
for (j=1;j<=n ;j++ )
            {
                scanf(
"%s",&ch);
                
if (ch[0]=='F')
                    a[j]
++;
                
else
                    a[j]
=0;
            }
            GetAns();
        }
        printf(
"%d\n",3*ans);
    }
    
return 0;
}
鍔犳補鍟婏紝鍔犳補錛?img src ="http://www.shnenglu.com/ArcTan/aggbug/172613.html" width = "1" height = "1" />

wangs 2012-04-24 15:32 鍙戣〃璇勮
]]>
poj 2559 poj 2082(鍗曡皟鏍?http://www.shnenglu.com/ArcTan/articles/172602.htmlwangswangsTue, 24 Apr 2012 06:53:00 GMThttp://www.shnenglu.com/ArcTan/articles/172602.htmlhttp://www.shnenglu.com/ArcTan/comments/172602.htmlhttp://www.shnenglu.com/ArcTan/articles/172602.html#Feedback0http://www.shnenglu.com/ArcTan/comments/commentRss/172602.htmlhttp://www.shnenglu.com/ArcTan/services/trackbacks/172602.html鍗曡皟鏍堟槸涓ソ涓滆タ錛屽鎴戝幓鐪嬬湅鍟婏紒
poj 2559
鎬葷粨錛歭ong long綾誨瀷錛岃鍜宨nt鍖哄垎寮鏉ワ紝杈撳嚭鏍煎紡鐢?%I64d"銆?br />        鏁版嵁緇撴瀯璇ョ湅鐪嬩簡銆?br />        鑷繁澶氬垎鏋愬垎鏋愩?br />鍐欏畬涓嬈″氨AC浜嗭紝涔嬪墠鐨勮椽蹇冧竴鐩撮兘WA鍛€傚洤……
#include<stdio.h>
#include
<string.h>
#include
<math.h>
int n,pos[100005];
long long stack[100005];
int main()
{
    
int i,top;
    
long long a,ans;
    
while (scanf("%d",&n)==1&&n)
    {
        top
=0;ans=0;
        stack[top]
=0;pos[top]=0;
        
for (i=1 ;i<=n ;i++ )
        {
            scanf(
"%I64d",&a);
            
while (top>0&&a<=stack[top])
            {
                
if (ans<(long long)(i-1-pos[top-1])*stack[top])  
                    ans
=(long long)(i-1-pos[top-1])*stack[top];
                top
--;
            }
            top
++;
            stack[top]
=a;
            pos[top]
=i;
        }
        
while (top>0)
        {
            
if (ans<(long long)(n-pos[top-1])*stack[top])
                ans
=(long long)(n-pos[top-1])*stack[top];
            top
--;
        }
        printf(
"%I64d\n",ans);
    }
    
return 0;
}

poj 2082
     榪欎釜棰樼洰姣旇緝鍧戠埞錛岀畝鍗曠殑闂璁╀粬緇欏彊榪扮殑娣卞ゥ鏃犳瘮錛侊籍錛幫紒錛侊紒錛佹暟瀛︾悊瑙h兘鍔涘綋鐒墮噸瑕佸晩錛?br />銆銆鎼炴竻棰樻剰鍚庯紝鎯沖埌鐨勫氨鏄激錛頒簡錛屾劅瑙夋湁涓洓杈瑰艦涓嶇瓑寮忓湪閲岄潰鍙互鐢ㄣ傘傘傝椽蹇冩硶搴旇涔熸槸姝g‘鐨勫晩錛屼笉榪囦竴鐩達擠錛★紝涔熶笉鐭ラ亾鎬庝箞鍥炰簨銆傝濂藉ソ鐮旂┒鐮旂┒鍗曡皟鏍堬紝鍗曡皟闃熷垪浜嗐傘傘傘傚憸鍛滃憸鍖?br />銆銆錛鳳肌浜嗘棤鏁版錛屽崟璋冩爤涓嬈★肌錛o紒
#include<stdio.h>
#include
<string.h>
#include
<math.h>
int n;
long long stack[50005],pos[50005],sum;
long long ans,w,h;
int main()
{
    
int i,top;
    
while (scanf("%d",&n)==1&&n!=-1)
    {
        sum
=0;top=0;ans=0;
        
for (i=1;i<=n ;i++ )
        {
            scanf(
"%I64d%I64d",&w,&h);
            
            
while (top>0&&h<=stack[top])
            {
                
if (ans<(sum-pos[top-1])*stack[top])
                    ans
=(sum-pos[top-1])*stack[top];
                top
--;
            }
            sum
+=w;
            top
++;
            stack[top]
=h;
            pos[top]
=sum;
        }
        
while (top>0)
        {
            
if (ans<(sum-pos[top-1])*stack[top])
                ans
=(sum-pos[top-1])*stack[top];
            top
--;
        }
        printf(
"%I64d\n",ans);
    }
    
return 0;
}

棰濓紝瑕佸鐨勪笢瑗胯繕寰堝鍟娿?br />

wangs 2012-04-24 14:53 鍙戣〃璇勮
]]>
亚洲欧美一级久久精品| 一本一道久久综合狠狠老| 亚洲日本va中文字幕久久| 精品人妻伦一二三区久久| 2021国产精品午夜久久| 久久久无码精品亚洲日韩蜜臀浪潮 | 国内精品人妻无码久久久影院导航 | 色婷婷综合久久久久中文一区二区| 浪潮AV色综合久久天堂| 国内精品久久久久久久久电影网| 久久人人爽人人爽人人片AV高清 | 国产成人精品三上悠亚久久| 一本久久综合亚洲鲁鲁五月天| 久久久久国产成人精品亚洲午夜| 少妇久久久久久被弄高潮| 国产精品成人99久久久久| 亚洲综合久久久| 香蕉久久夜色精品国产小说| 亚洲国产小视频精品久久久三级| 久久婷婷人人澡人人| 久久久中文字幕| 午夜精品久久久久久久久| 久久国产乱子伦免费精品| 久久久国产精品福利免费| 久久99久久无码毛片一区二区| 漂亮人妻被中出中文字幕久久| 蜜臀久久99精品久久久久久小说| 色偷偷888欧美精品久久久| 色偷偷88欧美精品久久久| 成人a毛片久久免费播放| 久久国产精品无| 久久综合九色综合欧美狠狠| 美女久久久久久| 成人资源影音先锋久久资源网| 久久香综合精品久久伊人| 国产成人无码精品久久久免费| 亚洲七七久久精品中文国产| 久久99久久99精品免视看动漫| 亚洲国产精品18久久久久久| 中文字幕一区二区三区久久网站| 亚洲国产成人久久一区久久|