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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[luoguP2801] 教主的魔法(二分 + 分块)

發布時間:2023/11/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [luoguP2801] 教主的魔法(二分 + 分块) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳送門

?

以為對于這類問題線段樹都能解決,分塊比線段樹菜,結果培訓完才知道線段樹是一種特殊的分塊方法,有的分塊的題線段樹不能做,看來分塊還是有必要學的。

對于這個題,先分塊,然后另開一個數組對于每個塊內排序。

區間加的話,加一個標記,每一個整塊區間加,里面的數的相對大小不變,而左右兩邊零散的塊直接暴力重構。

查詢可以對于每個塊二分查找。

時間復雜度應該是 nlogn + Q√nlog√n,剛好卡過。。

?

注意:第10個點會被卡,手寫二分比stl的lower_bound快一點,可以避免被卡。

   也可以在 S = sqrt(n) 后面 + x,x 不要太大也不要太小,不知道為什么,速度也會快點,玄學啊。

%%%有些dalao不知道怎么寫的,1000ms

?

——代碼(最終只能優化到1600ms)

1 #include <cmath> 2 #include <cstdio> 3 #include <iostream> 4 #include <algorithm> 5 #define LL long long 6 7 const int MAXN = 1000001; 8 int n, q, S, C; 9 int belong[MAXN], st[MAXN], ed[MAXN]; 10 LL a[MAXN], b[MAXN], add[MAXN]; 11 12 inline LL read() 13 { 14 LL x = 0, f = 1; 15 char ch = getchar(); 16 for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1; 17 for(; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0'; 18 return x * f; 19 } 20 21 inline int find(int x, int y, int z) 22 { 23 int mid; 24 while(x < y) 25 { 26 mid = (x + y) >> 1; 27 if(b[mid] >= z) y = mid; 28 else x = mid + 1; 29 } 30 return x; 31 } 32 33 inline void retreat(int x, int y) 34 { 35 int i; 36 for(i = x; i <= y; i++) b[i] = a[i]; 37 std::sort(b + x, b + y + 1); 38 } 39 40 inline void init() 41 { 42 int i, j; 43 S = int(sqrt(n)) + 10; 44 for(i = 1; i <= n; i++) scanf("%d", &a[i]); 45 for(i = 1; i <= n; i += S) 46 { 47 st[++C] = i; 48 ed[C] = std::min(i + S - 1, n); 49 } 50 for(i = 1; i <= C; i++) 51 for(j = st[i]; j <= ed[i]; j++) 52 belong[j] = i; 53 for(i = 1; i <= C; i++) retreat(st[i], ed[i]); 54 } 55 56 inline void update(int x, int y, LL z) 57 { 58 int i, l = belong[x], r = belong[y]; 59 if(l == r) 60 { 61 for(i = x; i <= y; i++) a[i] += z; 62 retreat(st[l], ed[r]); 63 } 64 else 65 { 66 for(i = x; i <= ed[l]; i++) a[i] += z; 67 for(i = l + 1; i <= r - 1; i++) add[i] += z; 68 for(i = st[r]; i <= y; i++) a[i] += z; 69 retreat(st[l], ed[l]); 70 retreat(st[r], ed[r]); 71 } 72 } 73 74 inline int query(int x, int y, LL z) 75 { 76 int i, l = belong[x], r = belong[y], ans = 0; 77 if(l == r) return y + 1 - find(x, y + 1, z - add[l]); 78 ans += ed[l] - find(x, ed[l] + 1, z - add[l]) + 1; 79 for(i = l + 1; i <= r - 1; i++) ans += ed[i] - find(st[i], ed[i] + 1, z - add[i]) + 1; 80 ans += y - find(st[r], y + 1, z - add[r]) + 1; 81 return ans; 82 } 83 84 int main() 85 { 86 int i, j, x, y; 87 LL z; 88 char ch; 89 n = read(); 90 q = read(); 91 init(); 92 for(i = 1; i <= q; i++) 93 { 94 while ((ch=getchar()) < 'A' || ch > 'Z'); 95 x = read(); 96 y = read(); 97 z = read(); 98 if(ch == 'M') update(x, y, z); 99 else printf("%d\n", query(x, y, z)); 100 } 101 return 0; 102 } View Code

?

轉載于:https://www.cnblogs.com/zhenghaotian/p/6823527.html

總結

以上是生活随笔為你收集整理的[luoguP2801] 教主的魔法(二分 + 分块)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91视频h | 男人av的天堂 | 色女人在线| 五十路毛片 | 亚洲字幕av一区二区三区四区 | 欧美日韩亚洲国产 | 久草视频精品在线 | 国产中文字幕一区二区三区 | 午夜精品福利视频 | 亚洲国产精品一 | www超碰在线 | 极品尤物魔鬼身材啪啪仙踪林 | 99er在线观看 | a天堂中文 | 熟女俱乐部五十路六十路av | 素人一区| 四虎影视免费永久大全 | 欧美激情亚洲激情 | 波多野结衣中文一区 | 午夜有码| 自拍视频在线观看 | 欧美一级欧美三级 | 免费不卡av | 黄色免费网站视频 | 91亚洲国产成人精品一区 | 人妻一区二区三区视频 | 涩涩国产 | 逼逼爱插插网站 | 午夜精品久久久久久久99热黄桃 | 欧美在线网站 | 国产suv精品一区二区33 | 自拍偷拍精品 | 91超碰在线播放 | 欧美三p | 国产乱码一区二区三区播放 | 亚洲一区电影在线观看 | 亚洲国产97 | 午夜精品极品粉嫩国产尤物 | 日韩在线不卡视频 | 婚后打屁股高h1v1调教 | 免费看日韩av | 精品裸体舞一区二区三区 | 国产在线视频导航 | 亚洲涩网 | 免费色av | 日韩黄色免费网站 | 欧美一区二区三区 | 日韩免费在线观看视频 | 美女脱了内裤喂我喝尿视频 | 亚洲色图28p | 麻豆人妻少妇精品无码专区 | 97久久免费视频 | 伊人久久大香线蕉av一区 | 美女视频黄免费 | 91大尺度 | 亚洲一级av毛片 | 午夜精品久久久久 | 一区在线免费观看 | 亚洲aaaa级特黄毛片 | 日本大尺度电影免费观看全集中文版 | 久久伊人影视 | 熟女人妻视频 | 99精品欧美一区二区三区 | 看污网站 | 久久午夜电影 | 人妻熟女aⅴ一区二区三区汇编 | 欧美性高潮 | 日韩精品一区二区三区在线视频 | 国产男人天堂 | 灌篮高手全国大赛电影 | 亚洲精品成人无码 | 午夜影院免费看 | 精品96久久久久久中文字幕无 | 日本五十熟hd丰满 | 午夜视频在线免费播放 | 在线观看黄色av | 国产一级免费观看 | 天堂在线视频tv | 成人av视屏| 天天超碰| 久久黄色小说 | 8x8x永久免费视频 | 韩国美女主播跳舞 | 男人天堂中文字幕 | 国产激情在线观看 | 久草福利在线视频 | 久久精品欧美 | 在线资源av| 一区在线观看视频 | 亚洲影视网 | 欧美高清视频一区二区三区 | www插插| 农村妇女av | 黄色国产| 波多野结衣办公室双飞 | 欧美亚洲中文精品字幕 | 波多野结衣一二区 | 国产精品成人无码专区 | 国产视频一区二区视频 |