青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

MiYu原創(chuàng), 轉(zhuǎn)帖請(qǐng)注明 : 轉(zhuǎn)載自 ______________白白の屋    

 

題目地址:

http://acm.hdu.edu.cn/showproblem.php?pid=1540

題目描述:

Tunnel Warfare

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1009    Accepted Submission(s): 334


Problem Description
During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast areas of north China Plain. Generally speaking, villages connected by tunnels lay in a line. Except the two at the ends, every village was directly connected with two neighboring ones.

Frequently the invaders launched attack on some of the villages and destroyed the parts of tunnels in them. The Eighth Route Army commanders requested the latest connection state of the tunnels and villages. If some villages are severely isolated, restoration of connection must be done immediately!
 

Input
The first line of the input contains two positive integers n and m (n, m ≤ 50,000) indicating the number of villages and events. Each of the next m lines describes an event.

There are three different events described in different format shown below:

D x: The x-th village was destroyed.

Q x: The Army commands requested the number of villages that x-th village was directly or indirectly connected with including itself.

R: The village destroyed last was rebuilt.
 

Output
Output the answer to each of the Army commanders’ request in order on a separate line.
 

Sample Input
7 9 D 3 D 6 D 5 Q 4 Q 5 R Q 4 R Q 4
 

Sample Output
1 0 2 4
 

 題目分析:

題目有三種操作 :

D:  摧毀村莊

Q: 查詢相連的村莊

R: 修復(fù)上次被摧毀的村莊

這個(gè)題目的關(guān)鍵部分就是 對(duì)線段的修改部分, 也是最難的部分, 這部分理解了, 這個(gè)題目就基本會(huì)了.

  在結(jié)構(gòu)體里面, 需要保存 3個(gè)量, lVal : 從線段左端點(diǎn)能夠向右延伸的最大長(zhǎng)度,

     rVal:從線段右端點(diǎn)能夠向左延伸的最大長(zhǎng)度,

    mVal:當(dāng)前線段的最大連續(xù)長(zhǎng)度

         seg[rt].mVal = max ( seg[LL].rVal + seg[RR].lVal, max ( seg[LL].mVal, seg[RR].mVal ) ); //當(dāng)前節(jié)點(diǎn)的最大連續(xù)長(zhǎng)度 

         seg[rt].lVal = seg[LL].lVal + ( seg[LL].cov() ? seg[RR].lVal : 0 );   //當(dāng)前節(jié)點(diǎn)的左端點(diǎn)能夠向右延伸的最大長(zhǎng)度 

         seg[rt].rVal = seg[RR].rVal + ( seg[RR].cov() ? seg[LL].rVal : 0 );   //當(dāng)前節(jié)點(diǎn)的右端點(diǎn)能夠向左延伸的最大長(zhǎng)度  

查詢的時(shí)候也要注意幾種 情況 :  1 :  就是當(dāng)前整個(gè)線段

      2 :  橫跨 左右子樹(shù)

      3 :  只在 左 或 右 子樹(shù)

詳細(xì)請(qǐng)看代碼注釋. 

代碼如下 : 

代碼
/*
Mail to   : miyubai@gamil.com
Link      : http://www.cnblogs.com/MiYu  || http://www.shnenglu.com/MiYu
Author By : MiYu
Test      : 1
Complier  : g++ mingw32-3.4.2
Program   : 1540
Doc Name  : Tunnel Warfare
*/
//#pragma warning( disable:4789 )
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <utility>
#include <queue>
#include <stack>
#include <list>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
using namespace std;
inline int max ( int &a, int &b ) {
       
return a > b ? a : b;       
}
struct segTree {
       
int left, right, lVal, rVal, mVal; //lVal: 從線段左端點(diǎn)能夠向右延伸的最大長(zhǎng)度
                                          
//rVal: 從線段右端點(diǎn)能夠向左延伸的最大長(zhǎng)度 
                                          
//mVal: 當(dāng)前線段的最大連續(xù)長(zhǎng)度 
       int mid () { return (left + right)>>1;}  
       
int dis () { return right-left+1; }  // 線段的長(zhǎng)度 
       void prs (int flag) { lVal = rVal = mVal = flag ? 0 : dis(); }   //按flag標(biāo)記處理線段 
       bool cov () { return mVal == dis(); }   // 當(dāng)前線段是否被覆蓋 , 即 這條線段上的點(diǎn)沒(méi)有任何一點(diǎn)被破壞 
}seg[160000];
inline void creat ( int left, int right, int rt = 1 ) {
     
int LL = rt << 1, RR = rt << 1 | 1
     seg[rt].left = left;
     seg[rt].right = right;
     seg[rt].prs (0);
     
if ( left == right ) return
     
int mid = seg[rt].mid();      
     creat ( left, mid, LL );
     creat ( mid + 1, right, RR );     
}
inline void modify ( int pos, int flag, int rt = 1 ) {
     
int LL = rt << 1, RR = rt << 1 | 1
     
if ( seg[rt].left == seg[rt].right ) {
          seg[rt].prs ( flag ); return;      
     } 
     
int mid = seg[rt].mid();
     
if ( pos <= mid ) modify ( pos, flag, LL );
     
else modify ( pos, flag, RR );
     
// 經(jīng)典部分: 
     seg[rt].mVal = max ( seg[LL].rVal + seg[RR].lVal, max ( seg[LL].mVal, seg[RR].mVal ) ); //當(dāng)前節(jié)點(diǎn)的最大連續(xù)長(zhǎng)度 
     seg[rt].lVal = seg[LL].lVal + ( seg[LL].cov() ? seg[RR].lVal : 0 );   //當(dāng)前節(jié)點(diǎn)的左端點(diǎn)能夠向右延伸的最大長(zhǎng)度 
     seg[rt].rVal = seg[RR].rVal + ( seg[RR].cov() ? seg[LL].rVal : 0 );   //當(dāng)前節(jié)點(diǎn)的右端點(diǎn)能夠向左延伸的最大長(zhǎng)度 
}
inline int query ( int pos, int rt = 1 ) {
    
if ( seg[rt].cov() || seg[rt].mVal == 0 || seg[rt].left == seg[rt].right )
        
return seg[rt].mVal;
    
int LL = rt << 1, RR = rt << 1 | 1, mid = seg[rt].mid();        
    
if ( pos <= mid ) {
         
if ( pos > mid - seg[LL].rVal )  // 查詢節(jié)點(diǎn)在左孩子節(jié)點(diǎn)所處的位置 
             return seg[LL].rVal + query ( mid+1, RR ); // 如果在線段的右端, 則還需要查詢右孩子節(jié)點(diǎn)的左端 
         else return query ( pos, LL );    //左端只需查詢左端 
    } else {
         
if ( pos <= mid + seg[RR].lVal )  // 同上 
             return seg[RR].lVal + query ( mid, LL );
         
else return query ( pos, RR );   
    }

inline int _getint(int &n){  //輸入加速 
 char c;for(c=getchar();!isdigit(c);c=getchar());for(;isdigit(c);c=getchar())n=n*10+c-'0';return n;
}
deque <int> st; // stack 沒(méi)有clear() 杯具了 
int main ()
{
    
int N, M;
    
char ask[3];
    
while ( scanf ( "%d%d"&N, &M ) == 2 ) {
           creat ( 1, N );
           st.clear();
           
while ( M -- ) {
                  scanf ( "%s",ask ); N = 0;
                  
switch ( ask[0] ) {
                         
case 'D':   _getint (N);
                                     modify ( N, 1 );
                                     st.push_back ( N );
                                     
break;
                         
case 'Q':   _getint (N);          
                                     printf ( "%d\n",query ( N ) );        
                                     
break;
                         
case 'R':   if ( st.empty() ) break;
                                     modify ( st.back(), 0 );
                                     st.pop_back();
                  }
           }
    }
    
return 0;
}

 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩亚洲另类| 亚洲国产精品久久| 亚洲国产二区| 一本色道久久88精品综合| 午夜精品福利一区二区蜜股av| 久久精品一区二区三区四区 | 99精品视频免费观看视频| 亚洲天堂av在线免费| 久久女同互慰一区二区三区| 亚洲国产成人在线视频| 在线一区二区日韩| 久久精品国产一区二区三区免费看| 欧美激情网友自拍| 国产精品亚洲综合色区韩国| 亚洲黄色一区| 欧美在线观看日本一区| 亚洲国产成人不卡| 篠田优中文在线播放第一区| 欧美成人a∨高清免费观看| 国产农村妇女毛片精品久久麻豆 | 欧美高清不卡| 亚洲综合社区| 欧美人在线观看| 在线欧美一区| 欧美影院精品一区| 日韩亚洲国产精品| 久久成人一区| 日韩系列在线| 你懂的成人av| 国产在线播精品第三| 亚洲在线不卡| 亚洲国产91精品在线观看| 欧美一区二区三区四区在线观看| 欧美久久精品午夜青青大伊人| 伊人夜夜躁av伊人久久| 亚洲欧美网站| 99这里只有久久精品视频| 噜噜噜噜噜久久久久久91| 国产午夜一区二区三区| 亚洲综合色婷婷| 亚洲免费av网站| 欧美成人亚洲| 亚洲福利电影| 久久深夜福利免费观看| 亚洲欧美激情四射在线日| 欧美日韩视频不卡| 亚洲精品久久久久久久久| 免费成人高清在线视频| 午夜精品视频在线| 欧美私人网站| 宅男噜噜噜66一区二区66| 亚洲第一视频| 久久一区二区三区av| 韩国一区电影| 久久亚洲风情| 久久xxxx| 国内精品久久久久伊人av| 久久国产精品一区二区三区| 中文亚洲字幕| 国产精品美女久久久久久免费| 中国女人久久久| 亚洲免费电影在线观看| 欧美女同视频| 久久综合久色欧美综合狠狠| 国产专区综合网| 久久久精品国产99久久精品芒果| 亚洲免费影视| 国产欧美短视频| 久久国产精品一区二区三区四区| 香蕉免费一区二区三区在线观看| 国产精品入口日韩视频大尺度| 亚洲综合首页| 亚洲欧美日韩在线观看a三区| 国产精品一级| 久久久久久久波多野高潮日日| 亚洲欧美日本国产专区一区| 国产毛片一区| 久久久久久成人| 久热精品视频在线免费观看| 亚洲国产精品第一区二区三区 | 亚洲精品一品区二品区三品区| 欧美啪啪成人vr| 亚洲午夜精品久久久久久浪潮| 亚洲私人黄色宅男| 国产欧美综合一区二区三区| 久久午夜电影网| 麻豆av一区二区三区| 亚洲精品你懂的| 一区二区三区导航| 国产婷婷色一区二区三区在线| 久久综合导航| 欧美激情精品久久久久久| 亚洲一级一区| 先锋影音一区二区三区| 在线观看日韩欧美| 亚洲国产中文字幕在线观看| 欧美三日本三级少妇三2023 | 尤物yw午夜国产精品视频明星| 欧美aa国产视频| 欧美日韩成人| 久久gogo国模裸体人体| 久久高清国产| 日韩西西人体444www| 亚洲免费视频成人| 亚洲黄色天堂| 亚洲神马久久| 一区二区三区在线看| 亚洲看片一区| 国产一区二区三区在线免费观看 | 99视频有精品| 国产午夜精品在线| 亚洲国产欧美久久| 国产精品午夜在线观看| 欧美高清你懂得| 国产精品一区二区视频| 欧美二区不卡| 国产精品伦子伦免费视频| 欧美成人视屏| 国产精品视频网址| 91久久国产综合久久91精品网站| 国产精品普通话对白| 亚洲国产成人av好男人在线观看| 国产精品久久久久久影院8一贰佰| 欧美a一区二区| 国产精品日韩欧美大师| 亚洲高清在线播放| 国产亚洲精久久久久久| 亚洲乱码国产乱码精品精可以看| 国产日韩亚洲欧美| 亚洲三级色网| 激情六月婷婷久久| 亚洲午夜女主播在线直播| 久久免费午夜影院| 午夜精品久久久久久久99樱桃 | 中文日韩欧美| 久久亚洲国产精品一区二区| 午夜精品一区二区三区在线视| 欧美护士18xxxxhd| 久久综合九色综合欧美就去吻| 国产精品黄色| 亚洲人久久久| 亚洲第一久久影院| 久久爱www.| 小辣椒精品导航| 欧美日韩在线三区| 91久久国产综合久久| 136国产福利精品导航| 欧美一区二区视频在线观看2020 | 国产伦精品一区二区三区高清版 | 亚洲天堂成人| 一区二区电影免费在线观看| 久久亚洲美女| 久久精品国产清高在天天线| 欧美系列一区| 亚洲欧洲综合另类| 亚洲国产精品久久人人爱蜜臀 | 亚洲国产欧美在线| 亚洲电影欧美电影有声小说| 欧美一二三区在线观看| 香港久久久电影| 欧美视频一区| 亚洲毛片视频| 99日韩精品| 欧美精品18videos性欧美| 欧美大片免费观看| 亚洲福利电影| 美女主播一区| 欧美国产精品日韩| 亚洲成人在线网| 久久综合给合| 欧美寡妇偷汉性猛交| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲黄色免费电影| 欧美a级片网| 欧美国产先锋| 最新日韩中文字幕| 欧美激情视频在线免费观看 欧美视频免费一| 猛干欧美女孩| 亚洲国产片色| 欧美电影打屁股sp| 亚洲精品黄色| 亚洲图片欧美日产| 欧美丝袜第一区| 亚洲在线成人精品| 久久福利电影| 一区二区在线视频播放| 久久婷婷人人澡人人喊人人爽| 模特精品裸拍一区| 亚洲黄色片网站| 欧美男人的天堂| 亚洲精品久久| 欧美手机在线视频| 亚洲欧美大片| 久久一综合视频| 亚洲福利在线观看| 欧美日本视频在线| 亚洲一区二区三区精品动漫| 久久国产黑丝| 亚洲高清三级视频| 欧美日韩亚洲一区在线观看|