日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tunnel Warfare(HDU1540+线段树+区间合并)

發布時間:2024/8/26 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tunnel Warfare(HDU1540+线段树+区间合并) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1540

題目:

題意:總共有n個村莊,有q次操作,每次操作分為摧毀一座村莊,修復一座村莊,和查詢與詢問的村莊相連接的城市數量。

思路:線段樹+區間合并。

代碼實現如下:

1 #include <set> 2 #include <map> 3 #include <queue> 4 #include <stack> 5 #include <cmath> 6 #include <bitset> 7 #include <cstdio> 8 #include <string> 9 #include <vector> 10 #include <cstdlib> 11 #include <cstring> 12 #include <iostream> 13 #include <algorithm> 14 using namespace std; 15 16 typedef long long ll; 17 typedef unsigned long long ull; 18 19 #define lson i<<1,l,mid 20 #define rson i<<1|1,mid+1,r 21 #define bug printf("*********\n"); 22 #define FIN freopen("D://code//in.txt", "r", stdin); 23 #define debug(x) cout<<"["<<x<<"]" <<endl; 24 #define IO ios::sync_with_stdio(false),cin.tie(0); 25 26 const double eps = 1e-8; 27 const int mod = 1e8; 28 const int maxn = 5e4 + 7; 29 const double pi = acos(-1); 30 const int inf = 0x3f3f3f3f; 31 const ll INF = 0x3f3f3f3f3f3f3f3f; 32 33 inline int read() {//讀入掛 34 int ret = 0, c, f = 1; 35 for(c = getchar(); !(isdigit(c) || c == '-'); c = getchar()); 36 if(c == '-') f = -1, c = getchar(); 37 for(; isdigit(c); c = getchar()) ret = ret * 10 + c - '0'; 38 if(f < 0) ret = -ret; 39 return ret; 40 } 41 42 int n, q, x, t; 43 char op[5]; 44 int tack[maxn]; 45 46 struct node { 47 int l, r, mx, ls, rs; //ls為左端最大連續區間,rs為右端最大連續區間,mx為區間內最大連續區間 48 }segtree[maxn*4]; 49 50 void build(int i, int l, int r) { 51 segtree[i].l = l, segtree[i].r = r; 52 segtree[i].mx = segtree[i].ls = segtree[i].rs = r - l + 1; 53 if(l == r) return; 54 int mid = (l + r) >> 1; 55 build(lson); 56 build(rson); 57 } 58 59 void update(int i, int pos, int x) { 60 if(segtree[i].l == segtree[i].r) { 61 if(x == 1) segtree[i].mx = segtree[i].ls = segtree[i].rs = 1; //此處為修復操作 62 else segtree[i].mx = segtree[i].ls = segtree[i].rs = 0; //摧毀操作 63 return; 64 } 65 int mid = (segtree[i].l + segtree[i].r) >> 1; 66 if(pos <= mid) { 67 update(i * 2, pos, x); 68 } else { 69 update(i * 2 + 1, pos, x); 70 } 71 segtree[i].ls = segtree[i*2].ls; 72 segtree[i].rs = segtree[i*2+1].rs; 73 segtree[i].mx = max(max(segtree[i*2].mx, segtree[i*2+1].mx), segtree[2*i].rs + segtree[i*2+1].ls); 74 if(segtree[i*2].ls == segtree[i*2].r - segtree[i*2].l + 1) { //如果左端全是連接的,那么ls還要右子樹的ls 75 segtree[i].ls += segtree[i*2+1].ls; 76 } 77 if(segtree[i*2+1].rs == segtree[i*2+1].r - segtree[i*2+1].l + 1) { //同理 78 segtree[i].rs += segtree[i*2].rs; 79 } 80 } 81 82 int query(int i, int pos) { 83 if(segtree[i].l == segtree[i].r || segtree[i].mx == segtree[i].r - segtree[i].l + 1 || segtree[i].mx == 0) { 84 return segtree[i].mx; 85 } 86 int mid = (segtree[i].l + segtree[i].r) >> 1; 87 if(pos <= mid) { 88 if(pos >= segtree[2*i].r - segtree[i*2].rs + 1) { //如果pos與右邊連接,那么還需要跑另一棵子樹 89 return query(i * 2, pos) + query(i * 2 + 1, mid + 1); 90 } else { 91 return query(i * 2, pos); 92 } 93 } else { 94 if(pos <= segtree[i * 2 + 1].l + segtree[i*2+1].ls - 1) { //同理 95 return query(i * 2 + 1, pos) + query(i * 2, mid); 96 } else { 97 return query(i * 2 + 1, pos); 98 } 99 } 100 } 101 102 int main() { 103 //FIN; 104 while(~scanf("%d%d", &n, &q)) { 105 build(1, 1, n); 106 t = 0; 107 while(q--) { 108 scanf("%s", op); 109 if(op[0] == 'D') { 110 scanf("%d", &x); 111 tack[++t] = x; 112 update(1, x, 2); 113 } else if(op[0] == 'R') { 114 if(t > 0) { 115 x = tack[t--]; 116 update(1, x, 1); 117 } 118 } else { 119 scanf("%d", &x); 120 printf("%d\n", query(1, x)); 121 } 122 } 123 } 124 return 0; 125 }

?

轉載于:https://www.cnblogs.com/Dillonh/p/9366584.html

總結

以上是生活随笔為你收集整理的Tunnel Warfare(HDU1540+线段树+区间合并)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: a级免费毛片 | 久久综合福利 | 精品久久久久久久免费人妻 | 亚洲少妇精品 | 日本一级黄 | 亚洲天堂伊人 | 国产精品久久久久久久久动漫 | 精品国产aⅴ一区二区三区四川人 | 亚洲欧美综合网 | 处破痛哭a√18成年片免费 | 欧美成人小视频 | 午夜国产免费 | 亚洲天堂91 | 成人免费一级视频 | 日日日插插插 | 下面一进一出好爽视频 | xxxxwwww国产| 男人影院在线观看 | 五月激情六月丁香 | 国产精品久久久久久亚洲调教 | 岛国av免费在线观看 | 久久av一区二区三区 | 色妞综合网 | 亚洲一区二区天堂 | 在线欧美色 | 欧美 日韩 国产 亚洲 色 | 国产人成一区二区三区影院 | 在线蜜桃| 97久久久久久久久久 | 五月婷婷综合激情 | 欧洲成人一区二区三区 | 日本黄色免费观看 | 亚洲欧洲精品一区二区三区 | 在线不卡的av | 国产精品v日韩精品v在线观看 | 怡红院一区 | 天堂аⅴ在线最新版在线 | 精品无码一区二区三区的天堂 | 午夜av一区二区三区 | 国产剧情一区二区三区 | 香蕉视频在线观看黄 | 欧美激情欧美激情在线五月 | 国产精品免费av | 国产精品操 | www.黄在线观看 | 欧美成人吸奶水做爰 | 自拍偷自拍亚洲精品播放 | 一区二区不卡在线观看 | 夜夜欢视频 | 美腿丝袜亚洲色图 | 日韩无码专区 | 五月天开心网 | 性欧美丰满熟妇xxxx性仙踪林 | 伊人久久久久久久久 | 我的公把我弄高潮了视频 | 全部免费毛片在线播放一个 | 国产 日韩 欧美 综合 | 一级激情视频 | 日本特黄一级片 | 黄色av免费播放 | 午夜精品久久久久久久四虎美女版 | 99国产精品无码 | 国产午夜精品久久久久 | 国产91精品一区二区 | 久久精品国产99国产 | 欧美精品免费播放 | 亚洲天堂av一区二区 | 黄色片网站视频 | 性生生活大片又黄又 | 欧美毛片在线观看 | 爱爱福利社 | 久久久www| 天天综合网站 | 亚洲中文字幕一区二区在线观看 | 污视频网址在线观看 | 91一区二区在线观看 | 久久黄色av | 天天做天天射 | 成年人免费在线观看视频网站 | 国产精品麻豆一区二区三区 | 天天干,夜夜爽 | 每日更新av | 欧美日韩色视频 | 欧美一级高潮片 | 欧美婷婷六月丁香综合色 | 亚洲色图20p| 日本女优一区 | 凹凸精品一区二区三区 | 国产一级免费av | 秘密基地动漫在线观看免费 | 中文字幕免费视频观看 | 亚洲网站在线播放 | 精品伦精品一区二区三区视频密桃 | 青青操国产 | www欧美 | 99久久久无码国产精品免费蜜柚 | 最新中文在线视频 | 天堂av亚洲av国产av电影 | 亚洲国产欧美在线观看 |